Почему мы меняем форму изображений в Keras на 4d для классификации изображений

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img

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')

img = load_img('data/train/cats/cat.0.jpg')  # this is a PIL image
x = img_to_array(img)  # this is a Numpy array with shape (3, 150, 150)
x = x.reshape((1,) + x.shape)  # this is a Numpy array with shape (1, 3, 150, 150)

Я не знаю, почему мы меняем форму и делаем ее форму (1, 3, 150, 150), как в строке X = x.reshape((1,) + x.shape)и что я здесь имею в виду и в чем польза от этого. Этот пример взят из https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

1 ответ

В то время как 3 - это количество каналов (R, G и B), а 150 - это ширина / высота вашего изображения, 1 - это размер вашего пакета.

Обычно методы машинного обучения, такие как нейронные сети, обрабатывают несколько изображений за раз. Если вы обрабатываете n изображений за раз, n - размер вашего пакета, а ваш тензор будет иметь форму (n, 3, 150, 150).

Другие вопросы по тегам