tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder

1515 ワード

今日、モデルをテストしたとき、次の問題に遭遇しました.ネット上で解決方法が見つかりませんでした.解決策を話してください.tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'input_1_1' with dtype float and shape [?,224,224,3] [[Node: input_1_1 = Placeholder[dtype=DT_FLOAT, shape=[?,224,224,3], _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
1、入力の検証
エラーメッセージのヒントは明らかで、入力が間違っています.まず入力したshapeとdtypeを調べてみましたが、テストなので[122,2424,3]、要素タイプfloat 32と入力します.大丈夫だよ!次奥、間違った情報は役に立たない.
2、ネットワーク構造の検証
あなたの予測とトレーニングネットワーク構造が同じかどうかを確認します.サイズだけでなく、ボリュームタイプ「same」と「valid」も一致しなければなりません.pbモデルを使っているので、間違いなくそうではありません.もちろん、私は原因を探しているときも直接この原因を考えませんが、ネット上にはこの原因があるようです.
3、マルチモデル結合の有無
前の2つの原因でなければ、90パーセントがこの原因です.あなたのモデルには複数のモデルが含まれていますか?tensorflow,kerasは,複数のモデルが存在する場合にgraph競合エラーを引き起こす可能性がある.言い換えれば、みんなgraphの中で混乱しています.前にこのような問題に遭遇したことがありますが、間違った情報は違います.最初の状況を排除した後、心の中ではすでにこの原因だと推測しています.そして2つのモデルを単独でテストして、やはり問題ありません.原因が見つかりました.
4、解決
graph衝突である以上、graphを新規作成してください.pbモデルの場合、次の方法で解決できます.
with tf.Graph().as_default():
    with tf.Session(config=config) as sess:
        with gfile.FastGFile(AngleModelPb, 'rb') as f:
            graph_def = tf.GraphDef()
            graph_def.ParseFromString(f.read())
            tf.import_graph_def(graph_def, name='')

keras、tensorflowの他のモデルであればsession.runの前にデフォルトgraphを取得します.
graph = tf.get_default_graph()
......
with graph.as_default():
    sess.run()

要するに、解決策はgraphを隔離することだ.