CNN基础及开发环境搭建(综合参考)

CNN基础及环境搭建

Author:王帅;Mail:[email protected]

目前,深度学习在解决图像分类,语音识别等问题上获得了已知的最优结果,该系列算法越来越受到学术界和工业界的重视。何为深度学习?一个直观的解释是如果一个机器学习算法在建模的过程中使用了多层的自动特征表示,则该机器学习算法可以称之为深度学习算法,也就是该机器学习算法可以自动地计算特征的特征表示。而卷积神经网络(以下简称为CNN)则是深度学习中最基础且有效的算法,CNN虽然最早由KunihikoFukushima提出,但是却因YannLeCun和Yoshua Bengio等人的改进实现而为人熟知,据说其实现的LeNet-5至今仍然被用于手写数字的识别(LeNet-5的简单介绍请参考博文blog.csdn.net/xuanyuansen/article/details/41800721)。为什么要提到这两位大牛呢?因为二人目前都是深度学习领域的执牛耳者,YannLeCun目前供职于FaceBook人工智能实验室,而YoshuaBengio仍然在学术界,既然提到了这二位,就不能不提到Google的GeoffreyE.
Hinton和百度的AndrewNg,而Andrew Ng和YoshuaBengio都是Michael I. Jordan的学生,Jordan大神的实验室真可谓是机器学习领域的豪门(豪门盛宴请见www.cs.berkeley.edu/~jordan/sail2010.jpg)。

下面进入正题,目前CNN的开源实现很多,而且随着硬件技术的进步(此处应向Nvidia公司致敬,总裁是华人哦),使用GPU来进行神经网络算法的训练及实现已经成为主流。本文将简单介绍三种基于GPU的开源实现(均在Ubuntu14.04X64环境中成功运行)以及LeNet-5的个人简单实现。三种基于GPU的实现分别是DeepNet,Caffe和Theano,注意DeepNet和Theano均为Python实现,Caffe也大量利用了Python的各种库(其余用C/C++实现)。这三种开源环境均包含了很多机器学习算法(包含深度学习算法),CNN只是其一。GPU计算的基础是Nvidia的CUDA环境,所以先介绍Ubuntu14.04X64环境下的CUDA安装。

CUDA的下载地址在https://developer.nvidia.com/cuda-downloads,安装的步骤请见http://blog.csdn.net/xuanyuansen/article/details/43152311,此处需要特别注意的是要删除Ubuntu系统自带的开源显卡驱动,以及要彻底删除原系统自带的Nvidia相关的包。

一、DeepNet安装

DeepNet的下载地址是https://github.com/nitishsrivastava/deepnet,利用git命令可以直接checkout下来,该源码包的作者是nitishsrivastava(GeoffreyE. Hinton的印度学生),其安装过程按照源码包中的INSTALL.txt说明即可,需要注意的该源码包的演示所用的数据不能用原始的MNIST数据,而要使用经过处理的MNIST数据,下载地址为http://www.cs.toronto.edu/~nitish/deepnet/mnist.tar.gz。其它需要注意的是需确认Ubuntu系统的python环境是否包含了Numpy和Scipy这两个包,如果没有的话需要提前安装。DeepNet实现了六种模型,分别是:Feed-forwardNeural
Nets;RestrictedBoltzmann Machines;DeepBelief Nets;Autoencoders;DeepBoltzmann Machines;ConvolutionalNeural Nets。

二、Caffe安装

