一、深度学习框架简介
二、Tensorflow与Pytorch的比较
三、安装开发环境
1、Google阵营
最早的是由加拿大团队开发的theano一个机器学习库,现在已经停止更新。接着Google开发了Tensorflow,并且收购了keras这样一个高阶API的命名规范。keras可以使用不同的后端。主流的就是tensorflow2.0。
2、Facebook阵营
2002年推出Torch,2011年推出Torch7,但是这都是基于一种小众语言Lua,2018年将torch与caffe、caffe2强强联合推出pytorch1.0,基于C和C++的后端,2019年五月发布1.1版本。主推Pytorch。值得一提的是caffe是由华人贾扬清开发的。其中pytorch借鉴了一个日本的深度学习框架Chainer的API的设计规范。
3、Amazon AWS阵营
mxnet作为亚马逊的官方框架。值得一提的是mxnet是由华人陈天齐和李沐开发的。
4、微软阵营
微软的CNTK相对比较小众。
2002年Torch,基于Lua开发
2011年Torch7
2016.10发布pytorch0.1,THNN后端
2018.12发布pytorch1.0,Caffe2后端
2019.5发布1.1
在众多的的学习框架下,pytorch和tensorflow作为最主流的两种框架,各自有着怎样的特点呢?pytorch是一种动态图,更加直观和容易理解。而tensorflow为静态图,首先要创建一张图,然后运行图。
pytorch更加适合新手入门,方便debug,而tensorflow更加适合工程项目。因此tensorflow(虽然马上要出tensorflow2.0,据说很好用。)转战pytorch。pytorch能做什么?
pytorch的生态:
pytorch的三个特点:
GPU加速
importtorchimporttimeprint(torch.__version__)print(torch.cuda.is_available())a=torch.randn(10000,1000)b=torch.randn(1000,2000)t0=time.time()c=torch.matmul(a,b)t1=time.time()print(a.device,t1-t0,c.norm(2))device=torch.device('cuda')a=a.to(device)b=b.to(device)# 包含了初始化的时间t0=time.time()c=torch.matmul(a,b)t2=time.time()print(a.device,t2-t0,c.norm(2))t0=time.time()c=torch.matmul(a,b)t2=time.time()print(a.device,t2-t0,c.norm(2))
输出结果:
1.1.0Truecpu0.17958474159240723tensor(141219.6406)# 因为第一次需要加载,所以以第二次的时间为准。cuda:02.2960894107818604tensor(141437.2656,device='cuda:0')cuda:00.002928495407104492tensor(141437.2656,device='cuda:0')
如果print(torch.cuda.is_available())返回False说明pytorch与cuda没有匹配成功。
自动求导
importtorchfromtorchimportautogradx=torch.tensor(1.)a=torch.tensor(1.,requires_grad=True)b=torch.tensor(2.,requires_grad=True)c=torch.tensor(3.,requires_grad=True)y=a**2*x+b*x+cprint('before',a.grad,b.grad,c.grad)grads=autograd.grad(y,[a,b,c])print('after:',grads[0],grads[1],grads[2])
常用的网络层
nn.linear
nn.Conv2d
mm.LSTM
nn.ReLU
nn.Sigmoid
nn.softmax
nn.CrossEntropyLoss
nn.MSE
第一种安装方式:默认没有安装cuda
第一步:安装anaconda5.3.1,默认安装python3.7。
第二步:安装CUDA,搜索Cuda download,下载CUDA Tookit10.0 Download(根据python版本选择相应的CUDA版本),安装完成之后,打开cmd检测安装是否成功。输入nvcc -V,如果失败,需要配置环境变量。
第三步:配置环境变量。CUDA默认安装路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin,打开我的电脑属性,将上述路径添加到环境变量中。
第四步:安装pytorch。打开pytorch官方网站,点击相应的选择,以管理员权限运行cmd中执行下面自动生成的命令。
condainstallpytorchtorchvisioncudatoolkit=9.2-cpytorch-cdefaults-cnumba/label/dev
注意:安装这里有坑:
1首先要严格对应自己的python版本,比如3.6对应cuda9.0
2其次要注意将命令中-c pytorch删除,-c pytorch的意思就是从官网上获取,即使你已经更换了镜像源,去除-c pytorch之后,系统就会默认从设置的镜像源中获取。否则大概率可能会一直特别特别慢,甚至出现condahttpError。
condainstallpytorchtorchvisioncudatoolkit=9.2-cdefaults-cnumba/label/dev
如果出现安装速度太慢,可以考虑换源,使用清华源:
condaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/condaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/condaconfig--setshow_channel_urlsyes
速度还是可以的,如果还是不行那就再试试科大或者阿里。
建议,安装完成之后再把这个源删了,还是使用默认的源。以避免以后装一些包会报错。
condaconfig--remove-keychannels
安装完成以后,默认会安装一些附属的包,比如torchvision等。
第二种安装方式:默认已经安装cuda
第一步:首先去清华镜像下载pytorch
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/
找到对应的版本下载即可,我的是python3.6,cuda9.0。
第二步:打开anaconda prompt,执行如下操作
(base) D:\software\Anaconda3>conda install --offline -n base pytorch-nightly-1.0.0.dev20190101-py3.6_cuda90_cudnn7_0.tar.b
(注意 base是默认的虚拟环境,回车等待安装即可)
离线安装是真的快~~~!!!