我正在尝试使用keras在ResNet50上运行MNIST数据集。我被困在了mnist数据集上使用ImageDatagenerator的部分,因为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')
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 datasets 来源 - Model class API
编辑: 至于Resnet,您可以尝试使用Lambda图层来调整图像Link to SO answer的大小
另一种方法是将数据帧转换为numpy数组,并使用上面代码中显示的fit函数
找到MNIST为JPG(https://www.kaggle.com/scolianni/mnistasjpg)并使用它。从你的代码('../input/train')我猜你正在使用Kaggle内核。您只需通过右侧的+ AddData按钮向笔记本添加数据,然后将MNIST作为JPG进行搜索。但是我在这里发现了一个奇怪的错误 - 内核没有读取MNIST数据库。解决方法是将MNIST下载为JPG,在本地解压缩,然后再次打包并上传到私有数据库,然后再使用)。