Keras fit_generator 给出维度不匹配错误
Keras fit_generator gives a dimension mismatch error
我正在处理 MNIST 数据集,其中 X_train = (42000,28,28,1)
是训练集。 y_train = (42000,10)
是对应的标签集。现在我使用 Keras 从图像生成器创建一个迭代器,如下所示;
iter=datagen.flow(X_train,y_train,batch_size=32)
效果很好。
然后我使用训练模型;
model.fit_generator(iter,steps_per_epoch=len(X_train)/32,epochs=1)
这里报如下错误;
ValueError: Error when checking input: expected dense_9_input to have 2 dimensions, but got array with shape (32, 28, 28, 1)
我试了但没有找到错误。我也在这里搜索但没有答案:
expected dense_218_input to have 2 dimensions, but got array with shape (512, 28, 28, 1)
顺便说一句,这是我的模型的总结
请帮帮我。
更新:
model=Sequential()
model.add(Dense(256,activation='relu',kernel_initializer='he_normal',input_shape=(28,28,1)))
model.add(Flatten())
model.add(Dense(10,activation='softmax',kernel_initializer='he_normal'))
形状不匹配是根本原因。输入形状与 ImageDataGenetor
期望的不匹配。请使用 mnist
数据检查以下示例。我用过Tensorflow 2.1
.
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
x_train = tf.expand_dims(x_train,axis=-1)
x_test = tf.expand_dims(x_test,axis=-1)
datagen = ImageDataGenerator(
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2)
iter=datagen.flow(x_train,y_train,batch_size=32)
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28,1)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
#model.fit_generator(iter,steps_per_epoch=len(X_train)/32,epochs=1) # deprecated in TF2.1
model.fit_generator(iter,steps_per_epoch=len(iter),epochs=1)
model.evaluate(x_test, y_test)
完整代码是here
我正在处理 MNIST 数据集,其中 X_train = (42000,28,28,1)
是训练集。 y_train = (42000,10)
是对应的标签集。现在我使用 Keras 从图像生成器创建一个迭代器,如下所示;
iter=datagen.flow(X_train,y_train,batch_size=32)
效果很好。
然后我使用训练模型;
model.fit_generator(iter,steps_per_epoch=len(X_train)/32,epochs=1)
这里报如下错误;
ValueError: Error when checking input: expected dense_9_input to have 2 dimensions, but got array with shape (32, 28, 28, 1)
我试了但没有找到错误。我也在这里搜索但没有答案:
expected dense_218_input to have 2 dimensions, but got array with shape (512, 28, 28, 1)
顺便说一句,这是我的模型的总结
请帮帮我。
更新:
model=Sequential()
model.add(Dense(256,activation='relu',kernel_initializer='he_normal',input_shape=(28,28,1)))
model.add(Flatten())
model.add(Dense(10,activation='softmax',kernel_initializer='he_normal'))
形状不匹配是根本原因。输入形状与 ImageDataGenetor
期望的不匹配。请使用 mnist
数据检查以下示例。我用过Tensorflow 2.1
.
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
x_train = tf.expand_dims(x_train,axis=-1)
x_test = tf.expand_dims(x_test,axis=-1)
datagen = ImageDataGenerator(
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2)
iter=datagen.flow(x_train,y_train,batch_size=32)
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28,1)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
#model.fit_generator(iter,steps_per_epoch=len(X_train)/32,epochs=1) # deprecated in TF2.1
model.fit_generator(iter,steps_per_epoch=len(iter),epochs=1)
model.evaluate(x_test, y_test)
完整代码是here