加载resnet50 出现Please convert data to LoDTensor directly before feeding the data
收藏
加载resnet50 出现Please convert data to LoDTensor directly before feeding the data
收藏
0
收藏
全部评论(2)
- 模型使用了paddle提供的RESNET50
- 加载的模型使用了paddle提供的预训练RESNET50
- infer的代码如下
def test_load_resnet():
input_image = fluid.layers.data(
name="input_image",
shape=[3, 224, 224],
dtype="float32",
lod_level=2)
input_label = fluid.layers.data(
name="label",
shape=[1],
dtype="int64",
lod_level=0)
resnet50 = ResNet(layers=50)
out = resnet50.net(input=input_image, class_dim=1000)
place = fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program()) # startup program
fluid.io.load_persistables(
executor=exe,
dirname="/home/work/jingchunzhen/pretrained_model/ResNet50_pretrained",
main_program=fluid.default_main_program())
data_reader = RelevanceReader()
for _, _, _, _, batch_image, _ in data_reader.batch_generator(
file_name="/home/work/lixiaokang04/image_rele/local/train_set",
batch_size=128):
resnet_out = exe.run(
program=fluid.default_main_program(),
fetch_list=[out.name],
feed={"input_image": batch_image},
return_numpy=True)
print(resnet_out)
print(np.shape(resnet_out))
break
- 加载数据的代码如下
def parse_image(self, image):
img = Image.open(self.image_dir + image)
#img = img.convert("RGB")
img = img.resize((224, 224), Image.ANTIALIAS)
img = np.array(img)
img = img.astype("float32")
img = np.transpose(img, (2, 0, 1))
img = img * 1.0 / 225
return img
- 完整的错误信息如下
Traceback (most recent call last):
File "test_model.py", line 263, in <module>
test_load_resnet()
File "test_model.py", line 106, in test_load_resnet
return_numpy=True)
File "/ssd1/share/torch_python/lib/python2.7/site-packages/paddle/fluid/executor.py", line 650, in run
use_program_cache=use_program_cache)
File "/ssd1/share/torch_python/lib/python2.7/site-packages/paddle/fluid/executor.py", line 746, in _run
self._feed_data(program, feed, feed_var_name, scope)
File "/ssd1/share/torch_python/lib/python2.7/site-packages/paddle/fluid/executor.py", line 448, in _feed_data
cur_feed = _as_lodtensor(cur_feed, self.place)
File "/ssd1/share/torch_python/lib/python2.7/site-packages/paddle/fluid/executor.py", line 285, in _as_lodtensor
")
RuntimeError: Some of your feed data hold LoD information. They can not be completely cast from a list of Python ndarray to LoDTensor. Please convert data to LoDTensor directly before feeding the data.
0
请登录后评论
需要输入的数据都是规整的,没有变长的情况
完整的错误信息为: