Как мы можем импортировать изображения MNIST вместо фрейма данных?

Я пытаюсь запустить набор данных MNIST в ResNet50, используя keras. Я застрял в той части, где ImageDatagenerator используется в наборе данных mnist, доступном в keras, для импорта файла из каталога. Если я правильно понимаю data_generator.flow_from_directory, то он запрашивает путь к изображениям в качестве первого аргумента.

Однако я не могу понять, как вводить эти данные mnist, поскольку они доступны.

Я знаю, что файл, доступный в from keras.datasets import mnist, импортируется как фрейм данных. тогда как flow_from_directory('../input/train',..) запрашивает пути к изображениям

Любая помощь будет оценена по достоинству.

from tensorflow.python.keras.applications.resnet50 import preprocess_input
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator

image_size = 224
data_generator = ImageDataGenerator() 
import pandas
train_generator = data_generator.flow_from_directory(
        '../input/train',
        target_size=(image_size, image_size),
        batch_size=200,
        class_mode='categorical')

validation_generator = data_generator.flow_from_directory(
        '../input/val',
        target_size=(image_size, image_size),
        class_mode='categorical')

person Bogorovich    schedule 15.04.2018    source источник


Ответы (2)


Набор данных Mnist интегрирован с keras. Вы можете использовать его следующим образом

from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

В этом случае вам не понадобится ImageDataGenerator. Вы можете просто поместить кортежи, возвращенные в вашу модель.

model.fit(x= x_train, y= y_train, validation_data= (x_test,y_test))

Источник – наборы данных keras
Источник – API класса модели

Редактировать:
Что касается Resnet, вы можете попробовать использовать слой Lambda для изменения размера изображений Ссылка на ответ SO

Другой альтернативой является преобразование ваших фреймов данных в массивы numpy и использование функции подгонки, показанной в приведенном выше коде.

person user239457    schedule 16.04.2018
comment
Но входное изображение для реснета имеет формат 224x224, а mnist - 28x28. - person Bogorovich; 16.04.2018
comment
да, tf.image.resize_image делает это с тензорами - person user239457; 16.04.2018

Найдите MNIST в формате JPG (https://www.kaggle.com/scolianni/mnistasjpg) и используй это. Из вашего кода ('../input/train') я предполагаю, что вы используете ядро ​​Kaggle. Вы можете просто добавить данные в блокнот с помощью кнопки +AddData справа и выполнить поиск MNIST в формате JPG. Однако я обнаружил здесь странную ошибку - ядро ​​​​не читало базу данных MNIST. Обходной путь состоял в том, чтобы загрузить MNIST в формате JPG, распаковать локально, затем снова упаковать и загрузить в частную базу данных перед использованием).

person user9751993    schedule 15.02.2019