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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python

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

Q&A

解決済

1回答

3838閲覧

Tensorflow: retrainすると、AttributeErrorが発生する

nomnommorn

総合スコア12

Python

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

0グッド

0クリップ

投稿2019/06/12 13:43

プログラミング初心者です。
Pythonを始めて、何か作ってみたいということで画像認証マシンに挑戦しています。

実現したいこと

Tensorflowを使って、画像認証マシンを作りたいと思っています。
参考にしているのは以下の記事などです。
https://qiita.com/umeee/items/b35a344815eba735e460
https://qiita.com/trnmn/items/0a02c82ef9a4b93226d4

エラーメッセージ

上記の記事にある通り、terminal(Python 3.6.4導入済)で、必要なプログラムやモジュールをダウンロードし、学習させるため以下のコマンドを実行しました。

python retrain.py \ --bottleneck_dir=bottlenecks \ --how_many_training_steps=100 \ --model_dir=inception \ --summaries_dir=training_summaries/basic \ --output_graph=retrained_graph.pb \ --output_labels=retrained_labels.txt \ --image_dir=gakushu_data

結果、以下のエラーが返ってきました

Traceback (most recent call last): File "retrain.py", line 131, in <module> import tensorflow as tf File "/Users/***/anaconda3/lib/python3.6/site-packages/tensorflow/__init__.py", line 30, in <module> from tensorflow._api.v2 import compat File "/Users/***/anaconda3/lib/python3.6/site-packages/tensorflow/_api/v2/compat/__init__.py", line 22, in <module> from tensorflow._api.v2.compat import v2 File "/Users/***/anaconda3/lib/python3.6/site-packages/tensorflow/_api/v2/compat/v2/__init__.py", line 302, in <module> "Limited tf.compat.v2.summary API due to missing TensorBoard " File "/Users/***/anaconda3/lib/python3.6/site-packages/tensorflow/python/tools/component_api_helper.py", line 56, in package_hook child_pkg = importlib.import_module(child_package_str) File "/Users/***/anaconda3/lib/python3.6/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/Users/***/anaconda3/lib/python3.6/site-packages/tensorboard/summary/__init__.py", line 32, in <module> from tensorboard.summary import v2 File "/Users/***/anaconda3/lib/python3.6/site-packages/tensorboard/summary/v2.py", line 24, in <module> from tensorboard.plugins.audio.summary_v2 import audio File "/Users/***/anaconda3/lib/python3.6/site-packages/tensorboard/plugins/audio/summary_v2.py", line 30, in <module> from tensorboard.compat import tf2 as tf File "/Users/***/anaconda3/lib/python3.6/site-packages/tensorboard/compat/__init__.py", line 28, in <module> import tensorboard.lazy as _lazy AttributeError: module 'tensorboard' has no attribute 'lazy'

調査と試行

TensorBoardのバージョンがtf-nightly-2.0-previewと合ってない?
→同じエラー事象のissueを発見した
https://github.com/tensorflow/tensorboard/issues/1862ので、
tf-nightly-2.0-previewtb-nightlyをvirtualenvで構築した仮想環境にインストールしてみましたが、
認証の時に以下

AttributeError: module ‘tensorflow’ has no attribute ‘app’

判定の時には以下

AttributeError: module ‘tensorflow’ has no attribute ‘GraphDef’

やはりどれだけ調べてもエラーの原因が突き止められず…。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/06/12 13:54

tensorflow の 2.0 はまだαリリースで安定版ではないので、stable 版をインストールし直したほうがよいのではないでしょうか? API 等も2.0以前と結構変わっているので、書籍やネット上の Tensorflow のコードもそのままだとまず動かないと思います。
nomnommorn

2019/06/12 14:59 編集

ご回答ありがとうございます。 tensorflow-gpu をvirtualenv環境に再インストールしてみました。 →retrain.py実行したところ、今度は以下のエラーになってしまいました。 ------------------ ImportError: dlopen(/Users/.../venv/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so, 10): Library not loaded: @rpath/libcublas.8.0.dylib Referenced from: /Users/.../venv/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so Reason: image not found ------------------ stable版はMacはgpuがサポートされていない、と書かれていますが関係あるでしょうか?
tiitoi

2019/06/12 15:24 編集

エラー自体は CUDA のバージョン8が PC にインストールされていないため、見つからないというエラーです。 Mac は持っていないため詳しくないのですが、Mac に Nvidia の GPU は搭載しているのでしょうか? もし、搭載しているのであれば、CUDA 8 を入れると解決すると思います。 もし GPU がないのであれば、tensorflow-gpu ではなく、CPU 版の tensorflow をインストールすればいいと思います。
nomnommorn

2019/06/12 17:01 編集

調べたところ、GPUは搭載していましたがCUDA 8は無いようでしたので、CPU版を再インストールしてみました。 retrain.py実行は、できたようです! ただなぜかoutputのretrained_graph.pbが生成されず判定ができません… retrain.pyの最終行に ZeroDivisionError: integer division or modulo by zero が出ていますが、 うまく計算できていない、ということでしょうか?
tiitoi

2019/06/12 16:41 編集

0割りのエラーが起きているようですね。 データセットなど手順どおりに用意していてもそのようなエラーが出ているのだとしたら、すみませんがぱっと原因はわからないです。 retrain.py のソースを読んでどこの計算が意図どおりいっていないのかデバッグする必要があると思われます。
nomnommorn

2019/06/12 17:53 編集

このエラー直前の記述は以下なのですが Traceback (most recent call last): File "retrain.py", line 1349, in <module> tf.app.run(main=main, argv=[sys.argv[0]] + unparsed) File "/Users/.../venv2/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 125, in run _sys.exit(main(argv)) File "retrain.py", line 1115, in main FLAGS.tfhub_module)) File "retrain.py", line 519, in get_random_cached_bottlenecks image_dir, category) File "retrain.py", line 260, in get_image_path mod_index = index % len(category_list) ZeroDivisionError: integer division or modulo by zero おそらくcategory_listが0になってしまっている・・・? retrain.py内の251〜268行目は以下の通りです if label_name not in image_lists: tf.logging.fatal('Label does not exist %s.', label_name) label_lists = image_lists[label_name] if category not in label_lists: tf.logging.fatal('Category does not exist %s.', category) category_list = label_lists[category] if not category_list: tf.logging.fatal('Label %s has no images in the category %s.', label_name, category) mod_index = index % len(category_list) base_name = category_list[mod_index] sub_dir = label_lists['dir'] full_path = os.path.join(image_dir, sub_dir, base_name) return full_path def get_bottleneck_path(image_lists, label_name, index, bottleneck_dir, category, module_name):
guest

回答1

0

自己解決

上記のtiitoiさんからの助言を受け、Tensorflowの再インストールなどを行なったあと、
以下の質問投稿を見つけ、gakushu_dataフォルダの中身を見直し整理して解決しました!
https://github.com/tensorflow/tensorflow/issues/2072
無事retrain.pyが実行され、retrained_graph.pbとretrained_labels.pbが生成されました。

見直し内容は主に以下です。

  • 拡張子が画像データ以外のものがある(拡張子がついていないなど)
  • サイズがすぎる
  • 画像データの名前が長い(File name too long)

投稿2019/06/13 23:57

編集2019/06/14 00:03
nomnommorn

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問