<jupyter_start><jupyter_text>TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners（その2）http://enakai00.hatenablog.com/entry/2016/02/14/175505<jupyter_code>%matplotlib inline
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from numpy.random import rand, multivariate_normal
# Create the model
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)<jupyter_output><empty_output><jupyter_text>x がトレーニングセットのデータを注入する placeholder です。784個の要素を持つベクトルがN個あるとして、(Nx784)行列になります。実際には N は不定なので、None が指定されています。  W は係数 wijwij の行列で、(784x10)行列です。b は定数項 bjbj で、(1x10)行列です。10は出力層の数（0～9の数字）  最後に y が、組み込みの softmax() 関数で784個の入力を0～9に分類してくれる（下記を目的関数として、w,bのパラメータ最適化を実施する）続いて、(2)のクロスエントロピーの定義です。<jupyter_code># Define loss and optimizer
y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)<jupyter_output><empty_output><jupyter_text>y_ は、トレーニングセットのラベル tt を縦に積み上げた (Nx10)行列で、cross_entropy がそのまま(2)の符号違いに対応していることが分かります。tf.log()は行列を代入すると各成分にlog()が演算されて、行列と行列の掛け算(*)は、各成分の掛け算になります。reduce_sum()は、行列のすべての要素を足しあげる関数ですtrain_stepは、cross_entropyを最小化するように変数を調整するアルゴリズムの指定です。アルゴリズムの実行は下記の部分です。<jupyter_code># Train
tf.initialize_all_variables().run()
for i in range(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  train_step.run({x: batch_xs, y_: batch_ys})<jupyter_output>WARNING:tensorflow:From <ipython-input-5-e8767935c26b>:2: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Use `tf.global_variables_initializer` instead.
{'fraction_non_alphanumeric': 0.12023121387283237, 'fraction_numerical': 0.051445086705202314, 'mean_word_length': 9.12280701754386, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '491911', 'license': 'MIT', 'n_tokens_mistral': 969, 'n_tokens_neox': 890, 'n_words': 108, 'path': '000_lib/haikei_2.ipynb', 'repo_name': 'myao9494/tanukichi_env', 'size': '1730'}