Keras model.summary() 结果-参数数量问题。
0 388
1

我有一个简单的NN模型,用于使用Keras(Theano后端)从用python编写的28x28px图像中检测手写数字:

model0 = Sequential()
#number of epochs to train for
nb_epoch = 12#amount of data each iteration in an epoch sees
batch_size = 128

model0.add(Flatten(input_shape=(1, img_rows, img_cols)))
model0.add(Dense(nb_classes))
model0.add(Activation('softmax'))
model0.compile(loss='categorical_crossentropy', 
         optimizer='sgd',
         metrics=['accuracy'])

model0.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
      verbose=1, validation_data=(X_test, Y_test))

score = model0.evaluate(X_test, Y_test, verbose=0)

print('Test score:', score[0])
print('Test accuracy:', score[1])

这样运行良好,我得到了约90%的准确度。然后,我执行以下命令,通过执行print(model0.summary())来获得网络结构的信息。

Layer (type)         Output Shape   Param #     Connected to                     
=====================================================================
flatten_1 (Flatten)   (None, 784)     0           flatten_input_1[0][0]            
dense_1 (Dense)     (None, 10)       7850        flatten_1[0][0]                  
activation_1        (None, 10)          0           dense_1[0][0]                    
======================================================================
Total params: 7850

我不明白如何达到7850个总参数,这实际上意味着什么?

收藏
2021-02-08 10:56 更新 karry •  4540
共 1 个回答
高赞 时间
0

参数的数量是7850,因为对于每个隐藏单元,你都有784个输入权重和一个与偏置连接的权重。 这意味着每个隐藏单元都给你785个参数。 你有10个单元,所以它的总和是7850。

这个额外的偏差项的作用确实很重要。它大大增加了模型的容量。你可以阅读详细信息,例如此处的“偏差在神经网络中的作用”。

Via:https://stackoverflow.com/a/36947547/14964791

收藏
2021-02-08 11:20 更新 anna •  5042