我们如何导入MNIST图像而不是数据帧。

时间:2018-04-15 21:35:44

标签: python machine-learning keras mnist resnet

我正在尝试使用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')

2 个答案:

答案 0 :(得分:0)

Mnist数据集与keras集成。您可以按如下方式使用它

from openpyxl import load_workbook

file_name = "Test_shorts.xlsx"
wb = load_workbook(file_name)

current_sheet = wb.active
new_sheet = wb.create_sheet("New", 1)

for row in current_sheet.rows:
    col = 0  # set the column to 0 when 1 row ends
    for cell in row:
        col += 1  # cell.column will return 'ABC's so I defined col for the column
        new_sheet.cell(cell.row, col, cell.value)

wb.save(file_name)

在这种情况下,您不需要ImageDataGenerator。您可以只返回返回到模型的元组

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

来源 - keras datasets
来源 - Model class API

修改
至于Resnet,您可以尝试使用Lambda图层来调整图像大小 Link to SO answer

另一种方法是将您的数据帧转换为numpy数组并使用上面代码中显示的fit函数

答案 1 :(得分:0)

将MNIST查找为JPG(https://www.kaggle.com/scolianni/mnistasjpg)并使用它。 从您的代码('../input/train')中,我猜您正在使用Kaggle内核。您只需通过右侧的+ AddData按钮将数据添加到笔记本,然后将MNIST以JPG格式进行搜索即可。但是我在这里发现了一个奇怪的错误-内核没有读取MNIST数据库。解决方法是将MNIST下载为JPG,在本地解压缩,然后再次打包并上传到私有数据库,然后再使用)。