现在有空整理一下关于深度学习中怎么加入dropout方法来防止测试过程的过拟合现象。

首先了解一下dropout的实现原理:

这些理论的解释在百度上有很多。。。。

这里重点记录一下怎么实现这一技术

参考别人的博客,主要http://www.cnblogs.com/dupuleng/articles/4340293.html

讲解一下用Matlab中的深度学习工具箱怎么实现dropout

首先要载入工具包。DeepLearn Toolbox是一个非常有用的matlab deep learning工具包,下载地址:https://github.com/rasmusbergpalm/DeepLearnToolbox

要使用它首先要将该工具包添加到matlab的搜索路径中,

1、将包复制到matlab 的toolbox中,作者的路径是D:\program Files\matlab\toolbox\

2、在matlab的命令行中输入:  

cd D:\program Files\matlab\toolbox\deepLearnToolbox\
addpath(gepath('D:\program Files\matlab\toolbox\deepLearnToolbox-master\')
savepath %保存,这样就不需要每次都添加一次

3、验证添加是否成功,在命令行中输入

which saesetup

果成功就会出现,saesetup.m的路径D:\program Files\matlab\toolbox\deepLearnToolbox-master\SAE\saesetup.m

4、使用deepLearnToolbox 工具包,做一个简单的demo,将autoencoder模型使用dropout前后的结果进行比较。

load mnist_uint8;
train_x = double(train_x(:,:)) / ;
test_x = double(test_x(:,:)) / ;
train_y = double(train_y(:,:));
test_y = double(test_y(:,:)); %% //实验一without dropout
rand('state',)
sae = saesetup([ ]);
sae.ae{}.activation_function = 'sigm';
sae.ae{}.learningRate = ;
opts.numepochs = ;
opts.batchsize = ;
sae = saetrain(sae , train_x , opts );
visualize(sae.ae{}.W{}(:,:end)'); nn = nnsetup([ ]);% //初步构造了一个输入-隐含-输出层网络,其中包括了
% //权值的初始化,学习率,momentum,激发函数类型,
% //惩罚系数,dropout等 nn.W{} = sae.ae{}.W{};
opts.numepochs = ; % //Number of full sweeps through data
opts.batchsize = ; % //Take a mean gradient step over this many samples
[nn, ~] = nntrain(nn, train_x, train_y, opts);
[er, ~] = nntest(nn, test_x, test_y);
str = sprintf('testing error rate is: %f',er);
fprintf(str); %% //实验二:with dropout
rand('state',)
sae = saesetup([ ]);
sae.ae{}.activation_function = 'sigm';
sae.ae{}.learningRate = ; opts.numepochs = ;
opts.bachsize = ;
sae = saetrain(sae , train_x , opts );
figure;
visualize(sae.ae{}.W{}(:,:end)'); nn = nnsetup([ ]);% //初步构造了一个输入-隐含-输出层网络,其中包括了
% //权值的初始化,学习率,momentum,激发函数类型,
% //惩罚系数,dropout等
nn.dropoutFraction = 0.5;
nn.W{} = sae.ae{}.W{};
opts.numepochs = ; % //Number of full sweeps through data
opts.batchsize = ; % //Take a mean gradient step over this many samples
[nn, L] = nntrain(nn, train_x, train_y, opts);
[er, bad] = nntest(nn, test_x, test_y);
str = sprintf('testing error rate is: %f',er);
fprintf(str);

深度学习中dropout策略的理解的更多相关文章

  1. 深度学习中Dropout原理解析

    1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象. 在训练神经网络的时候经常会遇到过拟合的问题 ...

  2. Hebye 深度学习中Dropout原理解析

    1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象. 在训练神经网络的时候经常会遇到过拟合的问题 ...

  3. 2.深度学习中的batch_size的理解

    Batch_Size(批尺寸)是机器学习中一个重要参数,涉及诸多矛盾,下面逐一展开. 首先,为什么需要有 Batch_Size 这个参数? Batch 的选择,首先决定的是下降的方向.如果数据集比较小 ...

  4. 从极大似然估计的角度理解深度学习中loss函数

    从极大似然估计的角度理解深度学习中loss函数 为了理解这一概念,首先回顾下最大似然估计的概念: 最大似然估计常用于利用已知的样本结果,反推最有可能导致这一结果产生的参数值,往往模型结果已经确定,用于 ...

  5. 深度学习中 --- 解决过拟合问题(dropout, batchnormalization)

    过拟合,在Tom M.Mitchell的<Machine Learning>中是如何定义的:给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比 ...

  6. 【转载】深度学习中softmax交叉熵损失函数的理解

    深度学习中softmax交叉熵损失函数的理解 2018-08-11 23:49:43 lilong117194 阅读数 5198更多 分类专栏: Deep learning   版权声明:本文为博主原 ...

  7. 深度学习中正则化技术概述(附Python代码)

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 磐石 介绍 数据科学研究者们最常遇见的问题之一就是怎样避免过拟合. ...

  8. 深度学习中优化【Normalization】

    深度学习中优化操作: dropout l1, l2正则化 momentum normalization 1.为什么Normalization?     深度神经网络模型的训练为什么会很困难?其中一个重 ...

  9. zz详解深度学习中的Normalization,BN/LN/WN

    详解深度学习中的Normalization,BN/LN/WN 讲得是相当之透彻清晰了 深度神经网络模型训练之难众所周知,其中一个重要的现象就是 Internal Covariate Shift. Ba ...

随机推荐

  1. CMake 常用方法

    CMake 允许开发者编写平台无关的 CMakeLists.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Linux 的Makefi ...

  2. leetcode 704. Binary Search 、35. Search Insert Position 、278. First Bad Version

    704. Binary Search 1.使用start+1 < end,这样保证最后剩两个数 2.mid = start + (end - start)/2,这样避免接近max-int导致的溢 ...

  3. Mysql字段名与保留字冲突导致的异常解决

    一:引言 用hibernate建表时经常遇到的一个异常:Error executing DDL via JDBC Statement 方法: 查看报错sql语句.问题就在这里. 我是表名(字段名)与保 ...

  4. webpack 中版本兼容性问题错误总结

    一定不要运行npm i  XXX  -g(-d) 一定要指定版本,尽量低版本,也不最新版本,会导致不兼容和指令不一样的问题. 1.安装webpack-dev-server 报错,说需要webpack- ...

  5. 基于HTTP可供浏览器调用的本地打印程序

    之前给公司做打印都是用ActiveX控件,只支持IE浏览器,最近需要支持谷歌,又不想去学谷歌插件编写,于是就用本地启动一个http服务器来供浏览器调用(写成windows服务更好),同事用了都说好(笑 ...

  6. IIS 日志导入到数据库的方法

    使用微软Log Parser 执行 logparser "SELECT * FROM d:\iislogs\u_ex18071705.log TO myTableName" -o: ...

  7. 十二、存token获取token刷新token发送header头

    //测试token //获取token function setToken(data){ var storage = window.localStorage; if(!storage){ alert( ...

  8. p2394 精度题

    题意:输出n/23即可 解法一: 利用高精度的long double直接输出,但由于n的长度不确定,我们要加个限制%12Lf #include <cstdio> int main(){ l ...

  9. Python删除list里面的重复元素的俩种方法

    1.使用set函数  In [116]: a=[1,2,3,2,1,3,4,5,6,5] In [117]: set(a) Out[117]: {1, 2, 3, 4, 5, 6} 2.使用字典函数 ...

  10. p86商空间也是Banach空间

    1.为什么要引入Zk? 2.为什么这个等式成立,和为什么要引入uk? 3.为什么为什么等于0? 属于M,则商空间是0元,p128最上面的第二个笔记