《脑与认知科学导论》课程实验报告要求
实验网址:
https://cs.stanford.edu/people/karpathy/convnetjs/demo
/cifar10.html
实验要求:
1)加载预训练 CNN 网络,观察其物体识别效果以及每层的中
间结果,分析 CNN 与人脑视觉信息加工机制的异同
2)设计一个新的 CNN 网络结构并对其进行训练,观察新网络
的物体识别能力随时间变化的情况,分析网络结构改变对物体识
别能力的影响
请 同 学 们 在 12 月 18 号 考 试 前 发 到 助 教 邮 箱 :
lhl0796@mail.ustc.edu.cn
附录 ConvNetJS 代码介绍
网络层
输入层:
{type: 'input', out_sx:24, out_sy:24, out_depth:3} #输入为 24*24*3 的 RGB 图片
type:层类型
out_sx:输入的 x 维度
out_sy:输入的 y 维度
out_depth:通道数(channel)
卷积层:
{type:'conv',sx:3,sy:4,pad:1, filters:10, stride:1, activation:'relu'}
type:层类型
sx:卷积核尺寸,若没有设置 sy,则卷积核大小为 sx*sx
sy:可不予设置,若设置,卷积核大小为 sx*sy
pad:对于无法卷积的边界部分进行补零,若不设置 pad,默认 pad=0,即不进行补零操
作
filters:卷积层的输出通道数
stride:步长,卷积核移动步长
activation:激活函数(有:’sigmoid’,’tanh’,’relu’等),可不予设置
若卷积层输入为 W1xH1xD1,输出为 W2xH2xD2,则满足:
W2 = (W1 - sx + pad*2)/stride + 1
H2 = (H1 - sy + pad*2)/stride + 1
D2 = filters
池化层:
{type:'pool', sx:2, pad:1, stride:2}
type:层类型
sx:池化窗口大小 sx*sx
pad:补零,同卷积层
stride:步长,池化窗口移动步长
若池化层输入为 W1xH1xD1,输出为 W2xH2xD2,则满足:
W2 = (W1 - sx + pad*2)/stride + 1
H2 = (H1 - sx + pad*2)/stride + 1
D2 = D1
全连接层:
{type:'fc', num_neurons:10, activation:'sigmoid', drop_prob: 0.5}
type:层类型
num_neurons:全连接神经元个数
activation:激活函数(有:’sigmoid’,’tanh’,’relu’等),可不予设置
drop_prob: dropout 比例(表示每次迭代扔掉的神经元比例,有利于防止过拟合),可
不予设置
分类层:
{type:'softmax', num_classes:2}
type:层类型,分类可选 ‘softmax’, ‘svm’等
num_classes:分类个数
Local Contrast Normalization Layer:
{type:'lrn', k:1, n:3, alpha:0.1, beta:0.75}
局部归一化,类似 BatchNormalization 层,有利于防止网络过拟合
模型构建与训练
模型构建:
layer_defs = [];
layer_defs.push(网络层)
layer_defs.push(网络层) #搭建网络
…………
#创建并编译网络
net = new convnetjs.Net();
net.makeLayers(layer_defs);
训练:
trainer = new convnetjs.Trainer(net, {method: 'sgd', learning_rate:
0.01,l2_decay: 0.001, momentum: 0.9, batch_size: 10, l1_decay: 0.001});
method:优化器,有‘sgd’,‘windowgrad’,‘adadelta’,'nesterov', 'adagrad'
等
learning_rate:学习率
l2_decay:L2 正则化系数
momentum:‘sgd’优化器的动量系数,其他优化器没有这一项
batch_size:批数据个数
l1_decay:L1 正则化系数
更多详细内容及解释请查阅
https://cs.stanford.edu/people/karpathy/convnetjs/docs.html