一、问题描述
mxnet读取图片后,将mxnet.ndarray.ndarray.NDArray格式转为numpy的numpy.ndarray时出现错误,错误代码:exit code -1073741676 (0xC0000094)
出错代码:
for index in range(len(bins)):
byte = bins[index]
img = mx.image.imdecode(byte)
img = mx.ndarray.transpose(img, axes=(2, 0, 1))
img = ((img / 255) - 0.5) / 0.5
data_list[index][:] = torch.from_numpy(img.asnumpy())
二、出错原因
经排查,错误由mxnet的img.asnumpy()引起,在图片转换之前进行了归一化处理成浮点数。
应该是img.asnumpy()不支持对float的转换,使用int类型则不会出现报错。
for index in range(len(bins)):
byte = bins[index]
img = mx.image.imdecode(byte)
img = mx.ndarray.transpose(img, axes=(2, 0, 1))
# img = ((img / 255) - 0.5) / 0.5 <-- 引起报错
data_list[index][:] = torch.from_numpy(img.asnumpy())
data_list = ((data_list / 255) - 0.5) / 0.5 # 先转成numpy再作归一化处理