AttributeError: module 'tensorflow.python.training.training' has no attribute 'SummaryWriter'
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 3,278

退会済みユーザー
AttributeError: module 'tensorflow.python.training.training' has no attribute 'SummaryWriter' のエラーが出ました。
# coding: UTF-8
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import os
import time
import tensorflow as tf
import model as model
import numpy as np
from reader import Cifar10Reader
FLAGS = tf.app.flags.FLAGS
tf.app.flags.DEFINE_integer('epoch', 30, "訓練するEpoch数")
tf.app.flags.DEFINE_string('data_dir', './cifar-10-batches-bin 2/', "訓練データのディレクトリ")
tf.app.flags.DEFINE_string('checkpoint_dir', './checkpoints/',
"チェックポイントを保存するディレクトリ")
tf.app.flags.DEFINE_string('test_data', None, "テストデータのパス")
def _loss(logits, label):
labels = tf.cast(label, tf.int64)
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(
logits=logits, labels=labels,name='cross_entropy_per_example')
cross_entropy_mean = tf.reduce_mean(cross_entropy, name='cross_entropy')
return cross_entropy_mean
def _train(total_loss, global_step):
opt = tf.train.GradientDescentOptimizer(learning_rate=0.001)
grads = opt.compute_gradients(total_loss)
train_op = opt.apply_gradients(grads, global_step=global_step)
return train_op
filenames = [
os.path.join(
FLAGS.data_dir, 'data_batch_%d.bin' % i) for i in range(1, 6)
]
def main(argv=None):
global_step = tf.Variable(0,trainable=False)
train_placeholder = tf.placeholder(tf.float32,
shape=[32, 32, 3],
name='input_image')
label_placeholder = tf.placeholder(tf.int32,shape=[1],name='label')
# (width, height, depth) -> (batch, width, height, depth)
image_node = tf.expand_dims(train_placeholder, 0)
logits = model.inference(image_node)
total_loss = _loss(logits,label_placeholder)
train_op = _train(total_loss,global_step)
top_k_op = tf.nn.in_top_k(logits,label_placeholder,1)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
total_duration = 0
for epoch in range(1, FLAGS.epoch + 1):
start_time = time.time()
for file_index in range(5):
print('Epoch %d: %s' % (epoch, filenames[file_index]))
reader = Cifar10Reader(filenames[file_index])
for index in range(10000):
image = reader.read(index)
logits_value = sess.run([logits],
feed_dict={
train_placeholder: image.byte_array
})
_,loss_value = sess.run([train_op,total_loss],
feed_dict={
train_placeholder: image.byte_array,
label_placeholder: image.label
}
)
if index % 1000 == 0:
print('[%d]: %r' % (image.label, logits_value))
assert not np.isnan(loss_value), \
'Model diverged with loss = NaN'
reader.close()
duration = time.time() - start_time
total_duration += duration
prediction = _eval(sess,top_k_op,train_placeholder,label_placeholder)
print('epoch %d duration = %d sec' % (epoch, duration))
tf.train.SummaryWriter(FLAGS.checkpoint_dir, sess.graph)
print('Total duration = %d sec' % total_duration)
def _eval(sess,top_k_op,train_placeholder,label_placeholder):
if not FLAGS.test_data:
return np.nan
image_reader = Cifar10Reader(FLAGS.test_data)
true_count = 0
for index in range(10000):
image = image_reader.read(index)
predictions = sess.run([top_k_op],
feed_dict={
input_image: image.image,
label_placeholder:image.label
}
)
true_count += np.sum(predictions)
image_reader.close()
if __name__ == '__main__':
tf.app.run()
と書いたコードを実行したら、上記のエラーが出ました。 エラー全体は以下のような内容でした。 Traceback (most recent call last): File "inference.py", line 120, in <module> tf.app.run() File "/Users/XXX/anaconda/envs/py36/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 44, in run _sys.exit(main(_sys.argv[:1] + flags_passthrough)) File "inference.py", line 97, in main tf.train.SummaryWriter(FLAGS.checkpoint_dir, sess.graph) AttributeError: module 'tensorflow.python.training.training' has no attribute 'SummaryWriter' TensorflowがSummaryWriterのメソッドを持っていない訳はないと思いますが...。 どこを直せば良いのでしょうか?
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+1
代わりにtf.summary.FileWriter
を使う必要があります。
参考:
TensorBoradを開く方法AttributeError: module 'tensorflow.python.training.training' has no attribute 'SummaryWriter' #8164
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
0
tf.train.SummaryWriter(FLAGS.checkpoint_dir, sess.graph)
tf.summary.FileWriter(FLAGS.checkpoint_dir, sess.graph)
□参考
'module' object has no attribute 'SummaryWriter'
以下は余談です。
発展途上のライブラリ(今回の場合はtensorflow)はAPIの仕様がよく変わります。
そして、現在どのようなAPI仕様になってるのかを調べる責任は、APIを使う使用者側になります。
具体的にはまず
1,エラーメッセージでグーグル検索を行う。
今回の場合は「AttributeError: module 'tensorflow.python.training.training' has no attribute 'SummaryWriter' 」がキーワードです。
2,公式のAPIドキュメントを確認する。
この2点をまず行ってください。
以上、ご参考まで。
プログラムの完成頑張ってくださいなー。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.33%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる