我的项目:Faster-RCNN-Win10-py3.6-TensorFlow。
我正在使用saved_model.loader.load
重新加载.pb模型以进行测试。如果我加载.pb文件并运行run函数,则找不到带有tf.py_func
节点的已定义的悬挂式pythonic代码预处理程序:
_, scores, bbox_pred, rois = tf.Session().run([op1, op2, op3, op4],
feed_dict = {_image: blobs['data'], _im_info: blobs['im_info']})
存在以下错误:
InvalidArgumentError: ValueError: callback pyfunc_0 is not found Traceback (most recent call last): File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py", line 154, in __call__ raise ValueError("callback %s is not found" % token) ValueError: callback pyfunc_0 is not found [[Node: import/vgg_16/ANCHOR_default/generate_anchors = PyFunc[Tin=[DT_INT32, DT_INT32, DT_INT32, DT_INT32, DT_FLOAT], Tout=[DT_FLOAT, DT_INT32], token="pyfunc_0", _device="/job:localhost/replica:0/task:0/device:CPU:0"] (import/vgg_16/ANCHOR_default/ToInt32/_5, import/vgg_16/ANCHOR_default/ToInt32_1/_7, import/vgg_16/rois/PyFunc/input_3, import/vgg_16/ANCHOR_default/generate_anchors/input_3, import/vgg_16/ANCHOR_default/generate_anchors/input_4)]]
如果在加载.pb文件之前没有调用Vgg16网络的初始化函数,原因一定是该API的标题中没有保存py_func
包装的pythonic函数:
Net = vgg16(batch_size=1),
Net.create_architecture(sess, "TEST", 21, tag='default', anchor_scales=[8, 16, 32])
将发生此错误。但是我不想加载Vgg16网络,因为我想直接使用C ++运行.pb文件。我不想称呼Vgg16网络模型。有办法解决吗?
更新:
我知道原因,因为vgg16就像自定义层一样,并且在sess.run
之前,必须重新定义自定义层,那么如何将自定义层放入图形中?如果无法执行此操作,则意味着无法使用C ++直接加载python生成的.pb文件。我想使用python进行训练,并使用C ++加载此pb文件进行测试。