web-dev-qa-db-ja.com

Tensorflowは、「フィードから要素をバイトとして取得できません」で失敗します。チェックポイントを復元しようとしたとき

Tensorflowr0.12を使用しています。

私はgoogle-cloud-mlをローカルで使用して、2つの異なるトレーニングジョブを実行しています。最初の仕事では、変数の適切な初期値を見つけました。それらをV2チェックポイントに保存します。

2番目のジョブで使用するために変数を復元しようとすると:

import tensorflow as tf

sess = tf.Session()
new_saver = tf.train.import_meta_graph('../variables_pred/model.ckpt-10151.meta', clear_devices=True)
new_saver.restore(sess, tf.train.latest_checkpoint('../variables_pred/'))
all_vars = tf.trainable_variables()
for v in all_vars:
    print(v.name)

次のエラーメッセージが表示されました。

tensorflow.python.framework.errors_impl.InternalError: Unable to get element from the feed as bytes.

チェックポイントは、最初のジョブで次の行を使用して作成されます。

saver = tf.train.Saver()
saver.export_meta_graph(filename=os.path.join(output_dir, 'export.meta'))
saver.save(sess, os.path.join(output_dir, 'export'), write_meta_graph=False)

この回答 によると、メタデータファイルがないことが原因である可能性がありますが、メタデータファイルを読み込んでいます。

PS:google-cloud-mlでの起動によって生成されたデバイス仕様は非常に複雑であり、必ずしも同じディスパッチを取得する必要がないため、引数clear_devices=Trueを使用します。

9

エラーメッセージは、不注意により「checkpoint」という名前のファイルがないことが原因でした。

このファイルを適切なフォルダに再導入した後、チェックポイントのロードが機能しているように見えます。

この要点を省略してすみません。

12

モデルを保存するときにwrite_meta_graph = Falseを設定することが問題である可能性があると思います。結果として、実際にグラフを保存しているとは思わないので、復元しようとしても復元するグラフはありません。 write_meta_graph = Trueを設定してみてください

1
Jeremy Lewi