tensorflow - 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?
谢谢!
解决方案
实际上不是 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,但它变得更难优化。
推荐阅读
- spring-boot - 我的风暴螺栓无法在集群模式下反序列化
- javascript - Pointing to deeply nested objects parsed by a body parser(express)
- spring-boot - Spring Application 未因超时异常而终止
- python - 安装问题“pip install cx_Oracle-7.1.3-cp37-cp37m-win_amd64”
- r - 如何重命名重复名称的第一个(或 n 个)名称?
- python - 将字典列表转换为单独的列 pandas
- c# - 似乎无法通过 PUT 请求发送字符串
- qt - 如何在我的演示代码中保持黄色矩形不能移动?
- django - 如何只允许经过 Django 身份验证的用户查看 Wordpress 内容?
- python - 小部件文本未显示在其中一列中