TensorFlow如何导入已训练模型并设置不同的batch size进行预测?

Hi,
 
最近在研究TensorFlow的inference性能,遇到这样一个问题:如何导入已训练的模型并设置不同的batch size进行预测?这本该是个很简单的问题,但是卡了我一段时间。
 
我的网络是Inception,训练好后导出了两种形式的模型:Frozen Model和saved_model。现在想做的是导入训练好的模型,对GraphDef用TensorRT进行优化然后再用Tensorflow执行预测。
 
分别尝试导入之后发现一个问题,Frozen Model可以直接通过.ParseFromString()方法获得GrapDef,trt也可以顺利进行优化,但是在预测的时候输入节点NHWC的N锁定在了1,这似乎是frozen_model本身导出时就确定的,我没找到freeze model导出时设置batch的方法(直觉不是这么操作的),而我希望能设置不同的batch_size。
 
saved_model导出时batch size是"?",理论上应该可以接纳不同的batch size,但是我尝试导入模型之后直接进行预测会得到如下报错:

ValueError: Cannot feed value of shape (299, 299, 3) for Tensor u'input:0', which has shape '(?, 299, 299, 3)'


给图片加第0维后报错:

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'import/input' with dtype float and shape [?,299,299,3]

     [[Node: import/input = Placeholder[dtype=DT_FLOAT, shape=[?,299,299,3], _device="/job:localhost/replica:0/task:0/device:GPU:0"]()]]


 
总结:
Frozen和saved model导入后无法实现多batch_size的预测。
不止大家谁遇到过类似的问题,我想这应该是一个相当简单的问题才对,但一直找不到办法。
 
Any idea will be welcome.
 
Thanks,
已邀请:

要回复问题请先登录注册