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

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

ただいまの
回答率

90.45%

  • Python

    12364questions

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

  • TensorFlow

    961questions

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

解決済

回答 1

投稿

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

nomnommorn

score 0

プログラミング初心者です。
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’

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

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • nomnommorn

    2019/06/13 01:22 編集

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

    キャンセル

  • tiitoi

    2019/06/13 01:41 編集

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

    キャンセル

  • nomnommorn

    2019/06/13 02:52 編集

    このエラー直前の記述は以下なのですが

    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):

    キャンセル

回答 1

check解決した方法

0

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

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

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

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

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

  • Python

    12364questions

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

  • TensorFlow

    961questions