深度学习FPGA实现基础知识7(深度学习Matlab工具箱代码详解)

需求说明:深度学习FPGA实现知识储备

来自:http://www.360doc.com/content/15/1027/15/1317564_508749932.shtml


最近研究了几天深度学习的Matlab工具箱代码,发现作者给出的源码中注释实在是少得可怜,为了方便大家阅读,特对代码进行了注释,与大家分享。

在阅读Matlab工具箱代码之前,建议大家阅读几篇CNN方面的两篇经典材料,对卷积神经网络Matlab工具箱代码的理解有很大帮助,稍后我会将这两篇文献上传到网上与大家分享。急需的也可以留言注明,我会及时发送至邮箱的。

(1)《Notes on Convolutional Neural Networks》,这篇文章是与Matlab工具箱代码配套的文献,不过文献中在下采样层也有两种训练参数,在工具箱中的下采样层并没有可训练参数,直接进行下采样操作。

下载地址:http://cogprints.org/5869/1/cnn_tutorial.pdf

(2)《CNN学习-薛开宇》,这是与《Notes on Convolutional Neural Networks》内容及其相似的一份中文PPT资料,对卷积神经网络的介绍也是通俗易懂。

阅读地址:http://wenku.baidu.com/link?url=pd-ECeQCvDjUNs7G4KW7ypYBbnQ1Eu46B6CzB0vFeHm_RJyNWPW80ZioEhBoSOkQFxlN1b5TP8lD2R0zs62ZnYpCPCzldNx6AdFP4udvEUK

(3)深度学习的Matlab工具箱Github下载地址: https://github.com/rasmusbergpalm/DeepLearnToolbox

接下来给出一个工具箱中CNN程序在Mnist数据库上的示例程序:

%%========================================================================= % 
主要功能:在mnist数据库上做实验,验证工具箱的有效性 % 算法流程:
1)载入训练样本和测试样本 % 
2)设置CNN参数,并进行训练 %   
3)进行检测cnntest() 
% 注意事项:
1)由于直接将所有测试样本输入会导致内存溢出,故采用一次只测试一个训练样本的测试方法 
%%========================================================================= %% 
%%%%%%%%%%%%%%%%%%%%加载数据集%%%%%%%%%%%%%%%%%%%% 
 
   

    
    
  1. load mnist_uint8;
  2. train_x = double(reshape(train_x ’,28,28,60000))/255;
  3. test_x = double(reshape(test_x ’,28,28,10000))/255;
  4. train_y = double(train_y ’);
  5. test_y = double(test_y ’);


%% %%========================================================================= %
%%%%%%%%%%%%%%%%%%%设置卷积神经网络参数%%%%%%%%%%%%%%%%%%%% 
% 主要功能:训练一个6c-2s-12c-2s形式的卷积神经网络,预期性能如下: 
%   1)迭代一次需要200秒左右,错误率大约为11
%   2)迭代一百次后错误率大约为1.2
% % 算法流程:
1)构建神经网络并进行训练,以CNN结构体的形式保存
2)用已知的训练样本进行测试 
% % 注意事项:
1)之前在测试的时候提示内存溢出,后来莫名其妙的又不溢出了,估计到了系统的内存临界值
 %%========================================================================= 
 
   

    
    
  1. rand( 'state', 0) cnn.layers = { struct( 'type', 'i') %输入层
  2. struct( 'type', 'c', 'outputmaps', 6, 'kernelsize', 5) %卷积层
  3. struct( 'type', 's', 'scale', 2) %下采样层
  4. struct( 'type', 'c', 'outputmaps', 12, 'kernelsize', 5) %卷积层
  5. struct( 'type', 's', 'scale', 2) %下采样层 };
  6. cnn = cnnsetup(cnn, train_x, train_y);
  7. opts.alpha = 1; opts.batchsize = 50;
  8. opts.numepochs = 5;
  9. cnn = cnntrain(cnn, train_x, train_y, opts);
  10. save CNN_5 cnn;
  11. load CNN_5;
  12. [ er, bad] = cnntest(cnn, test_x, test_y);
  13. figure; plot(cnn.rL);
  14. assert(er< 0.12, 'Too big error');


接下来给出工具箱中有关CNN部分程序注释的网址:

(1) 深度学习Matlab工具箱代码注释——cnnsetup.m :        http://blog.csdn.net/u013088062/article/details/48662121 

(2) 深度学习Matlab工具箱代码注释——cnntrain.m :          http://blog.csdn.net/u013088062/article/details/48662247

(3) 深度学习Matlab工具箱代码注释——cnnff.m :              http://blog.csdn.net/u013088062/article/details/48662303

(4) 深度学习Matlab工具箱代码注释——cnnbp.m :             http://blog.csdn.net/u013088062/article/details/48662349

(5) 深度学习Matlab工具箱代码注释——cnnapplygrads.m : http://blog.csdn.net/u013088062/article/details/48662397   

整理来自:时间的诗
            </div>

