Python 在一个简单的CNN中优化了多少参数?
好的,这里是我的CNN(教程中的简单示例)以及一些算法,以获得自由参数的总数 我们有一个28*28灰度图像(MNIST)的数据集Python 在一个简单的CNN中优化了多少参数?,python,keras,conv-neural-network,gradient-descent,Python,Keras,Conv Neural Network,Gradient Descent,好的,这里是我的CNN(教程中的简单示例)以及一些算法,以获得自由参数的总数 我们有一个28*28灰度图像(MNIST)的数据集 第一层是使用32个3x3内核的二维卷积。输出的维度是26x26x32(内核步长是1,我们有32个26x26的特征映射)运行参数计数:288 第二层是2x2 MaxPool和2x2。输出的维数是13x13x32,但我们将其展平,得到一个长度为5408的向量。这里没有额外的参数 第三层是致密的。5408x100矩阵。输出的维数为100运行参数计数:540988 第四层也是
def define_model():
model = Sequential()
model.add(Conv2D(32, (3,3), activation = 'relu', kernel_initializer = 'he_uniform', input_shape=(28,28,1)))
model.add(MaxPooling2D((2,2)))
model.add(Flatten())
model.add(Dense(100, activation='relu', kernel_initializer='he_uniform'))
model.add(Dense(10, activation='softmax'))
opt = SGD(lr=0.01, momentum=0.9)
model.compile(optimizer=opt, loss='categorical_crossentropy', metric=['accuracy'])
return model
神经网络有很多参数。通常,密集之前的最后一个Conv层稍小一些,以减少参数总数。但神经网络的参数比点多也是正常的。@keiv.fly谢谢。但是,添加更多conv层如何帮助减少参数?这不就是增加参数来优化吗?您所做的只是减少输出信号的参数空间,但增加优化问题的参数空间。或者,为了真正解释我在这里的想法:您添加了另一个conv层,因此您添加了更多的内核,现在我们还需要找出所有这些额外内核的最佳形状。这没什么大不了的,我们有具有数千万到数亿个参数的神经网络,我们可以用SGD很好地训练它们。@MatiasValdenegro谢谢!那么这是否意味着我的算术和理解在计算541988这个数字时是正确的?是的,它看起来是正确的,你可以通过调用model.count_params()来确认