卷积神经网络理解与实现
2014-10-22 00:18
501 查看
神经网络和卷积神经网络的理解与工作(早):
http://wenku.baidu.com/view/9ae538a14028915f814dc246.html
神经网络推导月卷积神经网络推理
http://wenku.baidu.com/view/4550a0b94b73f242336c5fbb.html
毕设ppt,有几个关于bp的图,感觉不错
http://wenku.baidu.com/view/1cc957badd36a32d72758117.html
我对CNN matlab 代码的详细解析:
http://wenku.baidu.com/view/65344686102de2bd9605886e.html
or http://pan.baidu.com/s/1sjJjftz
在网上看过一些博客,和一些论文,尝试着自己去实现CNN。
我的CNN效果:
http://pan.baidu.com/s/1jGvGGBk 或http://v.youku.com/v_show/id_XODM4NzcyMzg0.html,(视频U酷转码后就看不太清了)
我的CNN代码(开发环境为:visual studio 2010):
mlp单层(6w图库训练):http://pan.baidu.com/s/1o6Fl1LS
mlp单层(6k实图训练):http://pan.baidu.com/s/1mgqSYVI
mlp双层:http://pan.baidu.com/s/1sj9F7dF
图库:http://pan.baidu.com/s/1pJsOMqn 6W+1W=7万张
图片图库:http://pan.baidu.com/s/1c0yAQ68 大约10*1000=约1w张(并不是每个数字严格1000张)
我的CNN结构(mlp单层):
把所有神经元的输出显示出来效果如下: (代码:http://pan.baidu.com/s/1bnEXUfP)
训练结果:
sigmoid函数作为尾部整形函数:
6000张图片训练100次,自洽检验准确率99.8%
2000张图片测试,准确率:98.4%
我用6w张图片训练100次,用另1w张图片测试,
尾部整形函数用sigmoid:
训练准确率为99.51%,测试准确率为98.80%,在两层卷积与sfm1误差传播过程中采用了多线程,训练时间约2小时。
尾部整形函数用softmax:
训练准确率为99.9281%,测试准确率为98.64%,
训练好的网络参数:http://pan.baidu.com/s/1kTMdkwv
6w的数据集中数字有歪的数字、有噪点的数字。
发现很多博客会大体介绍CNN的思想,但往往对实现细节理解不够准确或者语焉不详,论文不会详细介绍CNN的实现过程。
后来我查看了cnn matlab代码DeepLearnToolbox-master,发现了自己理解的很多错误。
我在写CNN上走过很多弯路,要特别注意:
1 每个卷积层featureMap只有一个bias,一个featureMap有若干个输入map,和每个输入map的连接对应一个filter。
2 卷积层误差传播可以通过误差播撒的方式来完成,它和旋转180度的卷积核对误差map做卷积得到的结果是一样的。
因为featureMap间的连接权重是以卷积核的形式表现的,卷积核可以被认为是某种均化后的权重。
3 怎么来理解共享权值?
一个featureMap在进行卷积的过程中会被切割出很多filterSize大小的图块,每个图块和卷积层的featureMap中的某个神经元连接,连接的权重就是卷积核。一个featuremap切割出来的所有的图块共享权值共享的是卷积核。
4 如何来更新卷积核?以及计算卷积层上一层的误差?
这里借用了神经网络的训练思想:我们把一个featureMap的卷积过程看作是一个filterSize*1大小的神经网络,用不同的图块反复训练的过程。
5 mlp采用双层抖动很厉害,训练效果不好,不收敛。mlp采用单层就好多了。
7 卷积过程可以采用多线程加速,第一层子采样的求误差delta的过程也适合采用多线程加速。
以下三次卷积过程是CNN中极为重要的。
图库:http://pan.baidu.com/s/1pJsOMqn 6W+1W=7万张文件解析:
训练特征文件解析,从第一个pixel value开始,没784个像素点表示一张图片,784个像素值是28*28的图像按列展开得到的。
训练用的标签文件解析:
斯坦福大学的几个CNN的例子,超帅!
http://cs.stanford.edu/people/karpathy/convnetjs/
http://wenku.baidu.com/view/9ae538a14028915f814dc246.html
神经网络推导月卷积神经网络推理
http://wenku.baidu.com/view/4550a0b94b73f242336c5fbb.html
毕设ppt,有几个关于bp的图,感觉不错
http://wenku.baidu.com/view/1cc957badd36a32d72758117.html
我对CNN matlab 代码的详细解析:
http://wenku.baidu.com/view/65344686102de2bd9605886e.html
or http://pan.baidu.com/s/1sjJjftz
在网上看过一些博客,和一些论文,尝试着自己去实现CNN。
我的CNN效果:
http://pan.baidu.com/s/1jGvGGBk 或http://v.youku.com/v_show/id_XODM4NzcyMzg0.html,(视频U酷转码后就看不太清了)
我的CNN代码(开发环境为:visual studio 2010):
mlp单层(6w图库训练):http://pan.baidu.com/s/1o6Fl1LS
mlp单层(6k实图训练):http://pan.baidu.com/s/1mgqSYVI
mlp双层:http://pan.baidu.com/s/1sj9F7dF
图库:http://pan.baidu.com/s/1pJsOMqn 6W+1W=7万张
图片图库:http://pan.baidu.com/s/1c0yAQ68 大约10*1000=约1w张(并不是每个数字严格1000张)
我的CNN结构(mlp单层):
把所有神经元的输出显示出来效果如下: (代码:http://pan.baidu.com/s/1bnEXUfP)
训练结果:
sigmoid函数作为尾部整形函数:
6000张图片训练100次,自洽检验准确率99.8%
2000张图片测试,准确率:98.4%
我用6w张图片训练100次,用另1w张图片测试,
尾部整形函数用sigmoid:
训练准确率为99.51%,测试准确率为98.80%,在两层卷积与sfm1误差传播过程中采用了多线程,训练时间约2小时。
尾部整形函数用softmax:
训练准确率为99.9281%,测试准确率为98.64%,
训练好的网络参数:http://pan.baidu.com/s/1kTMdkwv
6w的数据集中数字有歪的数字、有噪点的数字。
发现很多博客会大体介绍CNN的思想,但往往对实现细节理解不够准确或者语焉不详,论文不会详细介绍CNN的实现过程。
后来我查看了cnn matlab代码DeepLearnToolbox-master,发现了自己理解的很多错误。
我在写CNN上走过很多弯路,要特别注意:
1 每个卷积层featureMap只有一个bias,一个featureMap有若干个输入map,和每个输入map的连接对应一个filter。
2 卷积层误差传播可以通过误差播撒的方式来完成,它和旋转180度的卷积核对误差map做卷积得到的结果是一样的。
因为featureMap间的连接权重是以卷积核的形式表现的,卷积核可以被认为是某种均化后的权重。
3 怎么来理解共享权值?
一个featureMap在进行卷积的过程中会被切割出很多filterSize大小的图块,每个图块和卷积层的featureMap中的某个神经元连接,连接的权重就是卷积核。一个featuremap切割出来的所有的图块共享权值共享的是卷积核。
4 如何来更新卷积核?以及计算卷积层上一层的误差?
这里借用了神经网络的训练思想:我们把一个featureMap的卷积过程看作是一个filterSize*1大小的神经网络,用不同的图块反复训练的过程。
5 mlp采用双层抖动很厉害,训练效果不好,不收敛。mlp采用单层就好多了。
7 卷积过程可以采用多线程加速,第一层子采样的求误差delta的过程也适合采用多线程加速。
以下三次卷积过程是CNN中极为重要的。
图库:http://pan.baidu.com/s/1pJsOMqn 6W+1W=7万张文件解析:
训练特征文件解析,从第一个pixel value开始,没784个像素点表示一张图片,784个像素值是28*28的图像按列展开得到的。
训练用的标签文件解析:
斯坦福大学的几个CNN的例子,超帅!
http://cs.stanford.edu/people/karpathy/convnetjs/
相关文章推荐
- 深度神经网络实现图像理解的原理
- caffe中LetNet-5卷积神经网络模型文件lenet.prototxt理解
- 深度学习之卷积神经网络编程实现(二)
- 使用tensorlayer来实现:通过keras例子来理解lstm循环神经网络
- 阅读理解任务中的Attention-over-Attention神经网络模型原理及实现
- 神经光流网络——用卷积网络实现光流预测(FlowNet: Learning Optical Flow with Convolutional Networks)
- 机器学习笔记:tensorflow实现卷积神经网络经典案例--识别手写数字
- 神经网络的Trick之Dropout的理解与实现
- 理解深层神经网络中的迁移学习及TensorFlow实现
- 学习笔记TF052:卷积网络,神经网络发展,AlexNet的TensorFlow实现
- 学习笔记TF052:卷积网络,神经网络发展,AlexNet的TensorFlow实现
- 利用tensorflow实现神经网络卷积层、池化层、全连接层
- 卷积网络keras实现的部分理解
- 神经网络之卷积理解
- 机器学习之深入理解神经网络理论基础、BP算法及其Python实现
- 从图像到知识:深度神经网络实现图像理解的原理解析
- 【论文学习】神经光流网络——用卷积网络实现光流预测(FlowNet: Learning Optical Flow with Convolutional Networks)
- [tensorflow应用之路]什么是深度神经网络——通过实现简单的神经网络理解DNN
- 深入理解OpenStack中的网络实现
- 转载:IBM WAS ND 分布式网络环境的理解与集群的实现