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

时间:2019-01-05 08:26:34

标签: python python-3.x tensorflow object-detection-api

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

当我运行此单元格“将(冻结的)Tensorflow模型加载到内存中”时,它会显示invalid argument错误。

在本地计算机上运行保存模型时,您能解释什么问题吗?培训和测试必须在同一台机器上吗?遇到以下错误:

  

InvalidArgumentError跟踪(最近的调用)   持续)   〜/ anaconda3 / lib / python3.6 / site-packages / tensorflow / python / framework / importer.py   在import_graph_def(graph_def,input_map,return_elements,名称,   op_dict,producer_op_list)       (417)第417章   -> 418 graph._c_graph,序列化,选项)#pylint:disable = protected-access       419个结果= c_api_util.ScopedTFImportGraphDefResults(结果)

     

InvalidArgumentError:NodeDef不在其中提到attr'T'   运维   selected_indices:int32>; NodeDef:{{node   后处理器/ BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression / non_max_suppression / NonMaxSuppressionV3}}   = NonMaxSuppressionV3 [T = DT_FLOAT](Postprocessor / BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression / unstack,   后处理器/ BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression /重塑,   后处理器/ BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression /最小,   后处理器/ BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression / non_max_suppression / iou_threshold,   后处理器/ BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression / non_max_suppression / score_threshold)。   (检查您的GraphDef解释二进制文件是否与   您生成GraphDef的二进制文件。)

     

在处理上述异常期间,发生了另一个异常:

     

ValueError跟踪(最近的呼叫   最后)         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 / deprecation.py   在new_func(* args,** kwargs)中       486'在将来的版本中',如果日期为其他(在%s之后的%日期之后),       487条指令)   -> 488 return func(* args,** kwargs)       第489章;重生(二更)       490_第490章      

〜/ anaconda3 / lib / python3.6 / site-packages / tensorflow / python / framework / importer.py   在import_graph_def(graph_def,input_map,return_elements,名称,   op_dict,producer_op_list)       420除了errors.InvalidArgumentError为e:       421#转换为ValueError以获得向后兼容性。   -> 422提高ValueError(str(e))       423       424#为任何导入的函数创建_DefinedFunctions。

     

ValueError:NodeDef不在其中提到attr'T'   运维   selected_indices:int32>; NodeDef:{{node   后处理器/ BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression / non_max_suppression / NonMaxSuppressionV3}}   = NonMaxSuppressionV3 [T = DT_FLOAT](Postprocessor / BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression / unstack,   后处理器/ BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression /重塑,   后处理器/ BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression /最小,   后处理器/ BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression / non_max_suppression / iou_threshold,   后处理器/ BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression / non_max_suppression / score_threshold)。   (检查您的GraphDef解释二进制文件是否与   您生成GraphDef的二进制文件。)

1 个答案:

答案 0 :(得分:0)

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