AlexNet的网络结构:
Blobs:用于层之间的数据流动
caffe能使用几种数据源:
来自数据库:LevelDB和LMDB,来自磁盘:HDF5,来自内存,来自图片
1. 数据来源于数据库(LevelDB和LMDB)层类型(layer type):Data
必须配置的参数:
source:包含数据库的目录名称(examples/imagenet/project/train_lmdb)
batch_size:每次处理数据的个数(受内存限制)
可选参数:
rand_skip: rand_skip: 在开始的时候,路过某个数据的输入。通常对异步的SGD很有用。
backend: 选择是采用LevelDB还是LMDB, 默认是LevelDB.
2.数据来源于内存
层类型:MemortyData
必须设置的参数:
batch_size:每一次处理的数据个数,比如2
channels:通道数
height:高度
width: 宽度
3. 数据来源于HDF5
层类型:HDF5Data
必须设置的参数:
source: 读取的文件名称
batch_size: 每一次处理的数据个数
4. 数据来源于图片
层类型:ImageData
必须设置的参数:
source: 一个文本文件的名字,每一行给定一个图片文件的名称和标签(label)
batch_size: 每一次处理的数据个数,即图片数
可选参数:
rand_skip: 在开始的时候,路过某个数据的输入。通常对异步的SGD很有用。
shuffle: 随机打乱顺序,默认值为false
new_height,new_width: 如果设置,则将图片进行resize
5、数据来源于Windows
层类型:WindowData
必须设置的参数:
source: 一个文本文件的名字
batch_size: 每一次处理的数据个数,即图片数
过拟合的解决:
1. 增大训练量(增大数据,将图片旋转)
2.降低网络规模(但是大规模的神经网络有更强的潜力)
3.规范化:
DropOut:修改神经网络本身的结构。训练开始时,随机删除隐藏层神经元,即认为这些神经元不存在,同时保持输入层与输出层神经元的个数不变。然后按照BP学习算法对ANN中的参数进行学习更新。这样一次迭代更新便完成了。下一次迭代中,同样随机删除一些神经元,与上次不一样,做随机选择。这样一直进行瑕疵,直至训练结束。