读本篇论文“Batch-normalized Maxout Network in Network”的原因在它的mnist错误率为0.24%,世界排名第4。并且代码是用matlab写的,本人还没装cafe……

 理论知识

本文是台湾新竹国立交通大学的Jia-Ren Chang 写的,其实要说这篇文章有多在的创新,还真没有,实际上它就是把三篇比较新的论文的东西组合起来,分别是这三篇:

1.Network in network :ICLR 2014

2.Maxout Networks :ICML 2013

3.Batch normalization: Accelerating deep network training by reducing internal covariate shift :ICML 2015

把这三篇文章中的NIN、Maxout、BN组合为一个MIN模块,从而由3个MIN模块+softmax连成一个新的网络结构,见如下:

所以,要看懂这篇论文只需要盾懂这三篇即可,所以我们非常有必要读这三篇最近几年非常经典的论文。

一些matlab函数

fullfile

fullfile函数作用是利用文件各部分信息创建并合成完整文件名。
用法:
fullfile('dir1', 'dir2', ..., 'filename')
f = fullfile('dir1', 'dir2', ..., 'filename')
具体例子:
输入:f = fullfile('C:','Applications','matlab','fun.m') 得到:f =C:\Applications\matlab\fun.m

fileparts

函数功能:在FreeMat、Matlab中,该函数用于将一个文件的完整路径中各部分提取出来。
语法格式:
[pathstr, name, ext, versn] = fileparts(filename)
其中filename是要解析的文件的完整路径,例如:E:\games\IGI\bin\IGI.exe。fileparts将这个文件名(包含完整路径信息)各部分分别提取到四个变量中。
其中pathstr是这个文件的路径名,name是文件名,ext是包含一个点号文件的扩展名(指定了文件的类型)。matlab帮助文档中指明,第四个参数将在未来版本中舍弃。
 
>> filename = 'E:\games\IGI\bin\IGI.exe';
>> [pathstr, name, ext, versn] = fileparts(filename)
pathstr =E:\games\IGI\bin
name =IGI
ext =.exe
versn = ''
 

mfilename

函数功能: 返回当前正在运行的函数所在文件的路径。
语法格式:
mfilename
p = mfilename('fullpath')
c = mfilename('class')
 

若在函数内部要获取自己的全路径,也可以使用mfilename函数:

比如运行startup.m函数时:

a = mfilename('fullpath');
% a = 'D:\Program Files\MATLAB\toolbox\local\startup'

注意mfilename返回的值不带文件类型后缀

isfield

函数功能: 判断输入是否是结构体数组的域(成员)。
调用格式:
tf = isfield(S, 'fieldname')
检查结构体S是否包含由fieldname指定的域, 如果包含, 返回逻辑1; 如果S不包含fieldname域或者S不是结构体类型的, 返回逻辑0。
程序示例
close all; clear; clc;
student = struct('name', 'John', 'age', 20, 'score', 90);
fprintf('Is ''name'' a field of student structure? %dn',isfield(student, 'name'));
fprintf('Is ''salary'' a field of student structure? %dn',isfield(student, 'salary'));
isfield(student, {'name', 'salary', 'score'})
输出结果:
Is 'name' a field of student structure? 1
Is 'salary' a field of student structure? 0
ans =     1     0     1
 
 
 
arrayfun函数用于对数组中每个元素进行相同的函数操作。
 
sprintf('%03d',i),是将数字转化为字符串,03的意思是要变成3位数,不足3位的前面补零。
 
 
 
4.从原代码中可看出结构:
conv1--BN--maxout layer1(maxoutconv1--BN--maxout)--maxoutlayer2(maxoutconv2--BN--maxout--pool1--dropout)--
conv2--BN--maxout layer1(maxoutconv3--BN--maxout)--maxoutlayer2(maxoutconv4--BN--maxout--pool2--dropout)--
conv3--BN--maxout layer1(maxoutconv5--BN--maxout)--maxoutlayer2(maxoutconv6--BN--maxout--pool3)-----softmax
 
 

