无效参数错误:将(冻结的)Tensorflow模型加载到内存中(在本地计算机上测试模型时)


  • 我正在使用tensorflow对象检测API
  • 我已经在远程服务器GPU上进行了培训,并保存了冻结的模型和检查点
  • 之后,我将冻结的模型和检查点一起复制到本地机器上,然后使用脚本"object_detection_tutorial.ipnib"对我的测试数据进行测试

当我运行这个单元格"将(冻结的)Tensorflow模型加载到内存中"时,它会给出invalid argument错误。

你能解释一下在我的本地机器上运行保存模型时出现了什么问题吗?是否有必要在同一台机器上进行培训和测试?我遇到了以下错误:

InvalidArgumentError Traceback(最近调用最后)~/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/importer.py在import_graph_def(graph_def,input_map,return_elements,name,op_dict,producter_op_list)417个结果=c_api.TF_GraphImportGraphDefWithResults(-->418图_c_graph,序列化,选项)#pylint:disable=受保护的访问419结果=c_api_util.ScopedTFImportGraphDefResults(结果)

InvalidArgumentError:NodeDef提到属性"T"不在Opselected_index:int32>;NodeDef:{{node后处理器/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSumpression/no_max_suppression/NonMaxSuppression V3}}=NonMaxSuppressionV3[T=DT_FLOAT](后处理器/BatchMultiClassNonMaxSumpression/map/while/MultiClassNonMaxSuptression/unstack,后处理器/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSumpression/Reshape,后处理器/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSumpression/Minimum,后处理器/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSumpression/no_max_suppression/io_threshold,后处理器/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSumpression/non_maxSuppression/score_threshold)。(检查GraphDef解释二进制文件是否是最新的GraphDef生成二进制文件)。

在处理上述异常的过程中,发生了另一个异常:

ValueError Traceback(最近的调用最后)5 serialized_graph=fid.read()6 od_graph_def.ParseFromString(serialized_graph)---->7 tf.import_graph_def(od_graph.def,name='')

~/anaconda3/lib/python3.6/site-packages/tensorflow/python/util/deperation.py在new_func中(*args,**kwargs)486"在未来版本中",如果日期为None else("%s"%date之后),487说明)-->488返回函数(*args,**kwargs)489返回tf_decorator.make_decorator(func,new_func,'已弃用',490 _add_adepleted_arg_notice_to_docstring(

~/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/importer.py在import_graph_def(graph_def,input_map,return_elements,name,op_dict,producter_op_list)420,除了错误。InvalidArgumentError为e:421#转换为ValueError以实现向后兼容性。-->422引发ValueError(str(e))423424#为任何导入的函数创建_DefinedFunctions。

ValueError:NodeDef提到属性"T"不在Opselected_index:int32>;NodeDef:{{node后处理器/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSumpression/no_max_suppression/NonMaxSuppression V3}}=NonMaxSuppressionV3[T=DT_FLOAT](后处理器/BatchMultiClassNonMaxSumpression/map/while/MultiClassNonMaxSuptression/unstack,后处理器/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSumpression/Reshape,后处理器/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSumpression/Minimum,后处理器/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSumpression/no_max_suppression/io_threshold,后处理器/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSumpression/non_maxSuppression/score_threshold)。(检查GraphDef解释二进制文件是否是最新的GraphDef生成二进制文件)。

我也遇到了类似的问题。对我来说,解决方案是从TF1.9中获取GPU训练文件,并将它们移动到本地TF1.5 CPU环境(不支持AVX指令)。然后,我从训练文件中创建了本地环境中的冻结模型,并成功地使用了它

相关内容

最新更新