※ 引述《wavek (坏猫咪)》之铭言:
: 假设今天我的数据是一百张CIFAR10的图片
: 32 * 32 color RGB, 10 classes
: 我的架构如下, 当然重点其实只在我的Input layer有四个节点
: https://imgur.com/EOYvM4z
: 那我的数据会怎么样进入输入层???
: (1)
: 100张图片分成四份
: 每个节点有25张图片进入
: (2)
: 每个节点都会有完整的100张图片进入
: (3)
: 100张图片
: 每张图片会被分成四等分
: 然后每一等分分别进入不同的节点
: (4)
: 还有听到个说法
: 没有所谓的输入层
: 那个只是视觉化表现比较方便
: 阿 那数据是怎么输入的XD
: 还是是其他方式, 有大神可以平易近人的说明吗QQ
在极度特殊的情况下, 如果你能发现输入资料潜在的特征, 可以利用
特定四个点的某个颜色的值, 例如照片四个角落的红色值, 做为输入
层的四个节点, 就能达到令人满意的辨识度(比方说测试样本的正确率
>95%), 那么输入层只有4个节点为何不可以呢?
只是, CIFAR10照片集并不是极度特殊的情况, 所以输入层只有4个节
点, 很难透过多个多节点隐藏层来获得一般人能够接受的正确辨识率.
因此, 建议刚开始尝试Keras时, 仍然以每个点的RGB值, 总共32*32*3
=3072节点放在输入层, 较能得到不错的辨识正确率. 之后, 你就可
尝试减少输入层节点数, 例如只取奇数列的32个点, 于是输入层只剩
16(列)*32(栏)*3(色)=1536个节点, 或是进一步把RGB三色用灰阶来表
示, 于是输入层只剩16(列)*32(栏)*1(色)=512个节点.
其实, 对于照片或影像这种二维空间的资料, 使用CNN可能是更好的做
法. 所以, 输入层不会是排成一维的I个节点, 而是二维J*K=I个节点.
处理完CNN后, 才会把CNN的二维输出层扁平化, 变成一维的输入层,
再经过多个多节点隐藏层直到输出层(例如CIFAR10的十个分类就有10
个输出层节点). 所以, 假如你在CNN不断萃取之后, 输出层就是只剩
4个节点, 那么扁平化之后, 输入层当然也是只有4个节点. 这又是另
外一种情况, 与前面所述照片未经CNN处理, 直接拿四个角落的红色值
当输入层完全不同. 你若了解CNN就会知道我的意思.
总之, Keras是一个不错的工具, 初学者很容易上手, 但要真正熟悉
Keras, 还是需要多多尝试各种网络架构的组合(例如不要扁平化的全
CNN), 才能更加清楚深度学习的奥妙.