Deep Learning 24:读论文“Batch-normalized Maxout Network in Network”——mnist错误率为0.24%的更多相关文章

  1. Deep Learning中的Large Batch Training相关理论与实践

    背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 在分布式训练时,提高计算通信占比是提高计算加速比的有效手段,当网络通信优化到一 ...

  2. 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))

    需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 说明:图文并茂,言简意赅. 自今年七月份 ...

  3. Deep Learning 27:Batch normalization理解——读论文“Batch normalization: Accelerating deep network training by reducing internal covariate shift ”——ICML 2015

    这篇经典论文,甚至可以说是2015年最牛的一篇论文,早就有很多人解读,不需要自己着摸,但是看了论文原文Batch normalization: Accelerating deep network tr ...

  4. Neural Networks and Deep Learning(week2)Logistic Regression with a Neural Network mindset(实现一个图像识别算法)

    Logistic Regression with a Neural Network mindset You will learn to: Build the general architecture ...

  5. Deep Learning 学习笔记(6):神经网络( Neural Network )

    神经元: 在神经网络的模型中,神经元可以表示如下 神经元的左边是其输入,包括变量x1.x2.x3与常数项1, 右边是神经元的输出 神经元的输出函数被称为激活函数(activation function ...

  6. 论文解读(DCN)《Towards K-means-friendly Spaces: Simultaneous Deep Learning and Clustering》

    论文信息 论文标题:Towards K-means-friendly Spaces: Simultaneous Deep Learning and Clustering论文作者:Bo Yang, Xi ...

  7. Deep Learning in NLP (一)词向量和语言模型

    原文转载:http://licstar.net/archives/328 Deep Learning 算法已经在图像和音频领域取得了惊人的成果,但是在 NLP 领域中尚未见到如此激动人心的结果.关于这 ...

  8. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  9. Word2Vec之Deep Learning in NLP (一)词向量和语言模型

    转自licstar,真心觉得不错,可惜自己有些东西没有看懂 这篇博客是我看了半年的论文后,自己对 Deep Learning 在 NLP 领域中应用的理解和总结,在此分享.其中必然有局限性,欢迎各种交 ...

随机推荐

  1. 代码review之 isInfoEnable()

    上周没事扫扫系统原来的代码,突然发现这样一段代码: if(log.isInfoEnable()) { log.info("ID"+userID+"pwd"+us ...

  2. simvision使用

    Access Design Source Code: 1)通过file---open来打开, 2)通过send to source viewer来看, 双击信号,进行driver的trace,显示在左 ...

  3. Extjs 一些配置以及方法

    1.例如想要实现以下功能,本来model中只有用户的firstname和lastname,但是在grid中展示还需要展示用户姓名,或者只展示用户姓名

  4. 浅谈JDBC编程

    一.概述 1.为什么要用JDBC 数据库是程序不可或缺的一部分,每一个网站和服务器的建设都需要数据库.对于大多数应用程序员(此处不包含数据库开发人员)来说,我们更多的不是在DBMS中对数据库进行操纵, ...

  5. Web 播放声音 — Flash 篇 (播放 AMR、WAV)

    本文主要介绍 Flash 播放 AMR 格式 Base64码 音频. 在此之前么有接触过 Flash ,接触 AS3 是一头雾水,不过幸好有 TypeScript 和 JavaScript 的基础看起 ...

  6. .NET分布式事务处理

    在进行数据持久化的时候,我们会经常用到事务处理.一般情况下,ADO.NET中的事务处理就能够满足我们的需要,但是,ADO.NET中的事 务不能同事对多个数据库连接进行原子性的操作:如果在你的业务环境中 ...

  7. XMLPuLL解析

    1 package com.bawei.day14_xmlpull; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 i ...

  8. 中文乱码~Windows 7

    1.安装匹配的中文语言包 2.安装中文字体

  9. C语言 05 数组

    数组作为函数参数,可以省略元素个数. 数组作为函数参数,传递是整个数组的地址,修改函数形参数组的值,会影响到外面的 实参数组. 基本数据类型作为函数参数,传递是数值.

  10. babel 解构赋值无法问题

    这个东西需要第二级, babel-preset-stage-2,然后再presets里引入stage-2的设置,再plugins离引入对应的插件 { "presets": [&qu ...