我有一个numpy数组,它是用cv2包读取许多图像创建的。我以灰度读取图像,所以像素值从0到255,在这种情况下,数据类型是uint8。这意味着每个数据元素的大小为1字节。我使用每个图像创建一个列表,然后希望将数组列表转换为数组数组。之后,我需要将这些数据输入到一个模型中,但是模型需要图像像素值在1到0之间浮动。现在Python中的每个float是8个字节。所以我试着用这个cv2函数转换每个数组
unlabeled_img_array = cv2.normalize(unlabeled_img_array.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)
它可以工作,我可以创建数组列表。当我试图将数组列表转换为数组数组时,会出现这样的问题:
^{pr2}$然后我得到一个内存错误,显然是因为矩阵太大了。如果我用uint8数据类型来做,就没有错误了。在
我的问题是。有没有办法克服这个问题,或者我必须坚持使用uint8而不是浮点值?在
编辑:
我也试过用这个
cv2.normalize(unlabeled_img_array.astype(np.float16), None, 0.0, 1.0, cv2.NORM_MINMAX)
但它给了我这个错误
TypeError: src data type = 23 is not supported
有没有办法让数组变成float16?也许这样可以缩小尺寸。虽然我不确定模特是否会接受它。在
你可以试着用float16代替float,这样可以节省3/4的内存。在
相关问题 更多 >
编程相关推荐