Caffe的安装较为复杂,而且坑也比较多(OMG)。Caffe的下载地址为https://github.com/BVLC/caffe,安装的详细过程参见Caffe的官方安装指南http://caffe.berkeleyvision.org/installation.html,以及某位牛人的博客文章(写的非常好)http://www.cnblogs.com/platero/p/3993877.html,关于CUDA安装的部分可以直接略过,这里需要注意的有三个地方,一是IntelMKL的安装,该软件包获得很麻烦,可以直接使用OpenBLAS或者atlas代替(个人使用了OpenBLAS),一定记得在Caffe的配置文件中正确配置该项。二是OpenCV的安装,用原始的源码包会出错,解决方法在:http://code.opencv.org/issues/3814,下载NCVPixelOperations.hpp
替换掉opencv2.4.9内的文件,重新build。三是安装Python的Anaconda包后Caffe编译会出错,解决方法是:删除anaconda/lib/下面的libm,命令为sudo rm -rf libm*(参见博客链接http://blog.csdn.net/ccemmawatson/article/details/42004105)。

Caffe安装好后就可以按照开发文档搭建CNN网络了,参见官方的Tutorial,http://caffe.berkeleyvision.org/tutorial/

三、Theano安装

Theano的安装非常简单,使用也非常方便,分分钟就可以搞定,文档及下载地址 http://deeplearning.net/software/theano/。基于Theano的CNN模型参见官方的教材,其实现非常方便,地址为http://www.deeplearning.net/tutorial/lenet.html#lenet

四、LeNet-5的个人简单Python实现(非GPU模式)

利用Python实现了LeNet-5的简单版本,首先是实现了多层神经网络,然后在此基础上实现了CNN,代码参见以下链接(代码中的BMNN2即多层神经网络的实现):

1、http://blog.csdn.net/xuanyuansen/article/details/41544153

2、http://blog.csdn.net/xuanyuansen/article/details/41924377

时间: 2024-11-05 23:25:43

CNN基础及开发环境搭建(综合参考)的相关文章

django开发环境搭建(参考流程)

django开发环境搭建(参考流程) 2013-08-08 01:09:06 分类: LINUX 原文地址:django开发环境搭建(参考流程) 作者:bailiangcn 对于一个初学者,在实际的开发环境中,应该采用什么的样的工具来开发django呢? 我想环境至少应该具备的特性有: 多版本python环境的支持 版本控制 自动测试框架 数据库支持迁移 部署的自动化 参考文档 主要参考的文档-英文 virtualenv介绍 VirtualEnv 和Pip 构建Python的虚拟工作环境 使用V

Android开发之JAVA基础__开发环境搭建

一.开发环境搭建 由于ANDROID的应用程序是使用JAVA语言编写的,所以,开发ANDROID的应用程序时,需要计算机具备开发.运行JAVA应用程序的条件.JAVA语言开发的应用程序需要:JDK(Java Development Kit),通常,JDK包含JRE(Java Runtime Envrioment).JDK是JAVA开发工具包,如果需要开发JAVA语言的程序,则计算机上必须安装和配置JDK.JRE就JAVA运行时系统,它是运行JAVA语言开发的程序的支撑.JDK是免费软件,可以直接

java基础之开发环境搭建

我们这里后续的所有课程都使用eclipse 来开发java代码,下面我们来搭建开发环境: 1.首先去java.sun.com去下载jdk,可以下载1.6 的版本2.安装JDK,最好安装在某个盘的跟目录如:D:\java\jdk1.6.0_323.设置环境变量:新建一个变量名字叫JAVA_HOME,值为你安装的jdk 路径如:D:\java\jdk1.6.0_324.下载eclipse from www.eclipse.org 去下载,我们可以下载j2ee 版本的,方便日后开发j2ee 程序5.把

Android基础入门教程——1.2 开发环境搭建

Android基础入门教程--1.2 开发环境搭建 现在主流的Android开发环境有: ①Eclipse + ADT + SDK ②Android Studio + SDK ③IntelliJ IDEA + SDK 现在国内大部分开发人员还是使用的Eclipse,而谷歌宣布不再更新ADT后,并且官网也去掉了集成Android开发环境的Eclipse下载链接,各种现象都表示开发者最后都终将过渡到Android Studio,当然这段过渡时间会很长,但如果你是刚学Android的话建议直接冲And

Java Web开发环境搭建基础[Windows篇]

1. 准备软件: JDK:(jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe) Tomcat:(apache-tomcat-7.0.54-windows-x86.zip) Eclipse:(eclipse-java-helios-SR1-win32.zip) MySQL:(mysql-5.5.20-win32.msi) MySQL JDBC:(mysql-connector-java-5.1.31.zip) Navicat for MySQL

Centos 基础开发环境搭建之Maven私服nexus

1. 软件 a) 下载Nexus 地址:http://www.sonatype.org/downloads/nexus-2.1.2-bundle.tar.gz b) 如无特殊说明,本文档操作用户为nexus c) nexus默认的管理员用户名密码是:admin/admin123 2. 安装 a) 解压 1 $ tar zxvf nexus-2.1.2-bundle.tar.gz b) 移动到其他目录 1 $ mv nexus-2.1.2 /home/nexus/nexus c) 设置为系统自启动

[java基础学习笔记]Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行

本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/25745945 主要内容: ---------------------------------------------------| 1.JDK的下载与安装                            | 2.编写第一个java程序HelloWorld     | 3.编译执行HelloWorld                      

安卓开发基础知识0(五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程)

需求说明:安卓开发 内容       :安卓开发所需的环境搭建 来自       :时间的诗 原文:http://www.cnblogs.com/zoupeiyang/p/4034517.html 参考:http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html 引言 在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为

S2SH开发环境搭建、框架整合、项目基础环境搭建

S2SH开发环境搭建.框架整合.项目基础环境搭建 1.S2SH框架整合 新建项目s2sh: 1.1添加jar包 1.1.1添加Struts的jar包 添加如下的jar包: commons-fileupload-1.2.2.jar commons-io-2.0.1.jar freemarker-2.3.19.jar ognl-3.0.5.jar struts2-core-2.3.4.1.jar xwork-core-2.3.4.1.jar 疑惑:这些jar可以从哪里获得呢? 对于一个框架来说,别人