首页 > 解决方案 > Keras CIFAR-10 Dense Layer Code 为什么最后一层有 512 个神经元?

问题描述

我正在使用 Keras 构建一个 CNN 来处理 CIFAR-10 数据集。我对在线教程的最后几行感到有些困惑。他们拍摄 50,000 张 32x32 彩色图像,并通过 4 个卷积层和一个全连接层对其进行处理。最后一部分通过以下方式完成:

model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))

我试图理解为什么它是 model.add(Dense(512)) 而不是其他数字。例如,我认为 32x32 的图像可以展平为 1024 大小的矢量。但是,他们为什么在这里选择512?

谢谢!

标签: tensorflowkeras

解决方案


实际上不是 32x32,它是 32x32x3,因为颜色通道和扁平化和密集的不同方法我认为你不会得到代码有低级实现:

W1=tf.Variable(tf.random_normal([32*32*3,512]),name="W1") #variable
x=tf.placeholder(tf.float32,[batch,32,32,3])              #placeholder for inputs
flat=tf.reshape(x,[batch,32*32*3])                        #model.add(Flatten())
mul1=tf.matmul(flat,W1)                                   #model.add(Dense(512))
relu=tf.nn.relu(mul1)                                #model.add(Activation('relu'))

flat的shape=[batch,32*32*3] mul1的shape=[batch,512]

当然它可能是 1024 或 5000,但它变得更难优化。


推荐阅读