So-net無料ブログ作成

TensorFlow Deep MNIST for Experts をやってみた(2) [Deep Learning]

TensorFlow Deep MNIST for Experts のコードを動かしてみるもハングしてしまった件、問題となるコードの場所は分かりました。

def main(_):
 ... snip ...
  with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for i in range(1000):             #### Change step from 20000 to 1000  ####
      batch = mnist.train.next_batch(50)
      if i % 100 == 0:
        train_accuracy = accuracy.eval(feed_dict={
            x: batch[0], y_: batch[1], keep_prob: 1.0})
        print('step %d, training accuracy %g' % (i, train_accuracy))
      train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})

    ### ここで問題発生! ####
    print('test accuracy %g' % accuracy.eval(feed_dict={
        x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))  


学習ステップを1000回にしてもハングしますので、ここの処理に問題がありそうです。accuracy というオブジェクトの定義を探してみたらありました。

  with tf.name_scope('accuracy'):
    correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_, 1)) 
    correct_prediction = tf.cast(correct_prediction, tf.float32)
  accuracy = tf.reduce_mean(correct_prediction)



argmax はそのレイヤーでの最大値のインデックスを返す関数だったはず。ということは、y_convの値と 教師データの y_ のインデックス一致しているか見ているようです。

y_conv はどうやって生成されているかというと、deepnn すなわち定義されたディープニューラルネットワークの出力です。

  # Create the model
  x = tf.placeholder(tf.float32, [None, 784])

  # Define loss and optimizer
  y_ = tf.placeholder(tf.float32, [None, 10])

  # Build the graph for the deep net
  y_conv, keep_prob = deepnn(x)



ここの一連の処理の分かりやすい解説がありました。

argmax.png

MNIST には、教師データとテストデータがあります。教師データは Deep Learning をしているときに使うデータ。テストデータは、Deep Learning の結果を検証するためのデータです。

ハングアップしているコードを再確認します。

    ### ここで問題発生! ####
    print('test accuracy %g' % accuracy.eval(feed_dict={
        x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))  


feed_dict は、placeholder という変数に与えるデータを置き換えるしくみです。すなわち x を mnist_test_images に、y_ を minst_test_labels に、keep_prob は 1.0 にして deepnn に突っ込んでいます。feed_dect の詳細はこちらのサイトが分かりやすかったです。


たった一行のコードですが、ここは精度を計算するために、MNIST のテストデータを deepnn に入力し y_conv を生成し、教師データと照合する処理をしています。

ということは、このテストデータの認識処理でハングしているみたいですね。うーん、明らかにPCのスペック不足ですねぇ。これは困りました。
(´・ω・`)





初めてのTensorFlow 数式なしのディープラーニング

初めてのTensorFlow 数式なしのディープラーニング

  • 作者: 足立 悠
  • 出版社/メーカー: リックテレコム
  • 発売日: 2017/10/27
  • メディア: 単行本(ソフトカバー)



TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing)

TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing)

  • 出版社/メーカー: インプレスR&D
  • 発売日: 2016/07/29
  • メディア: Kindle版



ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

  • 作者: 斎藤 康毅
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)




nice!(31)  コメント(2) 
共通テーマ:趣味・カルチャー

nice! 31

コメント 2

ワンモア

前記事のコメントのリンク記事、参考になりました。
とはいえ、私にはまだ使う機会がないのですが(;^ω^)
戦没者の供養塔、慰霊碑はどこの市町村にもありますよね。
できる限り訪れるようにしています。
by ワンモア (2017-10-09 09:35) 

ys_oota

はい、何かのお役にたてば幸いです。戦争の実態を直接伝えられる私たちの親の世代も次第にいなくなってきているので、できるだけ記録を残しておくことは大事だなーと思います。
by ys_oota (2017-10-10 00:25) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。