Python Tensorflow ValueError:尝试加载另存为.pb的模型时,无法将float32类型的张量转换为float32\u ref类型的输入

Python Tensorflow ValueError:尝试加载另存为.pb的模型时,无法将float32类型的张量转换为float32\u ref类型的输入,python,tensorflow,protocol-buffers,batch-normalization,Python,Tensorflow,Protocol Buffers,Batch Normalization,我有一个经过训练的tensorflow模型,以检查点、.data、.meta和.index文件的形式保存。该模型使用批量标准化。 我尝试使用将其转换为.pb文件,该文件可以作为从tensorflow.python.tools import freeze\u graph导入。该文件的输入也是一个.pb文件,但它只有图形结构。 我用以下代码恢复模型 sess = tf.Session() saver = tf.train.import_meta_graph(r'.\path\to\model\Van

我有一个经过训练的tensorflow模型,以检查点、.data、.meta和.index文件的形式保存。该模型使用批量标准化。 我尝试使用将其转换为.pb文件,该文件可以作为
从tensorflow.python.tools import freeze\u graph
导入。该文件的输入也是一个
.pb
文件,但它只有图形结构。 我用以下代码恢复模型

sess = tf.Session()
saver = tf.train.import_meta_graph(r'.\path\to\model\VanillaCNN.0000.meta') 
saver.restore(sess, tf.train.latest_checkpoint(r'.\path\to\model'))
graph = tf.get_default_graph()
然后使用创建包含图形结构的
.pb
文件

tf.train.write_graph(sess.graph_def, "", "model_proto.pb", False)
之后,我使用
freeze\u graph
生成一个
.pb
文件,其中包括图形结构和权重。
freeze\u graph
的输入为

input_graph_path = r'.\path\to\model\model_proto.pb'
input_saver_def_path = ""
input_binary = False
input_checkpoint_path = r'.\path\to\model\VanillaCNN.0000'
output_node_names = "VanillaCNNoutput_10/layer_output"
restore_op_name = "save/restore_all"
filename_tensor_name = "save/Const:0"
output_graph_path = r'.\path\to\model\frozen_model.pb'
clear_devices = False
initializer_nodes=""
执行为

freeze_graph.freeze_graph(input_graph_path, input_saver_def_path,input_binary, input_checkpoint_path,output_node_names, restore_op_name,filename_tensor_name, output_graph_path,clear_devices,initializer_nodes)
当我尝试按如下方式加载它时,这将创建
冻结的\u model.pb

def load_graph(frozen_graph_filename):
    with tf.gfile.GFile(frozen_graph_filename, "rb") as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())

    with tf.Graph().as_default() as graph:
        tf.import_graph_def(graph_def, input_map=None, return_elements=None, name="", op_dict=None, producer_op_list=None)
    return graph
它抛出以下错误

ValueError: graph_def is invalid at node 'VanillaCNNconv_0/VanillaCNNconv_0/cond/Assign': Input tensor 'VanillaCNNconv_0/VanillaCNNconv_0/cond/Assign/Switch:1' Cannot convert a tensor of type float32 to an input of type float32_ref.

我如何解决这个问题?

这看起来类似于,不幸的是,我还没有一个很好的解决方案,部分原因是我无法创建一个简单的可复制测试用例。对话中有一些建议可能会有所帮助。@PeteWarden我正在尝试将模型转换为
.pb
以使模型成为android应用程序的一部分,是否有其他方法,不需要
.pb
文件。