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

#tensorflow #machine-learning #keras #artificial-intelligence #image-classification

#tensorflow #машинное обучение #keras #искусственный интеллект #классификация изображений

Вопрос:

 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) , и что здесь означает 1, и в чем польза от этого.
Этот пример взят изhttps://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

Комментарии:

1. Нейронная сеть ожидает пакеты данных для вычисления потерь. Если у вас есть многоканальное изображение (например. RGB), что размер пакета будет 4-м по количеству dim и первым в форме данных (shape[0]). В вашем коде размер пакета равен 1, что означает, что в одном пакете будет одно изображение.

Ответ №1:

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

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

Комментарии:

1. большое вам спасибо, я буквально в замешательстве, почему мы изменяем наш тензор

2. Привет @AkshatSingh если этот или любой другой ответ решил ваш вопрос, пожалуйста, подумайте о том, чтобы принять его , установив флажок. Это указывает более широкому сообществу, что вы нашли решение, и дает некоторую репутацию как ответчику, так и вам самим. Нет никаких обязательств делать это.