TensorFlowの学習周りのコマンドについて確認
CNNなどのconvolution層やpooling層は詳細な説明がたくさんあります。モデル記述後、損失関数や学習あたりのfunctionをよく把握していないので、その辺りを確認したいと思います。
特に、
- tf.nn.softmax_cross_entropy_with_logits()
- tf.reduce_mean()
- tf.train.AdamOptimizer().minimize()
を確認したいと思います。おおよそ書き尽くされてるので、備忘録用です。
バージョンは Python:3.5.3 tensorflow==1.0.1
です。
tf.nn.softmax_cross_entropy_with_logits()
公式にある通り、基本的に推計結果のsoftmax値を計算して、cross entropyを計算します。
主に使う引数
- logits:最終的な推計値。softmaxはする必要ない
- labels:教師データ
実装されている式は理解できず。
tf.reduce_mean()
平均値を出します。上のtf.nn.softmax_cross_entropy_with_logits()に3Dの場合、戻り値が複数になるので、その平均値を取りたいときに使います。
logits2 = np.array([[0.4,0.3,0.1] , [0.2, 0.2, 0.8]])
labels2 = np.array([ [1, 0, 0], [0, 0, 1]])
cewl2 = tf.nn.softmax_cross_entropy_with_logits(labels=labels2, logits=logits2)
means = tf.reduce_mean(cewl2)
print(sess.run([means, cewl2]))
結果は、[0.85686192088267488, array([ 0.97291891, 0.74080493])]
になります。
tf.train.AdamOptimizer().minimize()
学習用ですね。tf.train.GradientDescentOptimizer().minimize()
との違いは、これから確認します。
内容を確認できるのは、tf.reduce_mean()
だけですね。他の関数は高機能です。Tensor Flowは便利です。