gpt4 book ai didi

python - model.fit_generator() 形状错误

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:20 27 4
gpt4 key购买 nike

import os
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Convolution2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense

img_width, img_height = 64, 64

train_data_dir = 'data/train'
validation_data_dir = 'data/validation'
nb_train_samples = sum([len(files) for files in os.walk(train_data_dir)])
nb_validation_samples = sum([len(files) for files in os.walk(validation_data_dir)])
nb_epoch = 10


model = Sequential()
model.add(Dense(4096, input_dim = 4096, init='normal', activation='relu'))
model.add(Dense(4,init='normal',activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])


train_datagen = ImageDataGenerator(
rescale=1./255,
)


test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
train_data_dir,
color_mode="grayscale",
target_size=(img_width, img_height),
batch_size=1,
class_mode=None)

validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
color_mode="grayscale",
target_size=(img_width, img_height),
batch_size=1,
class_mode=None)

model.fit_generator(
train_generator,
samples_per_epoch=nb_train_samples,
nb_epoch=nb_epoch,
validation_data=validation_generator,
nb_val_samples=nb_validation_samples)

一切都运行良好,直到上面的代码中的 model.fit_generator() 为止。然后它会弹出如下错误。

Traceback (most recent call last):
File "C:/Users/Sam/PycharmProjects/MLP/Testing Code without CNN.py", line 55, in <module>
nb_val_samples=nb_validation_samples)
File "C:\Python27\lib\site-packages\keras\models.py", line 874, in fit_generator
pickle_safe=pickle_safe)
File "C:\Python27\lib\site-packages\keras\engine\training.py", line 1427, in fit_generator
'or (x, y). Found: ' + str(generator_output))
Exception: output of generator should be a tuple (x, y, sample_weight) or (x, y). Found: [[[[ 0.19215688]

最佳答案

问题应该是数据维度不匹配造成的。 ImageDataGenerator 实际上加载图像文件并放入 (num_image_channel, image_height, image_width) 形状的 numpy 数组中。但是你的第一层是一个密集连接层,它正在寻找一维数组或具有多个样本的二维数组形状的输入数据。因此,本质上您缺少输入层,该层以正确的形状获取输入。

更改以下代码行

model.add(Dense(4096, input_dim = 4096, init='normal', activation='relu'))

model.add(Reshape((img_width*img_height*img_channel), input_shape=(img_channel, img_height, img_width)))
model.add(Dense(4096, init='normal', activation='relu'))

您必须定义img_channel,它是图像中的 channel 数。上面的代码还假设您正在使用 dim_ordering of th。如果您使用 tf 输入维度排序,则必须将输入 reshape 图层更改为

model.add(Reshape((img_width*img_height*img_channel), input_shape=(img_height, img_width, img_channel)))

--- 旧答案 --

您可能已将训练数据和验证数据放入 trainvalidation 下的子文件夹中,这是 Keras 不支持的。所有训练数据都应位于一个文件夹中,验证数据也是如此。

请引用this Keras tutorial了解更多详情。

关于python - model.fit_generator() 形状错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40574386/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com