您的位置:首页 > 理论基础 > 计算机网络

自己定义CNN网络模型并使用caffe训练

2017-06-28 23:54 686 查看
caffe自带的例子中对mnist手写体数字训练使用的卷积神经网络是在lenet_train_test.prototxt中定义的,隐含层包含了2个卷积层,2个池化层,2个全连接层,1个激活函数层。网络结构如下:





这里尝试修改一下lenet_train_test.prototxt文件,减少或增加一组卷积层和池化层,对比一下各自的训练精度和损失。

1.  减少一组卷积层和池化层

这样隐含层就包含了1个卷积层,1个池化层,2个全连接层,1个激活函数层。修改的方式直接在lenet_train_test.prototxt文件中删除第二卷积层和第二池化层的定义,并把第一全连接层的输入改成第一池化层的输出就行了(同时把第一卷积层的输出由20改成了50)。

修改之后的网络结构:





训练结果:



1.  增加一组卷积层和池化层

这样隐含层就包含了3个卷积层,3个池化层,2个全连接层,1个激活函数层。这里要注意的是图像大小是28*28,第一和第二卷积层的卷积核大小都是5*5,第一和第二池化层的池化核大小都是2*2,所以经过第二池化层之后单个图片的大小就只有
((28-4)/2-4)/2=4,即4*4大小了,那新加的第三卷积层的卷积核就不能再是5*5了,这里改用3*3的卷积核,之后的第三池化核大小改成1*1,步长也改成1,修改之后的网络结果:





训练结果:



不做修改,正常情况下lenet_train_test.prototxt的训练结果为:



对比

减少一组卷积层和池化层的训练精度: 0.9881

减少一组卷积层和池化层的训练损失: 0.0359024

正常情况下的训练精度: 0.99

正常情况下的训练损失: 0.0295332

增加一组卷积层和池化层的训练精度: 0.992

增加一组卷积层和池化层的训练损失: 0.0257643
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