前提・実現したいこと
画像から説明文を生成する手法の「Show and Tell」をCPUで実行しようとしています。
以下の参考サイト通りに進めています。
参考記事
発生している問題・エラーメッセージ
キャプション生成の最後の実行で、以下のエラーが出ました。
run_inference スクリプトをビルドをするところまでは、できています。
tensorflow.python.framework.errors_impl.NotFoundError: ~/test/M/models/research/im2txt/word_counts.txt; No such file or directory
該当のソースコード
以下が、参考記事のコードです。
このtest/M/research
というのが、gitからクローンしたもともとのフォルダには存在せず、記事中ではここで初めて出てきたので、それが問題になっているのではないかと推測されます。
しかし、解決方法がわからないので、質問させていただきました。
~/test/models/research/im2txt/bazel-bin/im2txt/run_inference \
--checkpoint_path="~/test/M/models/research/im2txt/model.ckpt-2000000" \
--vocab_file="~/test/M/models/research/im2txt/word_counts.txt" \
--input_files="~/test/M/models/research/im2txt/im2txt/cat.jpg"
試したこと1
参考記事の「トレーニング済みモデルの準備」で処理しなければならないmodel.ckpt-2000000
というファイルの変更日が2016年になっていたので、再度参考記事に明記されていた以下のコードを実行して処理したところ、エラーが表示されました。
参考記事とは異なるファイル階層で、プログラムを実行したので最初の2行は、参考記事から変更しました。
OLD_CHECKPOINT_FILE = "model.ckpt-2000000"
NEW_CHECKPOINT_FILE = "model.ckpt-2000000"
import tensorflow as tf
vars_to_rename = {
"lstm/BasicLSTMCell/Linear/Matrix": "lstm/basic_lstm_cell/weights",
"lstm/BasicLSTMCell/Linear/Bias": "lstm/basic_lstm_cell/biases",
}
new_checkpoint_vars = {}
reader = tf.train.NewCheckpointReader(OLD_CHECKPOINT_FILE)
for old_name in reader.get_variable_to_shape_map():
if old_name in vars_to_rename:
new_name = vars_to_rename[old_name]
else:
new_name = old_name
new_checkpoint_vars[new_name] = tf.Variable(reader.get_tensor(old_name))
init = tf.global_variables_initializer()
saver = tf.train.Saver(new_checkpoint_vars)
with tf.Session() as sess:
sess.run(init)
saver.save(sess, NEW_CHECKPOINT_FILE)
エラー文
$ python checkpoint_change.py
2018-11-11 14:45:58.509219: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2018-11-11 14:46:17.630002: W tensorflow/core/framework/op_kernel.cc:1273] OP_REQUIRES failed at save_restore_v2_ops.cc:109 : Not found: ; No such file or directory
(略)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "checkpoint_change.py", line 23, in <module>
saver.save(sess, NEW_CHECKPOINT_FILE)
File "/Users/username/anaconda/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 1458, in save
raise exc
ValueError: Parent directory of model.ckpt-2000000 doesn't exist, can't save.
しかし、階層を変えて
OLD_CHECKPOINT_FILE = "test/models/research/im2txt/model.ckpt-2000000"
NEW_CHECKPOINT_FILE = "test/models/research/im2txt/model.ckpt-2000000"
にしたところ、エラーは起きず、
model.ckpt-2000000.data-00000-of-00001
model.ckpt-2000000.index
model.ckpt-2000000.meta
の3つのファイルが生成されました。
試したこと2
参考記事の実行コマンドでは、Mフォルダがないというエラーが出ていたので、Mフォルダのないコマンドで試したところ。さらに別のエラーが出て、解決できませんでした。
$ test/models/research/im2txt/bazel-bin/im2txt/run_inference --checkpoint_path="test/models/research/im2txt/model.ckpt-2000000" --vocab_file="test/models/research/im2txt/word_counts.txt" --input_files="test/models/research/im2txt/im2txt/cat.jpg"
エラー文
NotFoundError (see above for traceback): Restoring from checkpoint failed. This is most likely due to a Variable name or other graph key that is missing from the checkpoint. Please ensure that you have not altered the graph expected based on the checkpoint. Original error:
Key lstm/basic_lstm_cell/bias not found in checkpoint
[[node save/RestoreV2 (defined at /Users/username/Desktop/show_and_tell/test/models/research/im2txt/bazel-bin/im2txt/run_inference.runfiles/im2txt/im2txt/inference_utils/inference_wrapper_base.py:116) = RestoreV2[dtypes=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, ..., DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT], _device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_save/Const_0_0, save/RestoreV2/tensor_names, save/RestoreV2/shape_and_slices)]]
補足情報(FW/ツールのバージョンなど)
MacOS mojave
tensorflow 1.12.0
numpy 1.15.4
Babel 2.3.4
Python 3.6.0 :: Anaconda 4.3.0 (x86_64)
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
動作未検証なので推測ですがトレーニング済みモデルの準備の手順が抜けている、あるいは異なる場所にword_counts.txt
を解凍配置したのではないでしょうか?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.33%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
m.ts10806
2018/11/10 19:09
回答依頼いただきましたが、全く専門外なので期待には応えられません。他に専門知識をお持ちのかたに回していただければと
can110
2018/11/11 07:27
参考記事にそって実際に行った手順を明記されると回答得られやすいかと思います(抜けた/誤った手順はないか?)