2019-02-19 17:09:12 qq907482638 阅读数 88
  • 深度学习框架Caffe入门

    本课程在windows下搭建CPU版本Caffe环境,便于初学者学习和调试。通过实例介绍了Caffe的的训练和预测方法以及对应的python接口,便于大家掌握Caffe常用的训练和预测方法;结合以图形化的方式介绍网络结构、训练的loss/精度变化、代码框架梳理;还涉及到项目上Caffe更高级的应用:添加python自定义层及新增一个已有的c++层;介绍了深度学习网络训练的原理,结合Caffe的前向、反向传播的实现进行验证;最后修改一个已有的网络模型,使用项目上更常用的方式进行 网络训练。

    102 人正在学习 去看看 柳毅

matlab + caffe cpu-only做深度学习测试 on windows 10

为什么会使用cpu-only呢?
很多论文的代码都是由caffe+matlab写的。
为了验证作者是否真的能达到那么好的效果。
所以不需要GPU进行训练。只需要做预测看看效果就行了。

涉及到的命令请全程使用powershell

参考文章

win7+vs2015/13+caffe+matlab+python(CPU only)配置 - 生如蚁,美如神 - CSDN博客
https://github.com/happynear/caffe-windows

cmake 安装

CMake下载地址
选择x64 .msi的文件
安装的时候记得勾选添加到环境变量,这样就不用手动添加了

matlab

安装matlab for windows

python2.7

使用的是
miniconda传送门

  1. 最好使用miniconda with python2.7. 这样可以省去很多麻烦的步骤。
  2. 没有测试python3.7能不能使用。python3.7不兼容python3.6。
  3. 安装的时候记得勾选add anaconda to environment path。
  4. 打开powershell,安装依赖
# 原文这里是使用pip安装的protobuf但是我的环境会报错。所以我继续使用conda安装protobuf
conda install --yes numpy scipy matplotlib scikit-image pip protobuf

安装visual studio 2015

为了使用它的编译器。出于简单化,我直接装了整个visual studio。而不是单纯的编译器。安装选项只选了visual c++桌面开发 和python。如果要编译pycaffe可能有需要勾选python。

# vs2015中文社区版
ed2k://|file|cn_visual_studio_community_2015_x86_dvd_6847368.iso|4013920256|EB7F6605EDE67509E218E29173AC6574|/
# vs2015 英文社区版
ed2k://|file|en_visual_studio_community_2015_x86_dvd_6847364.iso|3965825024|6A7D8489BB2877E6BB8ACB2DD187B637|/

##下载caffe源码
caffe windows分支

# 网速好的使用git clone 
git clone https://github.com/BVLC/caffe.git

设置选项

  1. 使用编辑器 打开…\caffe-windows\scripts\build_win.cmd
  2. 下面就是各种选项
