简介

深度学习(人工神经网络的研究的概念)
深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。

深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。

深度学习的概念源于人工神经网络的研究,含多个隐藏层的多层感知器就是一种深度学习结构。研究深度学习的动机在于建立模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本等。

以往在机器学习用于现实任务时,描述样本的特征通常需由人类专家来设计,这成为“特征工程”(feature engineering)。

三类学习方法

通过设计建立适量的神经元计算节点和多层运算层次结构,选择合适的输人层和输出层,通过网络的学习和调优,建立起从输入到输出的函数关系,虽然不能100%找到输入与输出的函数关系,但是可以尽可能的逼近现实的关联关系。使用训练成功的网络模型,就可以实现我们对复杂事务处理的自动化要求。
(1)基于卷积运算的神经网络系统,即卷积神经网络(CNN)。
(2)基于多层神经元的自编码神经网络,包括自编码( Auto encoder)以及近年来受到广泛关注的稀疏编码两类( Sparse Coding)。
(3)以多层自编码神经网络的方式进行预训练,进而结合鉴别信息进一步优化神经网络权值的深度置信网络(DBN)。

GPU介绍

CUDA:它所作用的对象是显卡,也就是GPU,有了它,程序开发人员就能够编码控制和使用GPU了,现在已经支持多种编程语言,比如C、C++和Fortran
使用GPU需要安装CUDA:https://developer.nvidia.com/cuda-toolkit-archive

CUDNN:CUDNN 是CUDA Deep Neural Network library 的缩写,也就是基于CUDA的神经网络软件包。可以类比JAVA中的JDK,也可以类比开源图像处理工具包openCV
下载地址:https://developer.nvidia.com/cudnn
需要填写一些注册信息,下载好之后,解压,里面有三个文件夹,分别把里面三个文件夹里面的文件复制到CUDA所安装的目录对于的同名文件夹中
添加环境变量,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64
命令行tensorflow导包成功,说明安装完成

python深度学习库

(一)Tensorflow
google开发的开源深度学习框架,TensorFlow 采用静态图机制(预定义后再使用)
pip install tensorflow
使用GPU加速(显卡需要使用英伟达,并且独显大于等于3G):
tensorflow、cuda、cudnn之间的版本对应关系:



TensorFlow2.0安装GPU参考:

TensorFlow指定GPU与CPU:
(1)ConfigProto:
tf.ConfigProto一般用在创建session的时候。用来对session进行参数配置
#tf.ConfigProto()的参数
log_device_placement=True : 是否打印设备分配日志
allow_soft_placement=True : 如果你指定的设备不存在,允许TF自动分配设备
tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)

(2)控制GPU资源使用率
#程序按需申请内存
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)
#设置每个GPU应该拿出多少容量给进程使用,0.4代表 40%
gpu_options=tf.GPUOptions(per_process_gpu_memory_fraction=0.4)
config=tf.ConfigProto(gpu_options=gpu_options)
session = tf.Session(config=config)

(3)控制使用哪块GPU
#在程序开头
os.environ[‘CUDA_VISIBLE_DEVICES’] = ‘0’ #使用 GPU 0
os.environ[‘CUDA_VISIBLE_DEVICES’] = ‘0,1’ # 使用 GPU 0,1

(4)控制使用CPU
#在程序开头
os.environ[“CUDA_VISIBLE_DEVICES”] = “-1”

(5)cpu/gpu切换
“/cpu:0”: 机器中的 CPU
“/gpu:0”: 机器中的 GPU, 如果你有一个的话.
“/gpu:1”: 机器中的第二个 GPU, 以此类推…

(6)指派设备():
可以用 with tf.device 创建一个设备环境, 这个环境下的 operation 都统一运行在环境指定的设备上

# 新建一个 graph.
x=3
y=4
z=2
with tf.device('/gpu:1'):
    a=tf.multiply(x,x)
    b=tf.multiply(a,y)
with tf.device('/gpu:2'):
    c=tf.add(y,z)
# 新建 session with log_device_placement 并设置为 True.
sess=tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True))
# 运行这个 op.
d=tf.add(b,c)
print(sess.run(d))

deep learning pytorch 教材 deep learning python_深度学习


Linux版本:

查看显卡:lspci |grep -i vga

CUDA:https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_versinotallow=1604&target_type=runfilelocal

CUDNN:https://developer.nvidia.com/rdp/cudnn-download

学习TensorFlow可以去github:
github网址官方案例Tesorflow游乐园

(二)Keras
keras封装了TensorFlow,使用的时候调用API简单易操作,就如同网络请求,requests.get(url)一行代码获取数据,requests.get(url)方法里面有很多代码,keras类似一个库。
pip install keras

(三)pytorch
Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,pytorch的计算图是动态的,可以根据计算需要实时改变计算图。但由于Torch语言采用 Lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。作为经典机器学习库 Torch 的端口,PyTorch 为 Python 语言使用者提供了舒适的写代码选择。PyTorch采用动态图机制(运行时动态定义)
优点:简洁,速度快,易用,有活跃的社区
torch :类似 NumPy 的张量库,强 GPU 支持
原文链接:

安装:https://pytorch.org/get-started/locally/
Windows+CPU计算:pip install torch1.4.0+cpu torchvision0.5.0+cpu -f https://download.pytorch.ort/whl/torch_stable.html
CUDA是GPU计算(独显,英伟达,内存必须大于等于3G,如果是2G只能安装不能运行)
这个是GPU安装 pip install torch=1.4.0 torchvision=0.5.0 -f https://download.pytorch.org/whl/torch_stable.html

官网不给力的话可以使用:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pytorch
下载好whl之后pip install ***whl就可以了

(四)其他框架
如:百度的paddlepaddle,伯克利学校的caffe,亚马逊的mxnet