ValueError:节点的输入 0 与预期的 float_ref 不兼容。**

Posted

技术标签:

【中文标题】ValueError:节点的输入 0 与预期的 float_ref 不兼容。**【英文标题】:ValueError: Input 0 of node incompatible with expected float_ref.** 【发布时间】:2018-12-07 15:32:05 【问题描述】:

我在尝试导入优化的冻结图时遇到异常。

# read pb into graph_def
with tf.gfile.GFile(pb_file, "rb") as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())

# import graph_def
with tf.Graph().as_default() as graph:
    tf.import_graph_def(graph_def)

在这一行中获取异常:

tf.import_graph_def(graph_def)

Traceback(最近一次调用最后一次):文件 "/home/automator/PycharmProjects/tensorflow/venv/lib/python3.5/site- 包/tensorflow/python/framework/importer.py”,第 489 行,在 import_graph_def graph._c_graph,序列化,选项)# pylint: disable=protected-access tensorflow.python.framework.errors_impl.InvalidArgumentError:输入 0 节点 import/final_retrain_ops/Wx_plus_b/weights_quant/AssignMinLast 是 从传递浮点数 导入/final_retrain_ops/Wx_plus_b/weights_quant/min:0 不兼容 与预期的 float_ref。在处理上述异常时, 发生另一个异常:Traceback(最近一次调用最后一次): 文件“/snap/pycharm-community/64/helpers/pydev/pydevd.py”,第 1664 行, 在 main() 文件“/snap/pycharm-community/64/helpers/pydev/pydevd.py”,第 1658 行,在 主要的 globals = debugger.run(setup['file'], None, None, is_module) 文件“/snap/pycharm-community/64/helpers/pydev/pydevd.py”,第 1068 行, 运行中 pydev_imports.execfile(file, globals, locals) # 执行脚本 File “/snap/pycharm-community/64/helpers/pydev/_pydev_imps/_pydev_execfile.py”, 第 18 行,在 execfile 中 exec(compile(contents+"\n", file, 'exec'), glob, loc) File "/home/automator/PycharmProjects/tensorflow/tfliteme.py", line 389, 在 printTensors("/home/automator/Desktop/cervix/optimized_model.pb") 文件“/home/automator/PycharmProjects/tensorflow/tfliteme.py”,行 374,在打印张量中 tf.import_graph_def(graph_def) 文件“/home/automator/PycharmProjects/tensorflow/venv/lib/python3.5/site- packages/tensorflow/python/util/deprecation.py",第 432 行,在 新函数 返回 func(*args, **kwargs) 文件“/home/automator/PycharmProjects/tensorflow/venv/lib/python3.5/site- 包/tensorflow/python/framework/importer.py”,第 493 行,在 import_graph_def raise ValueError(str(e)) ValueError: Input 0 of node import/final_retrain_ops/Wx_plus_b/weights_quant/AssignMinLast was 从传递浮点数 导入/final_retrain_ops/Wx_plus_b/weights_quant/min:0 不兼容 与

预期的 float_ref。

【问题讨论】:

【参考方案1】:

确保您的pb_file 格式正确(类似于this)并尝试在import_graph_def() 的“名称”参数中设置一些值以尝试覆盖“导入”默认值,例如所以:

# read pb into graph_def
with tf.gfile.GFile(pb_file, "rb") as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())

# import graph_def
with tf.Graph().as_default() as graph:
    tf.import_graph_def(graph_def, name='') 

【讨论】:

以上是关于ValueError:节点的输入 0 与预期的 float_ref 不兼容。**的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:输入 0 与层 lstm_13 不兼容:预期 ndim=3,发现 ndim=4

ValueError:层顺序的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 3,但接收到的输入具有形状

ValueError:“顺序”层的输入 0 与该层不兼容:预期形状 =(无,33714,12),找到形状 =(无,12)

ValueError:输入 0 与层 lstm_1 不兼容:预期 ndim=3,发现 ndim=2 [keras]

ValueError: 层 lstm_12 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=4

如何修复'ValueError:输入0与层simple_rnn_1不兼容:预期形状=(无,无,20),找到形状=(无,无,2,20)'