if DEFINED APPVEYOR (
    echo Setting Appveyor defaults
    if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14
    if NOT DEFINED WITH_NINJA set WITH_NINJA=0
    if NOT DEFINED CPU_ONLY set CPU_ONLY=1
    if NOT DEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Auto
    if NOT DEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release
    if NOT DEFINED USE_NCCL set USE_NCCL=0
    if NOT DEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0
    if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=3
    if NOT DEFINED BUILD_PYTHON set BUILD_PYTHON=1
    if NOT DEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1
    if NOT DEFINED BUILD_MATLAB set BUILD_MATLAB=1
    if NOT DEFINED PYTHON_EXE set PYTHON_EXE=python
    if NOT DEFINED RUN_TESTS set RUN_TESTS=1
    if NOT DEFINED RUN_LINT set RUN_LINT=1
    if NOT DEFINED RUN_INSTALL set RUN_INSTALL=1
  1. 建议是直接复制选项,而不是修改后面的数值。 可能直接修改并不会生效。
  2. 最终做法结果
set WITH_NINJA=0    #下面都是直接复制出来的,需要修改的地方
set BUILD_MATLAB=1  
set CPU_ONLY=1      
set USE_NCCL=0
set PYTHON_VERSION=2
set BUILD_PYTHON_LAYER=1
if DEFINED APPVEYOR (
    echo Setting Appveyor defaults
    if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14
    if NOT DEFINED WITH_NINJA set WITH_NINJA=0
    ................................
  1. 更改python 2路径
if !PYTHON_VERSION! EQU 2 (
        set CONDA_ROOT=C:\Users\zoudaiyu\Miniconda2 #这里改成你的anaconda/miniconda2的主目录
    )
  1. build_win.cmd 设置完毕

开始编译

下载第三方依赖

下载地址
libraries_v120_x64_py27_1.1.0.tar.bz2
libraries_v140_x64_py27_1.1.0.tar.bz2 我用的这一个
libraries_v140_x64_py35_1.1.0.tar.bz2
我们上面使用的是conda with python 2.7所以选择py27。使用的是visual studio2015所以选择v140,如果是vs2015以前的版本选v120。
所以我选择的是libraries_v140_x64_py27_1.1.0.tar.bz2
最后把下载的文件,不解压直接复制到

# 英文系统
C:\Users\登录用户名\.caffe\dependencies\download\libraries_v140_x64_py27_1.1.0.tar.bz2

# 中文系统
C:\用户\登录用户名\.caffe\dependencies\download\libraries_v140_x64_py27_1.1.0.tar.bz2

执行刚刚设置好的build_win.cmd

  1. 在文件管理器,进入caffe-windows\scripts目录
  2. 空白处按住shift+点鼠标右键,然后打开powershell。
  3. 输入build_win.cmd
  4. 回车运行

配置环境变量

C:\Users\自己的用户名\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\bin 
C:\Users\自己的用户名\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\lib 
C:\Users\自己的用户名\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\x64\vc14\bin

编译caffe

执行完build_win.cmd后,caffe-windows\script\下产生一个caffe.sln文件。使用vs 2015打开

  1. 在左边caffe 的解决方案中,选中caffe目录,鼠标右键设置为 “设为启动项目”
  2. 点击生成caffe
  3. 继续在解决方案中找到matlab目录,鼠标右键设置为 “设为启动项目”
  4. 点击生成matlab
  5. pycaffe等封装,操作一样。

测试配置

请参考win7+vs2015/13+caffe+matlab+python(CPU only)配置 - 生如蚁,美如神 - CSDN博客

2019-08-09 11:10:29 zaishuiyifangxym 阅读数 1733
  • 深度学习框架Caffe入门

    本课程在windows下搭建CPU版本Caffe环境,便于初学者学习和调试。通过实例介绍了Caffe的的训练和预测方法以及对应的python接口,便于大家掌握Caffe常用的训练和预测方法;结合以图形化的方式介绍网络结构、训练的loss/精度变化、代码框架梳理;还涉及到项目上Caffe更高级的应用:添加python自定义层及新增一个已有的c++层;介绍了深度学习网络训练的原理,结合Caffe的前向、反向传播的实现进行验证;最后修改一个已有的网络模型,使用项目上更常用的方式进行 网络训练。

    102 人正在学习 去看看 柳毅

在这里插入图片描述

注:转载请标明原文出处链接:https://xiongyiming.blog.csdn.net/article/details/98944012


1 什么是深度学习?

深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。
深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。
深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。
(以上均来自百度百科)

下面了解一下人工智能、机器学习和深度学习之间的关系。下图是三者之间的关系,可以看出三者之间是包含和被包含的关系。

在这里插入图片描述



2 深度学习应用

2.1 机器学习的一般方法

机器学习按照方法主要可以分为两大类:监督学习和无监督学习。其中监督学习主要由分类和回归等问题组成,无监督学习主要由聚类和关联分析等问题组成。深度学习则属于监督学习当中的一种。下图为监督学习的一般方法。
在这里插入图片描述

2.2 深度学习的一般方法

随着深度学习的爆发,最新的深度学习算法已经远远超越了传统的机器学 习算法对于数据的预测和分类精度。深度学习不需要我们自己去提取特征,而是自 动地对数据进行筛选,自动地提取数据高维特征。下图为深度学习的一般方法,与传统机器学习中的监督学习一般方法(如上图)相比,少了特征工程,节约了工程师们大量工作时间。

在这里插入图片描述
神经网络应用的突破领域之一是控制论,神经网络有着一套完美的反馈机制,给控制论增添了不少色彩。而深度学习的出现就 如寒武纪生命大爆发一样,前几年我们或许听到更多的是大数据处理、数据挖掘, 而如今在科技创新的生态中,几乎每个人都在谈论深度学习、人工智能。下面简单 来介绍关于深度学习的应用。

(1) 图像处理

在这里插入图片描述

(2) 自动驾驶

在这里插入图片描述

(3) 机器人
波士顿动力机器人

在这里插入图片描述


在这里插入图片描述


(4) 医疗健康诊断

在这里插入图片描述


在这里插入图片描述
深度学习技术己经开始渗透到每一个领域当中,使得机器学习能够实现更多的应用场景,并且极大地拓展了人工智能的领域范畴。从无人驾驶汽车、无人驾驶飞机,到生物医学的预防性诊断、病理预测,甚至是更加贴近年轻一代的电影推荐、购物指南,几乎所有领域都可以使用深度学习。



3 GPU的迅速发展

GPU (Graphics Processing Unit, 图形处理器) 作为硬件加速器之一,通过大量图形处理单元与 CPU 协同工作,对深度学习、数据分析,以及大量计算的工程应用进行加速 。 从 2007 年 NVIDIA 公司发布了第一个支持 CUDA 的 GPU 后, GPU 的应用范围不断拓展,从政府实验室、大学、企业的大型数据中心,到现今非常火热的人工智能汽车、无人驾驶飞机和机器人等嵌入式平台, GPU 都发挥着巨大的作用。
CUDA (Compute Unified Device Architecture, 统一计算设备架构)。随着显卡的发展, GPU 越来越强大, GPU 开始主要为显示图像做优化,在计算上已经超越了通用的 CPU 。 如此强大的芯片如果只是作为显卡就太浪费了,因此 NVIDIA 推出 CUDA 这一通用并行计算架构,该架构使 GPU 能够解决复杂的计算问题 。

3.1 GPU与显卡的区别

GPU只是显卡上的一个核心处理芯片,是显卡的心脏,不能单独作为外接扩展卡使用,GPU因并行计算任务较重,所以功耗较大,只能焊接在显卡的电路板上使用。显卡上都有GPU,它是区分显性能的最主要元件,显卡也叫显示适配器,分为独立显卡和主板上集成显卡,独立显卡主要由GPU、显存和接口电路构成,集成显卡没有独立显存而是使用主板上的内存。
GPU是图形处理器,一般GPU就是焊接在显卡上的,大部分情况下,我们所说GPU就等于指显卡,但是实际情况是GPU是显示卡的“心脏”,是显卡的一个核心零部件,核心组成部分。它们是“寄生与被寄生”关系。GPU本身并不能单独工作,只有配合上附属电路和接口,才能工作。这时候,它就变成了显卡
参考链接: https://baijiahao.baidu.com/s?id=1607965696317204020&wfr=spider&for=pc

3.2 GPU 与 CPU 区别

比较 GPU 和 CPU ,就是比较它们两者如何处理任务。如下图图 1-9 所示, CPU 使用几个核心处理单元去优化串行顺序任务,而 GPU 的大规模并行架构拥有数以千计的更小、更高效的处理单元,用于处理多个并行小任务。
CPU 拥有复杂的系统指令,能够进行复杂的任务操作和调度,两者是互补关系,而不能相互代替。
在这里插入图片描述

GPU 是大规模并行架构,处理并行任务毫无疑问是非常快的,深度学习需要高
效的矩阵操作和大量的卷积操作, GPU 的并行架构再适合不过。简单来说,确实如此,但是为什么 GPU 进行矩阵操作和卷积操作会比 CPU 要快呢?真正原因是 GPU具有如下特性
(1) 高带宽
(2) 高速的缓存性能
(3) 并行单元多

在执行多任务时, CPU 需要等待带宽,而 GPU 能够优化带宽。举个简单的例子,我们可以把 CPU 看作跑车, GPU 是大卡车,如下图图 1-10 所示任务就是要把一堆货物从北京搬运到广州。 CPU(跑车〉可以快速地把数据(货物〉从内存读入 RAM 中,然而 GPU (大卡车〉装货的速度就好慢了。不过后面才是重点, CPU (跑车)把这堆数据(货物)从北京搬运到广州|需要来回操作很多次,也就是往返京广线很多次,而 GPU (大卡车)只需要一 次就可以完成搬运(一次可以装载大量数据进入内存)。换言之, CPU 擅长操作小的内存块,而 GPU 则擅长操作大的内存块 。 CPU 集群大概可以达到 50GB/s 的带宽总量,而等量的 GPU 集群可以达到 750GB/s 的带宽量。

在这里插入图片描述

如果让一辆大卡车去装载很多堆货物,就要等待很长的时间了,因为要等待大卡车从北京运到广州,然后再回来装货物。设想一下,我们现在拥有了跑车车队和卡车车队(线程并行〉,运载一堆货物(非常大块的内存数据需要读入缓存,如大型矩阵)。我们会等待第一辆卡车,但是后面就不需要等待的时间了,因为在广州会有一队伍的大卡车正在排队输送货物(数据),这时处理器就可以直接从缓存中读取数据了。在线性并行的情况下, GPU 可以提供高带宽,从而隐藏延迟时间。这也就是GPU 比 CPU 更适合处理深度学习的原因。


3.3 GPU种类

特别是最近几年,随着 GPU处理能力的飞速进步 ,在 2012 年需要 l 个月才能完成的深度学习训练,在 2015 年只需几天即可完成 。 在这样的背景下,深度学习的发展恰逢其时,将会引发进一步的革新和发展。

对于深度学习的加速器 GPU,现在市面上主要的品牌有 AMD 、 NVIDIA 、Intel 的 Xeon Phi,如下图所示。
在这里插入图片描述
NVIDIA公司的GUP使用最为广泛,NVIDIA 的计算加速标准库 cuDNN 使得工程师在 CUDA 平台中构建深度学习变得非常容易,而且在同 一张显卡的前提下比没有使用 cnDNN 的速度提升 5 倍之多。有良好的生态。下图是NVIDIA公司的三种类型的GPU。
在这里插入图片描述
其中,
(1) GeForce 系列面向大众,常见的有:GeForce GTX 1080, GeForce GTX 1080 Ti, GeForce GTX 2080 Ti
(2) Tesla 系列面向科学计算
(3) Tegra 系列面向嵌入式的 GPU 主板



参考资料

[1] 图解深度学习
[2] 深度学习原理与实践
[3] TensorFlow实战Google深度学习框架(第2版)

2019-05-09 15:58:10 qq_33039859 阅读数 712
  • 深度学习框架Caffe入门

    本课程在windows下搭建CPU版本Caffe环境,便于初学者学习和调试。通过实例介绍了Caffe的的训练和预测方法以及对应的python接口,便于大家掌握Caffe常用的训练和预测方法;结合以图形化的方式介绍网络结构、训练的loss/精度变化、代码框架梳理;还涉及到项目上Caffe更高级的应用:添加python自定义层及新增一个已有的c++层;介绍了深度学习网络训练的原理,结合Caffe的前向、反向传播的实现进行验证;最后修改一个已有的网络模型,使用项目上更常用的方式进行 网络训练。

    102 人正在学习 去看看 柳毅
  • 方法一
import os
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"   # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"] = ""
  • 方法二
$ CUDA_VISIBLE_DEVICES="" ./your_keras_code.py

Can Keras with Tensorflow backend be forced to use CPU or GPU at will?

在这里插入图片描述

2017-03-20 15:10:15 u012693499 阅读数 1655
  • 深度学习框架Caffe入门

    本课程在windows下搭建CPU版本Caffe环境,便于初学者学习和调试。通过实例介绍了Caffe的的训练和预测方法以及对应的python接口,便于大家掌握Caffe常用的训练和预测方法;结合以图形化的方式介绍网络结构、训练的loss/精度变化、代码框架梳理;还涉及到项目上Caffe更高级的应用:添加python自定义层及新增一个已有的c++层;介绍了深度学习网络训练的原理,结合Caffe的前向、反向传播的实现进行验证;最后修改一个已有的网络模型,使用项目上更常用的方式进行 网络训练。

    102 人正在学习 去看看 柳毅

博主小白,这段时间在搞深度学习,也没有人带我,就靠自己看看书和网上琢磨琢磨。


一开始的时候,总是想快速入门深度学习。所以这里推荐一本《深度学习21天实战caffe》这本书,但是这本书有个不好的一点是,它前面的初章和中章都是写的windows+cpu平台下的开发,可是里面给的代码确是linux下的。这里贴一个教程,我觉得这个教程非常好,可以让大家快速让caffe框架在windows+cpu下跑起来,并完成mnist一个初步的模型预测。

http://www.cnblogs.com/yixuan-xu/p/5858595.html

http://www.cnblogs.com/yixuan-xu/p/5862657.html

另外还有介绍卷积神经网络比较好的文章推荐:http://cs231n.github.io/convolutional-networks/

不过建议大家还是在linux系统下学习深度学习比较好,毕竟caffe、tensorflow都不是专门支持windows的,虽然大神们把很多代码移植过来了,但是还是不太方便呢。

还有我觉得深度学习不太好的地方在于它都是监督的,非监督的效果不好。但是我还是想做非监督的,因为人工给label是一件比较麻烦的事情。


没有更多推荐了,返回首页