ValueError: cannot reshape array of size 82022400 into shape (96,96,3) Как рассчитать reshape() для 2225 изображений

Предобрабатываю изображения в форму двоичного файла чтобы потом закинуть в Keras GAN model. У меня есть 2225 изображений разных размеров и в формате png. при вызове image.size() из директории данных вывод (96, 96), дальше я записываю его в тренировчный список training_data чтобы Как мне рассчитать правильный reshape() и константы для преобразования изображений? Что надо измениить в коде?

GENERATE_RES = 3 # Generation resolution factor 
# (1=32, 2=64, 3=96, 4=128, etc.)
GENERATE_SQUARE = 32 * GENERATE_RES # rows/cols (should be square)
IMAGE_CHANNELS = 3

# Preview image 
PREVIEW_ROWS = 4
PREVIEW_COLS = 7
PREVIEW_MARGIN = 16

# Size vector to generate images from
SEED_SIZE = 100

# Configuration
DATA_PATH = '/folder/patterns/dragons dataset'
EPOCHS = 50
BATCH_SIZE = 32
BUFFER_SIZE = 2250

print(f"Will generate {GENERATE_SQUARE}px square images.")

training_binary_path = os.path.join(DATA_PATH,
        f'training_data_{GENERATE_SQUARE}_{GENERATE_SQUARE}.npy')

print(f"Looking for file: {training_binary_path}")

if not os.path.isfile(training_binary_path):
  start = time.time()
  print("Loading training images...")

  training_data = []
  faces_path = os.path.join(DATA_PATH)
  for filename in tqdm(os.listdir(faces_path)):
      path = os.path.join(faces_path,filename)
      image = Image.open(path).resize((GENERATE_SQUARE,
            GENERATE_SQUARE),Image.ANTIALIAS)
      # при вызове image.size() вывод (96, 96)
      training_data.append(np.asarray(image))
      
  training_data = np.reshape(training_data,(-1,GENERATE_SQUARE,
            GENERATE_SQUARE,IMAGE_CHANNELS))
  training_data = training_data.astype(np.float32)
  training_data = training_data / 127.5 - 1.


  print("Saving training image binary...")
  np.save(training_binary_path,training_data)
  elapsed = time.time()-start
  print (f'Image preprocess time: {hms_string(elapsed)}')
else:
  print("Loading previous training pickle...")
  training_data = np.load(training_binary_path)
     19   training_data = np.reshape(training_data,(-1,GENERATE_SQUARE,
---> 20             GENERATE_SQUARE,IMAGE_CHANNELS))
     21   training_data = training_data.astype(np.float32)
     22   training_data = training_data / 127.5 - 1.

<__array_function__ internals> in reshape(*args, **kwargs)

2 frames
/usr/local/lib/python3.7/dist-packages/numpy/core/fromnumeric.py in _wrapit(obj, method, *args, **kwds)
     42     except AttributeError:
     43         wrap = None
---> 44     result = getattr(asarray(obj), method)(*args, **kwds)
     45     if wrap:
     46         if not isinstance(result, mu.ndarray):

ValueError: cannot reshape array of size 82022400 into shape (96,96,3)

Ответы (0 шт):