【发布时间】:2020-08-16 15:07:15
【问题描述】:
我正在使用
进行数据扩充data_gen=image.ImageDataGenerator(rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,
zoom_range=0.15,horizontal_flip=False)
iter=data_gen.flow(X_train,Y_train,batch_size=64)
data_gen.flow()需要一个秩为4的数据矩阵,所以X_train的形状是(60000, 28, 28, 1)。我们需要传递相同的形状,即(60000, 28, 28, 1),同时定义模型的架构如下;
model=Sequential()
model.add(Dense(units=64,activation='relu',kernel_initializer='he_normal',input_shape=(28,28,1)))
model.add(Flatten())
model.add(Dense(units=10,activation='relu',kernel_initializer='he_normal'))
model.summary()
model.add(Flatten()) 用于处理 rank-2 问题。现在问题出在model.summary() 上。它给出的输出不正确,如下所示;
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 28, 28, 64) 128
_________________________________________________________________
flatten_1 (Flatten) (None, 50176) 0
_________________________________________________________________
dense_2 (Dense) (None, 10) 501770
=================================================================
Total params: 501,898
Trainable params: 501,898
Non-trainable params: 0
dense_1 (Dense) 的 Output Shape 应该是 (None,64) 和 Param # 应该是 (28*28*64)+64 即 50240。 Output Shape 的 dense_2 (Dense) 是正确的,但 Param # 应该是 (64*10)+10,即 650。
为什么会发生这种情况以及如何解决这个问题?
【问题讨论】:
标签: python-3.x machine-learning keras deep-learning keras-layer