質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.54%

  • Python

    7891questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • TensorFlow

    665questions

tensorflowで学習させようとしたときにエラー

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 244

ths

score 10

tensorflowでラーメンとうどんの画像を学習して判別させるプログラムを作成したのですが、学習途中にエラーが出ます。
フォルダ構成は、

/data
   /test
      /ramen
         ramen_0.png ~ ramen_49.png
      /udon
         udon_0.png ~ udon_49.png
      data.txt
   /train
      /ramen
         ramen_0.png ~ ramen_49.png
      /udon
         udon_0.png ~ udon_49.png
      data.txt
main.py(学習モデル作成ファイル)

エラー内容

(tensorflow) C:\Users\k2450101>cd C:\Users\k2450101\Dropbox\workspace\G5 Graduate Study\test\images

(tensorflow) C:\Users\k2450101\Dropbox\workspace\G5 Graduate Study\test\images>python main.pyWARNING:tensorflow:From C:\Users\k2450101\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\util\tf_should_use.py:118: 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.
step 0, training accuracy 0.5
Traceback (most recent call last):
  File "C:\Users\k2450101\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 282, in __init__
    fetch, allow_tensor=True, allow_operation=True))
  File "C:\Users\k2450101\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\framework\ops.py", line 3478, in as_graph_element
    return self._as_graph_element_locked(obj, allow_tensor, allow_operation)
  File "C:\Users\k2450101\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\framework\ops.py", line 3567, in _as_graph_element_locked
    types_str))
TypeError: Can not convert a FileWriter into a Tensor or Operation.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 248, in <module>
    keep_prob: 1.0})
  File "C:\Users\k2450101\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 905, in run
    run_metadata_ptr)
  File "C:\Users\k2450101\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1125, in _run
    self._graph, fetches, feed_dict_tensor, feed_handles=feed_handles)
  File "C:\Users\k2450101\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 427, in __init__
    self._fetch_mapper = _FetchMapper.for_fetch(fetches)
  File "C:\Users\k2450101\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 253, in for_fetch
    return _ElementFetchMapper(fetches, contraction_fn)
  File "C:\Users\k2450101\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 286, in __init__
    (fetch, type(fetch), str(e)))
TypeError: Fetch argument <tensorflow.python.summary.writer.writer.FileWriter object at 0x000002336F6429B0> has invalid type <class 'tensorflow.python.summary.writer.writer.FileWriter'>, must be a string or Tensor. (Can not convert a FileWriter into a Tensor or Operation.)

FileWriterはstringやTensorでなければいけないと書いてあるみたいなんですが、stackoverflowで調べても意味が分かりません。
ソースコード全文掲載したいのですが、文字数制限で載せられないので、エラーの原因と思われる個所のみ掲載します。
ヒントだけでもいただけると幸いです。

main.py(一部)

#TensorBoardのグラフに出力するスコープを指定
  with tf.Graph().as_default():
    # 画像を入れるためのTensor(28*28*3(IMAGE_PIXELS)次元の画像が任意の枚数(None)分はいる)
    images_placeholder = tf.placeholder("float", shape=(None, IMAGE_PIXELS))
    # ラベルを入れるためのTensor(3(NUM_CLASSES)次元のラベルが任意の枚数(None)分入る)
    labels_placeholder = tf.placeholder("float", shape=(None, NUM_CLASSES))
    # dropout率を入れる仮のTensor
    keep_prob = tf.placeholder("float")

    # inference()を呼び出してモデルを作る
    logits = inference(images_placeholder, keep_prob)
    # loss()を呼び出して損失を計算
    loss_value = loss(logits, labels_placeholder)
    # training()を呼び出して訓練して学習モデルのパラメーターを調整する
    train_op = training(loss_value, FLAGS.learning_rate)
    # 精度の計算
    acc = accuracy(logits, labels_placeholder)

    # 保存の準備
    saver = tf.train.Saver()
    # Sessionの作成(TensorFlowの計算は絶対Sessionの中でやらなきゃだめ)
    sess = tf.Session()
    # 変数の初期化(Sessionを開始したらまず初期化)
    sess.run(tf.initialize_all_variables())
    # TensorBoard表示の設定(TensorBoardの宣言的な?)
    summary_op = tf.summary.FileWriter(FLAGS.train_dir, graph=sess.graph)
    # train_dirでTensorBoardログを出力するpathを指定
    # summary_writer = tf.train.SummaryWriter(FLAGS.train_dir, sess.graph_def)

    # 実際にmax_stepの回数だけ訓練の実行していく
    for step in range(FLAGS.max_steps):
      for i in range(int(len(train_image)/FLAGS.batch_size)):
        # batch_size分の画像に対して訓練の実行
        batch = FLAGS.batch_size*i
        # feed_dictでplaceholderに入れるデータを指定する
        sess.run(train_op, feed_dict={
          images_placeholder: train_image[batch:batch+FLAGS.batch_size],
          labels_placeholder: train_label[batch:batch+FLAGS.batch_size],
          keep_prob: 0.5})

      # 1step終わるたびに精度を計算する
      train_accuracy = sess.run(acc, feed_dict={
        images_placeholder: train_image,
        labels_placeholder: train_label,
        keep_prob: 1.0})
      print ("step %d, training accuracy %g"%(step, train_accuracy))

      # 1step終わるたびにTensorBoardに表示する値を追加する
      summary_str = sess.run(summary_op, feed_dict={
        images_placeholder: train_image,
        labels_placeholder: train_label,
        keep_prob: 1.0})
      summary_op.add_summary(summary_str, step)

  # 訓練が終了したらテストデータに対する精度を表示する
  print ("test accuracy %g"%sess.run(acc, feed_dict={
    images_placeholder: test_image,
    labels_placeholder: test_label,
    keep_prob: 1.0})
  )

  # データを学習して最終的に出来上がったモデルを保存
  # "model.ckpt"は出力されるファイル名
  save_path = saver.save(sess, "model.ckpt")
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

https://qiita.com/FukuharaYohei/items/7ea120005f73cf882146

https://endoyuta.com/2017/01/19/tensorflow-tensorboard/

FileWriterをsses.runに入れるのは正しくない使い方ではないでしょうか。

summary_str = sess.run(summary_op, feed_dict={...

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/16 19:05

    ありがとうございます、治りました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.54%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    7891questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • TensorFlow

    665questions