- 浏览: 694820 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (181)
- Matlab (16)
- Java (26)
- autoHotkey (4)
- openCV (1)
- C++ (50)
- PDF-XChange Viewer (2)
- 学术 (11)
- javascript (4)
- linux (11)
- SWT (9)
- latex (7)
- GAE (2)
- windows (6)
- C# (3)
- PS (20)
- JNI (4)
- latex,批处理 (0)
- 批处理 (4)
- Android (5)
- 矩阵论 (1)
- SVM (1)
- 概率图模型 (0)
- Python (12)
- Eigen (5)
- 编程题 (1)
- MKL (1)
- 神经网络 (9)
- 最优化 (2)
- 摄影 (1)
- PPT (0)
- After Effects (3)
- CUDA (3)
- caffe (0)
- MXNet (2)
- svn (1)
- R (0)
- 虚拟机 (0)
- tensorflow (7)
- theano (1)
- Keras (1)
- vim (1)
- xgboost (1)
- spark (6)
- eclipse (2)
- word2vec (0)
- hadoop (1)
- dmlc (1)
- git (0)
最新评论
-
jeffersonz:
请问大神,这个插件记录下来的脚本为什么不能再Extendscr ...
PhotoShop - 记录PS的所有操作为JavaScript代码 -
cherishLC:
Andy__Zou 写道cherishLC 写道Andy__Z ...
Eigen的编译选项;MKL的使用 -
Andy__Zou:
cherishLC 写道Andy__Zou 写道cherish ...
Eigen的编译选项;MKL的使用 -
cherishLC:
Andy__Zou 写道cherishLC 写道Andy__Z ...
Eigen的编译选项;MKL的使用 -
Andy__Zou:
cherishLC 写道Andy__Zou 写道 您好,您的工 ...
Eigen的编译选项;MKL的使用
MatConvNet为vlFeat作者写的matlab下的卷积神经网络工具包,可以使用GPU。
主页:http://www.vlfeat.org/matconvnet/
教程:http://www.robots.ox.ac.uk/~vgg/practicals/cnn/index.html
注意:需要下载新版的MatConvNet替换掉教程中工具包中的matconvnet:http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta12.tar.gz
本文程序和excise3效果一致,但使用了MatConvNet的examples中类似的网络结构进行定义,可以使用cnn_train函数进行训练。
内容:
不多说,上代码,注释很详细:
主页:http://www.vlfeat.org/matconvnet/
教程:http://www.robots.ox.ac.uk/~vgg/practicals/cnn/index.html
注意:需要下载新版的MatConvNet替换掉教程中工具包中的matconvnet:http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta12.tar.gz
本文程序和excise3效果一致,但使用了MatConvNet的examples中类似的网络结构进行定义,可以使用cnn_train函数进行训练。
内容:
- 演示了自定义网络层、自定义误差函数的方法
- 演示了自定义errorFunction的方法
- 演示了对于不同参数分别设置learning rate和weight decay 的方法
不多说,上代码,注释很详细:
function LC_Ex3_usingNetStructure clc % ------------------------------------------------------------------------- % Part 3: Learning a simple CNN 改为了使用网络定义 % ------------------------------------------------------------------------- % 改写http://www.robots.ox.ac.uk/~vgg/practicals/cnn/index.htm 的 exercise 3为一个网络 % 注意:MatConvNet工具包已经替换为新版:http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta12.tar.gz setup ; %% doSmooth=false; subMean=false; doSmooth=true; subMean=true; wSize=9; % ------------------------------------------------------------------------- % Part 3.1: Load an example image and generate its labels % ------------------------------------------------------------------------- %% % Load an image im = rgb2gray(im2single(imread('data/dots.jpg'))) ; % Compute the location of black blobs in the image [pos,neg] = extractBlackBlobs(im) ; %% % ------------------------------------------------------------------------- % Part 3.2: Image preprocessing % ------------------------------------------------------------------------- % Pre-smooth the image if(doSmooth) im = vl_imsmooth(im,3) ; end %% % Subtract median value if(subMean) im = im - median(im(:)) ; end %% Create pixel-level labels to compute the loss y = zeros(size(pos),'single') ; y(pos) = +1 ; y(neg) = -1 ; %% 转换为imdb格式 imdb.images.data = {im} ; imdb.images.labels = {y} ; %labels的数据结构完全由自己决定,与getBatch函数以及误差层的backward函数兼容即可(在backward函数中以layer.class形式出现,layer.class等于getBatch函数的返回值labels);对于分类问题,一般为[1,1,2,2]等类别信息 imdb.images.set = [1];% 样本类型,1为训练样本,2为validation样本,3为测试样本,,但是cnn_train函数只会对训练样本和测试样本进行计算 imdb.meta.sets = {'train', 'val', 'test'} ;%集合名称,即1代表训练集,2代表val集(validation) imdb.meta.classes ={'1'}; %类别名称 %% ------------------------------------------------------------------------- % Part 3.3: Learning with stochastic gradient descent % ------------------------------------------------------------------------- trainOpts.batchSize = 1 ; trainOpts.numEpochs = 500 ; %运行多少轮 trainOpts.continue = false ;%如果trainOpts.expDir已经有对应epoch的网络,是否直接载入 trainOpts.gpus=[]; %gpu下标,不使用GPU则设为[],,如果有两个GPU可以设为 [1 2] trainOpts.learningRate =.5 ; trainOpts.expDir = 'data/ex3-experiment' ; %输出的网络结果、实验结果图存在哪儿 trainOpts.momentum=0.9; trainOpts.weightDecay = 0.0001 ; trainOpts.errorFunction=@error_ErrPixels; %用于显示误差的自定义函数 trainOpts.errorLabels ={'错误率'}; net=LC_CNN_Ex3('wSize',wSize); %将pos,neg均传给网络,记录到输出层的结构中,便于根据之前的公式计算误差 trainOpts.val= imdb.images.set==1; %验证集下标,,必须有验证集,否则报错。。。只好把训练集当成验证集了 [net, info] = cnn_train(net, imdb, @getBatch, ... trainOpts) ; end %只有一幅图片,直接返回就行了 function [im, labels]=getBatch(imdb,batch) im= imdb.images.data{1}; im=reshape(im,[size(im) 1]); labels=imdb.images.labels{1}; end %绘图用,用于检测不同epoch下网络的性能,这里返回的指标为分类错误率 function err = error_ErrPixels(opts, labels, res) % ------------------------------------------------------------------------- resX=res(end-1).x; y=labels; fp = resX >0 & y < 0 ; fn = resX < 1 & y > 0 ; tn = resX <= 0 & y < 0 ; tp = resX >= 1 & y > 0 ; % err=[fp;fn;tn;tp]; %可以设置多个指标,对应的trainOpts.errorLabels 也要改为多个标签 err=100*(1-sum(sum(tp|tn))/sum(sum(fp|fn|tp|tn))); end
function net=LC_CNN_Ex3(varargin) % 改写http://www.robots.ox.ac.uk/~vgg/practicals/cnn/index.html 的 exercise 3为一个网络 opts.wSize=3; opts=vl_argparse(opts,varargin); net.layers = {} ; lr=ones(1,10); weightDecay=[1 0]; w = 10 * randn(opts.wSize,opts.wSize, 1) ; %最后一个表示输出只有一个通道 w = single(w - mean(w(:))) ; b = single(0) ; pad1 = ([size(w,1) size(w,1) size(w,2) size(w,2)] - 1) / 2 ; net.layers{end+1}= struct('type', 'conv', ... 'weights', {{w, b}}, ... 'learningRate', [1 2], ... %自定义learning rate相对于全局的learning rate 的比率,[1 2] 表示w的学习率与全局学习率一致,而偏置b的学习率则为全局学习率的两倍 'weightDecay',weightDecay,...;%自定义weightDecay相对于全局的weightDecay的比率,[1 0]表示只对w矩阵进行weight decay,而不对偏置b进行weight decay 'stride', 1, ... 'pad', pad1) ; rho2 = 3 ; pad2 = (rho2 - 1) / 2 ; net.layers{end+1}= struct('type', 'pool', ... 'method', 'max', ... 'pool', rho2, ... 'stride', 1, ... 'pad', pad2) ; %% 自定义的误差函数层 net.layers{end+1}= struct('type', 'custom', ... 'forward', @forwardFunc , ... % 'backward', @backwardFunc) ; end function resIp1= forwardFunc(layer, resI, resIp1) % 计算数据项误差 pos=layer.class==1; neg=layer.class==-1; resIp1.x= mean(max(0, 1 - resI.x(pos))) + ... mean(max(0, resI.x(neg))); end %后向传播,,求导;;;注意layer.class为该batch内图片的labels。 function resI = backwardFunc(layer, resI, resIp1) %计算导数 pos=layer.class==1; neg=layer.class==-1; resI.dzdx=- single(resI.x < 1 & pos) / sum(pos(:)) + ... + single(resI.x > 0 & neg) / sum(neg(:)) ; end
发表评论
-
windows 10下安装GPU版MXNet
2016-06-03 21:28 8600上回说到编译CPU版的MXNet: http://cheris ... -
mxnet资料汇总
2016-05-23 23:13 0MXNet设计和实现简介(中文版):http://mxnet. ... -
windows下安装CPU版mxnet
2016-05-23 23:14 17619MXnet (mix net)类似Caffe,Tensorfl ... -
Matlab中的面向对象编程
2015-12-20 22:43 2702官方文档:http://cn.mathwo ... -
matalb中struct的诡异构造方式
2015-12-16 19:37 1098读MatConvNet代码时被struct坑了,特此记录!!! ... -
Convex Optimization 相关资源汇总
2015-09-26 21:02 36761、Stephen P. Boyd主页 http://stan ... -
matlab下GPU编程笔记
2015-06-27 18:00 2686不多说,直接上代码 gpuDevice % 查看系统中 ... -
matlab显示、存储透明图像
2015-06-14 22:00 7656matlab显示、存储透明图像 ,alpha通道是另外读取的, ... -
matlab绘制色盘&色调混合模式
2015-06-13 19:25 27601、绘制色盘 代码统一放到最后。 结果如下 2、色调( ... -
优化算法L-BFGS资源索引
2014-09-29 15:40 1951非常赞的一组介绍L-BFGS的博文:http://blog.c ... -
吐槽一下UFLDL上神经网络反向传播算法的公式
2014-09-28 21:52 4108在斯坦福的神经网络课件的反向传播算法一节(http://ufl ... -
matlab的mexFunction中使用std::cout(部分转载)
2014-09-27 15:37 2169在matlab、C++混合编程的时候,可能会用到之前的代码。代 ... -
sigmoid 函数
2014-09-14 17:28 4712神经网络里常常见到sigmoid函数(又称logistic函数 ... -
matlab矩阵转为Eigen库中的矩阵
2013-11-01 14:25 3979在matlab,C++联合编程的 ... -
还Matlab 一个洁净的输出
2013-05-08 15:17 1828程序要跑很长时间,时常输出点儿结果以便观察程序进度是个不错的习 ... -
概率图(Probabilistic Graphical Models )笔记--Week1,贝叶斯网络
2013-04-22 11:44 0这一周是有向图,也就是节点之间有因果关系的图。(causal ... -
SVM笔记--要点
2013-04-15 20:32 24890、心得 很多问题能在FAQ中找到:http://www.c ... -
matlab文件组织,package文件夹,private文件夹
2013-04-04 11:43 4611把所有的文件放到一个 ... -
Visual Studio 中创建项目模板——以matlab ,C++混合编程工程为例
2013-01-16 15:28 3420写的程序多为小程序,配置基本差不多。每次都要配置Include ... -
矩阵微分笔记
2013-01-08 09:27 11268自己学习矩阵微分的笔记,包含了迹函数、行列式函数以及逆矩阵的求 ...
相关推荐
【SSD5 Optional Excise3 答案详解】 在信息技术领域,SSD5通常指的是固态硬盘(Solid State Drive)的第五代技术,它带来了更快的读写速度、更低的延迟以及更高的耐用性。Optional Exercise 3可能是一个关于SSD5...
在解压后的“ssd6-excise4最终答案”文件中,可能会包含详细的步骤记录、配置截图、日志文件等,用于展示和验证优化过程及结果。对于想要学习SSD优化的人来说,这是一个宝贵的实践案例,值得深入研究和学习。
在这个"OpelGL3.3_GetStarted_Texture_Excise3"教程中,我们将深入探讨如何在OpenGL 3.3环境中开始使用纹理,并通过实例进行练习。 纹理映射是计算机图形学中的核心概念,它允许我们在3D模型上应用2D图像,从而增加...
SSD5,全称为Single Shot MultiBox Detector v5,是一种基于深度学习的目标检测算法,它在计算机视觉领域中被广泛应用。这个"icarnegie - SSD5 - Excise1"是针对SSD5的一个教程,旨在帮助学习者掌握该模型的核心概念...
Excise11.py
这个场景中提到的"excise_1.zip"可能是一个包含资源或代码的压缩文件,用于实现PC端的图片查看功能,并且涉及到JavaScript(js)技术。现在我们来深入探讨相关的知识点。 首先,PC端图片查看通常是指在桌面应用程序...
同时,这对于那些想要为《The Excise》系统开发Java应用的人来说,是一个极好的资源库,他们可以在此基础上构建符合该操作系统需求的应用程序。 总之,《The Excise》作为一个开源的Linux派生系统,与Java的结合为...
excise Programexcise Programexcise Programexcise Programexcise Programexcise Programexcise Programexcise Program
全部是自己做的 绝对百分百正确率啊 而且我是网络高手啊
SSD3-Exercise-2 SSD3-Exercise-2 SSD3-Exercise-2 SSD3-Exercise-2 SSD3-Exercise-2 SSD3-Exercise-2 SSD3-Exercise-2 SSD3-Exercise-2
根据题目要求,我们将对SSD7-EXCISE5中的实体类型、属性及关系类型进行详细解析。 ### 实体类型及其属性 #### Book - **ISBN(PK)**:单值属性,作为Book实体的主键。 - **AuthorID**:多值属性,表示一本书可能有...
"SSD7excise7答案文档+代码"暗示了提供的内容不仅有答案,还有实现这些答案的源代码。 在描述中再次强调了这是练习7的答案,但没有提供额外的具体信息。通常,这样的解答文档会包含对问题的理解、解题步骤、关键...
ERP系统信息化资料:SAP专业教材资料CIN Excise Invoice for SD (Return).doc
【school_excise:作业】是针对Java编程语言的一个学习项目,旨在帮助学生或者初学者巩固和深化Java基础知识,提升编程技能。在这个项目中,我们可能会遇到各种与Java相关的知识点,包括但不限于基本语法、数据结构...
压缩包中的"Exercise6"文件很可能包含对上述一个或多个领域的具体问题解答,可能有伪代码、流程图、源代码示例等形式。学生通过对照这些答案,可以评估自己的解题思路是否正确,理解是否有遗漏,从而加深对课程内容...
3. **SSD控制器**:SSD中的控制器负责管理和优化数据传输、错误校验、磨损均衡等关键功能。分析控制器如何影响SSD的性能和寿命。 4. **I/O接口**:SSD与计算机系统间的通信通常通过SATA、PCIe或M.2接口进行。了解...
BT种子文件是BitTorrent网络中用于共享文件的一种特殊文件,其内部包含了参与文件共享的用户所需要的所有信息。本文将深入探讨BT种子文件的工作原理、BT代码技术、BT下载与迅雷下载的区别,以及如何分析BT种子文件。...
由于提供的信息有限,具体的练习内容和解题策略无法详细展开,但以上所述的知识点为一般软件工程练习可能涵盖的范围。在实际的学习过程中,学生可以通过分析和实现Exercise 1中的问题,深化对这些概念的理解,并提升...
在C++编程中,文件传输是一项基础且重要的任务,它涉及到输入输出流(IO)以及网络通信技术。本文将深入探讨在Visual Studio 2005环境下,如何使用C++的ifstream和ofstream类进行文件读写,并结合socket编程实现文件...
消费税一个基于编写功能样式(类似React)的Web组件的安装npm install excise 或尝试在Chrome中使用 。用法基本的您将需要一个支持自定义元素v1和shadow dom v1的浏览器。 chrome 55可以使用。 const { define , ...