下面代码中没注释的部分看这篇:
#在不改变数据的情况下,改变输入的维度
layer{
name:"reshape"
type:"Reshape"
bottom:"input"
top:"output"
reshape_param{
shape{
dim:0 #copy the dimension from below
dim:2
dim:3
dim:-1 #infer it from the other dimensions
}
}
}
# 有一个可选的参数组shape,用于制定blob数据的各维的值
# blob是一个四维数据:n×c×w×h
dim:0 表示维度不变,即输入和输出是相同的维度
dim:2 或 dim:3 将原来的维度变成2或者3
dim:-1 表示由系统自动计算维度。数据总量不变,系统会根据blob数据的其他三维来自动计算当前维的维度值
假设原数据为:32×3×28×28,表示32张3通道的28*28的彩色图片
shape{
dim:0
dim:0
dim:14
dim:-1 #-1表示根据前三个值,推测出来第四个值是多少
}
输出数据为:32*3*14*56
## dropout是一个防止过拟合的层
## 只需要设置一个dropout_ratio就可以了
layer{
name:"drop7"
type:"Dropout"
bottom:"fc7.conv"
top:"fc7.conv"
dropout_param{
dropout_ratio:0.5 #每次迭代杀死百分之五十的神经元 根据过拟合现象设置,过拟合越厉害,杀死的神经元就应该越多
}
}
其他网络配置文件: