我如何追加这两个数组而不崩溃我的RAM?



如果我尝试追加train_images和new_imgs我的RAM崩溃。我试图将train_images转换为常规列表,但同样的问题。另外,当我尝试追加图像(batch[0])时,完成批处理需要大约两秒钟,这是不可接受的。没有错误信息。没有错误信息,程序只是没有响应,然后只是关闭,我需要再次运行它,但每次都有一些问题。

%tensorflow_version 2.x  
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import numpy as np
from keras.preprocessing import image
from keras.preprocessing.image import ImageDataGenerator

我已经安装了数据集并对数据进行了预处理:

(train_images, train_labels), (test_images, test_labels) = 
datasets.cifar10.load_data()
train_images = train_images / 255.0;

创建一个图像数据生成器:

datagen = ImageDataGenerator(
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')

我已经创建了一个数组来存储所有修改过的图像,然后开始循环遍历我所有的数据集并重塑我的数据以准备修改:

new_images = []
for num, test_img in enumerate(train_images):
  img = image.img_to_array(test_img)
  img = img.reshape((1,) + img.shape)

我已经通过图像数据生成器运行了重塑的图像,并将其存储在数组中:

  i = 0
  print(str(num) + ' out of ' + str(len(train_images)) + ' left')
  for batch in datagen.flow(img):
      new_images.append(batch[0])
      i += 1
      if i > 4:
          break

,现在我不能得到数组以任何方式追加没有崩溃我的12 GB RAM…

我已经创建了一个数组来存储所有修改过的图像

不需要存储生成的图像,只使用.fit(...).flow(...)方法。

datagen.fit(train_images)
model.fit(datagen.flow(train_images, train_labels, batch_size=32),
          steps_per_epoch=len(train_images) / 32, epochs=epochs)

ImageDataGenerator

相关内容

  • 没有找到相关文章

最新更新