需求说明:深度学习FPGA实现知识储备

来自:http://www.360doc.com/content/15/1027/15/1317564_508749932.shtml


最近研究了几天深度学习的Matlab工具箱代码,发现作者给出的源码中注释实在是少得可怜,为了方便大家阅读,特对代码进行了注释,与大家分享。

在阅读Matlab工具箱代码之前,建议大家阅读几篇CNN方面的两篇经典材料,对卷积神经网络Matlab工具箱代码的理解有很大帮助,稍后我会将这两篇文献上传到网上与大家分享。急需的也可以留言注明,我会及时发送至邮箱的。

(1)《Notes on Convolutional Neural Networks》,这篇文章是与Matlab工具箱代码配套的文献,不过文献中在下采样层也有两种训练参数,在工具箱中的下采样层并没有可训练参数,直接进行下采样操作。

下载地址:http://cogprints.org/5869/1/cnn_tutorial.pdf

(2)《CNN学习-薛开宇》,这是与《Notes on Convolutional Neural Networks》内容及其相似的一份中文PPT资料,对卷积神经网络的介绍也是通俗易懂。

阅读地址:http://wenku.baidu.com/link?url=pd-ECeQCvDjUNs7G4KW7ypYBbnQ1Eu46B6CzB0vFeHm_RJyNWPW80ZioEhBoSOkQFxlN1b5TP8lD2R0zs62ZnYpCPCzldNx6AdFP4udvEUK

(3)深度学习的Matlab工具箱Github下载地址: https://github.com/rasmusbergpalm/DeepLearnToolbox

接下来给出一个工具箱中CNN程序在Mnist数据库上的示例程序:

%%========================================================================= % 
主要功能:在mnist数据库上做实验,验证工具箱的有效性 % 算法流程:
1)载入训练样本和测试样本 % 
2)设置CNN参数,并进行训练 %   
3)进行检测cnntest() 
% 注意事项:
1)由于直接将所有测试样本输入会导致内存溢出,故采用一次只测试一个训练样本的测试方法 
%%========================================================================= %% 
%%%%%%%%%%%%%%%%%%%%加载数据集%%%%%%%%%%%%%%%%%%%% 
 
 

  
  
  1. load mnist_uint8;
  2. train_x = double(reshape(train_x ’,28,28,60000))/255;
  3. test_x = double(reshape(test_x ’,28,28,10000))/255;
  4. train_y = double(train_y ’);
  5. test_y = double(test_y ’);


%% %%========================================================================= %
%%%%%%%%%%%%%%%%%%%设置卷积神经网络参数%%%%%%%%%%%%%%%%%%%% 
% 主要功能:训练一个6c-2s-12c-2s形式的卷积神经网络,预期性能如下: 
%   1)迭代一次需要200秒左右,错误率大约为11
%   2)迭代一百次后错误率大约为1.2
% % 算法流程:
1)构建神经网络并进行训练,以CNN结构体的形式保存
2)用已知的训练样本进行测试 
% % 注意事项:
1)之前在测试的时候提示内存溢出,后来莫名其妙的又不溢出了,估计到了系统的内存临界值
 %%========================================================================= 
 
 

  
  
  1. rand( 'state', 0) cnn.layers = { struct( 'type', 'i') %输入层
  2. struct( 'type', 'c', 'outputmaps', 6, 'kernelsize', 5) %卷积层
  3. struct( 'type', 's', 'scale', 2) %下采样层
  4. struct( 'type', 'c', 'outputmaps', 12, 'kernelsize', 5) %卷积层
  5. struct( 'type', 's', 'scale', 2) %下采样层 };
  6. cnn = cnnsetup(cnn, train_x, train_y);
  7. opts.alpha = 1; opts.batchsize = 50;
  8. opts.numepochs = 5;
  9. cnn = cnntrain(cnn, train_x, train_y, opts);
  10. save CNN_5 cnn;
  11. load CNN_5;
  12. [ er, bad] = cnntest(cnn, test_x, test_y);
  13. figure; plot(cnn.rL);
  14. assert(er< 0.12, 'Too big error');


接下来给出工具箱中有关CNN部分程序注释的网址:

(1) 深度学习Matlab工具箱代码注释——cnnsetup.m :        http://blog.csdn.net/u013088062/article/details/48662121 

(2) 深度学习Matlab工具箱代码注释——cnntrain.m :          http://blog.csdn.net/u013088062/article/details/48662247

(3) 深度学习Matlab工具箱代码注释——cnnff.m :              http://blog.csdn.net/u013088062/article/details/48662303

(4) 深度学习Matlab工具箱代码注释——cnnbp.m :             http://blog.csdn.net/u013088062/article/details/48662349

(5) 深度学习Matlab工具箱代码注释——cnnapplygrads.m : http://blog.csdn.net/u013088062/article/details/48662397   

整理来自:时间的诗
            </div>

猜你喜欢

转载自blog.csdn.net/ximingri/article/details/81184344