使用tensorflow 学习图像模型。
在opencv中读取图像,并从0归一化为1。
但是记忆会增长很多。
原因是什么?
def create_dataset(img_folder):
img_data_array=[]
class_name=[]
for path in os.listdir(img_folder):
for file in os.listdir(os.path.join(img_folder, path)):
continue
image_path = os.path.join(img_folder, path, file)
image = cv2.imread( image_path, cv2.COLOR_BGR2GRAY)
image = cv2.resize(image, (HEIGHT, WIDTH),interpolation = cv2.INTER_AREA)
image = np.array(image)
image = image.astype('float') / 255 # <-- Here
img_data_array.append(image)
class_name.append(path)
return img_data_array, class_name
image =图像类型("浮点型")/255
我在这部分用了太多内存。
1条答案
按热度按时间ws51t4hk1#
内存会增加,因为在每次迭代中都要向列表添加numpy数组。
根据数据集的大小,你可能无法在ram中加载完整的数据集,这个问题通常可以通过加载器来缓解,pytorch有dataloaders,tensorflow有tf.data。
对于这个特定的调整大小操作,将这些调整大小的图像输出到一个目录,并根据需要成批读取图像可能更好(也是常规的)。
在image.astype('float')/ 255期间内存不足的原因是因为从uint 8到float 32,对于调整大小的图像,内存使用增加了4倍。