Pytorch入门——手把手带你配置云服务器环境
本文始发于个人公众号:TechFlow,原创不易,求个关注
今天这篇是Pytorch专题第一篇文章。
大家好,由于我最近自己在学习Pytorch框架的运用,并且也是为了响应许多读者的需求,推出了这个Pytorch专题。由于这个专题是周末加更的,所以不能保证更新进度,我尽量和其他专题一样,每周一更。
Pytorch简介
Pytorch底层是Torch框架,Torch框架是一个科学计算框架,拥有一个与Numpy类似的张量操作库。非常灵活,但是它的语言是Lua,比较小众,因此没有广泛流行。
后来开发团队在Torch的基础上包装了一层Python的Api,使得我们可以通过Python来进行调用。它是由Facebook的人工智能小组开发维护的,目前在业内也非常流行,尤其是学术界,几乎清一色的Pytorch。它拥有两个最大的优点,一个是动态网络,像是TensorFlow等框架定义出来的神经网络是静态的,一旦写死不能轻易改变。但是Pytorch我们可以零延迟地改变任何神经网络。第二个有点是具有强大的GPU加速计算的工具,Pytorch的GPU加速非常好用。
另外Pytorch的语法更加简洁规范,更加Pythonic,学习曲线也更平稳一些。写出来的代码更加容易理解,更适合初学者。
当然由于诞生的时间还短,并且在工业界的普及度还不如TensorFlow,所以它也有一些短板,比如一些底层的文档不够完善,一些功能欠缺等等。在我个人的学习和使用当中,我的体验非常好,因此如果你没有学过深度学习的框架的话,推荐使用它作为你的第一门框架。
云服务器
既然是深度学习的框架,那么最好是能够拥有GPU环境。但是对于我们大多数人而言,GPU环境并不是一个容易的事情。比如我是Mac党,本身的机器就没有N卡,外接也不方便。当然没有GPU用CPU硬肝也是可以的,不过发热很严重,对电脑也有损伤。所以,最好的办法就是租借网上的GPU云服务器或者是云服务。
推荐一下滴滴云服务器,我个人使用下来体验还不错,最便宜的只要两块多一个小时,应该比网吧上网便宜。最近在搞巨大活动,包年云GPU只要2200,简直是白菜价中的白菜价。注意这个优惠只能第一笔下单的时候享受。如果感兴趣的话可以访问链接:https://i.didiyun.com/2cvmFVGpCjz
查看原文
因为我是特邀用户,所以我拿到了内部优惠的大师码,如果要购买其他GPU云服务器的话,可以在付款的时候输入我的大师码2323,可以再享受9折优惠。
当然你也可以购买装好环境的Notebook,或者是按照时常购买。Notebook好处是预装了各种环境,上手可用,但是缺点是不支持定制化,一些操作不太方便。毕竟有了云服务器可以自己搭建Notebook,但是Notebook并不支持服务器的功能。
如果你想要使用其他云服务器平台,可以查看我之前的文章
环境配置
为了防止一些小白租借了机器不会用,接下来提供一下配置环境的详细教程(基于滴滴云)。如果你用的别家的服务器,由于环境不一定完全相同,所以可能并不一定适用,只能当做参考。
总之我们整个流程是:安装Python3,安装jupyter,配置jupyter远程访问,安装Pytorch。
这些是明面上的流程,如果机器环境不健全,还会有一些隐藏流程。比如说普通的Linux环境需要配置apt-get,还需要下载git,wget等常用工具。如果没有cuda驱动的话,还需要自己安装cuda配置。如果其中的步骤出现了问题,还需要分析问题的原因解决问题。所以说配置环境说起来简单,但是实际操作的时候问题并不少。
安装Python3
yum install python36
安装 jupyter notebook
sudo pip3 install ipython jupyter notebook lab
设置jupyter的密码
jupyter notebook password
生成jupyter notebook的配置,这个配置默认不存在,需要我们通过这个命令来生成。
jupyter notebook --generate-config
运行之后,会返回配置文件所在的路径:
我们用vim打开,修改其中的几行:
c.NotebookApp.ip='0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 # 可以自己指定
我们需要将本地的端口和远程进行绑定,这样我们就可以在本地打开远程的jupyter了。这一行代码当中我们将本地的8899绑定了远程的8888端口。这里的8888端口就是上面配置当中的远程的jupyter端口。
ssh dc2-user@116.85.10.225 -L 127.0.0.1:8899:127.0.0.1:8888
如果你喜欢的话,还可以安装一下jupyter lab
sudo pip3 install jupyterlab
使用方法和notebook类似,在远程执行命令开启jupyter
jupyter lab --allow-root
启动没有问题的话,我们在本地访问:http://localhost:8899就可以打开Jupyter,输入密码之后就可以使用了。
当我们用完了云服务器之后,要记得删除机器。但由于平台机器数量有限,根据当前平台的设置,关机之后依然会为用户保留资源,但是前提是需要付费。如果你是按时租的服务器显然不能接受自己没在使用还需要付费。针对这个问题,我们可以通过快照来解决。我们在关机之前先创建快照:
然后删除云服务器,下次重新创建服务器的时候选择从快照创建。这样下次创建的机器还可以保留当前的配置和数据,而且也不需要扣费了。如果你嫌麻烦的话,还可以加我的微信联系我,我帮你找到工作人员加入关机免扣费的白名单。
我们用pip安装一下Pytorch和一些其他需要用到的包。安装好了,之后,我们通过torch.cuda.is_avaiable()查看一下cuda的情况,如果输出是True,那说明已经安装好了。
tensor
Pytorch当中很重要的一个概念就是tensor,它直译过来是张量,TensorFlow当中的tensor也是这个意思。我们可以认为tensor是一个高维的数组。当它是0维的时候就是一个数,一个标量。当它是一维的时候就是一个向量,二维的时候是一个矩阵,多维的时候是高维的数组。它和Numpy当中的数组类似,不过Tensor可以使用GPU进行加速。
我们通过torch当中的接口来初始化tensor,和Numpy当中的数组类似,它支持好几种初始化的方式。
empty函数创建一个指定大小的未初始化的tensor,当中的元素内容是不可保证的。
rand创建一个随机初始化的数组:
ones和zeros创建全是0或者全是1的数组:
我们可以传入类型指定元素的类型
我们也可以通过现成的数组创建tensor:
这些创建函数都有对应的like方法,可以传入一个已有的tensor,创建出一个和它一样大小的新的tensor来。
这里只是列举了常用的几种,官方的api当中还有其他的几种创建tensor的方式:
除此之外,tensor还支持从numpy的数组当中创建,我们可以利用from_numpy函数来实现:
同理,我们也可以通过numpy函数,从一个tensor得到numpy的数组:
还可以通过tolist方法将tensor转化成Python的数组:
| 函数 | 功能 |
|---|---|
| Tensor(*sizes) | 基础构造函数 |
| tensor(data,) | 类似np.array的构造函数 |
| ones(*sizes) | 全1Tensor |
| zeros(*sizes) | 全0Tensor |
| eye(*sizes) | 对角线为1,其他为0 |
| arange(s,e,step) | 从s到e,步长为step |
| linspace(s,e,steps) | 从s到e,均匀切分成steps份 |
| rand/randn(*sizes) | 均匀/标准分布 |
| normal(mean,std)/uniform(from,to) | 正态分布/均匀分布 |
| randperm(m) | 随机排列 |
我们在创建tensor的时候不仅可以指定它们的类型,还可以指定它们存放的设备。比如是CPU还是GPU。当然前期我们暂时用不到这点,只需要记得即可。
总结
这是Pytorch的第一篇文章,我们简单了解了一下这个框架,以及它当中tensor这个数据结构。简单来说,我们可以用常用的Numpy去类比它。基本上Numpy当中有的功能它都有,它还有一些自己特性Numpy没有的api。但不管怎么说,万变不离其宗,tensor的用处就是为了方便我们处理数据的。
关于Pytorch中tensor的用法还有很多,实在是没有办法在一篇文章当中穷尽,所以这里只是简单介绍,具体的用法将会放在下一篇文章当中,让我们下周再见吧。
如果喜欢本文,可以的话,请点个关注,给我一点鼓励,也方便获取更多文章。
本文使用 mdnice 排版
Pytorch入门——手把手带你配置云服务器环境的更多相关文章
- centos从头学习配置web服务器环境
为了学习linux下配置web服务器环境,于是安装了vmware,准备在虚拟机里面学习web服务器的搭建! 首先是在虚拟机里安装centos,我选择的是32位的centos6.6版本,因为新版本7据说 ...
- 【转】windows 7系统安装与配置Tomcat服务器环境
原文链接: windows 7系统安装与配置Tomcat服务器环境 工具/原料 jdk-8u51-windows-x64(我的系统是64位系统,32位的请选x86下载)下载地址:http://www. ...
- nodejs + nginx + ECS阿里云服务器环境设置
nodejs + nginx + ECS阿里云服务器环境设置 部署 nodejs ECS 基于 CentOS7.2 详细步骤:click 部署 nginx 安装 添加Nginx软件库: [root@l ...
- windows 7系统安装与配置Tomcat服务器环境
windows 7系统安装与配置Tomcat服务器环境 学习了一个月的java基础,终于要迈向java web领域.学习java web开发就离不开服务器的支持,由于本人是菜鸟,只好求助度娘谷哥.在此 ...
- 配置云服务器 FTP 服务
自己配置的环境: OS: 阿里云 CentOS 6.5 >>Begin: 1. 登录到阿里云服务器(如何登录阿里云服务器), 在root权限下, 通过如下命令安装 vsftp [root@ ...
- 环境配置-云服务器jdk与tomcat配置
我所实践的主机是麻花疼云的主机,第一次试用30天,装了个centos6.5,其实已经用商用专用镜像配置好环境了,包括jdk.tomcat等常用的内容,但是我实在是找不到他们安装在哪个目录下了,我就自己 ...
- Pytorch入门——手把手教你MNIST手写数字识别
MNIST手写数字识别教程 要开始带组内的小朋友了,特意出一个Pytorch教程来指导一下 [!] 这里是实战教程,默认读者已经学会了部分深度学习原理,若有不懂的地方可以先停下来查查资料 目录 MNI ...
- 【Nginx入门系列】第一章 手把手带你搭建Nginx服务器
1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境,搭建前请先按如下语句配置好环境. GCC 安装nginx需要先将官网下载的源码进行编译 ...
- pytorch入门之安装和配置
pytorch是一种python接口的深度学习框架,其他的框架还有caffe,tensorflow等等. 1,pytorch目前支持linux和OSX两种系统.支持的Python版本有2.7,3.5, ...
随机推荐
- 关于替换“c2a0”十六进制字符的方法
一.背景:在爬取网络小说生成的文件中,发现有些空格没法替换,使用十六进制编辑器查看,发现这些空格字符的十六进制值是“c2a0”,其来源是网页控制的特殊字符,这是一个叫做Non-breaking spa ...
- C# Winform 学习(五)
目标 1.MDI应用程序 2.图片框控件 3.图片集控件 4.定时器控件 一.MDI应用程序 1.理解: 单文档界面:SDI(word) 多文档界面:MDI(excel) 2.特点: 1)每个MDI程 ...
- Java实现 蓝桥杯VIP 基础练习 Huffuman树
基础练习 Huffuman树 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Hu ...
- Java实现 LeetCode 18 四数之和
18. 四数之和 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target ...
- java实现求逆序对
1 问题描述 给定一个随机数数组,求取这个数组中的逆序对总个数.要求时间效率尽可能高. 那么,何为逆序对? 引用自百度百科: 设 A 为一个有 n 个数字的有序集 (n>1),其中所有数字各不相 ...
- JVM 由哪些部分组成?
JVM 由哪些部分组成? 解析:这是对 JVM 体系结构的考察 答:JVM 的结构基本上由 4 部分组成: 类加载器,在 JVM 启动时或者类运行时将需要的 class 加载到 JVM 中 执行引擎, ...
- 流程图(HTML5拖拽)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用macaca抓页面元素,执行命令后报安装失败处理Error: Command failed: ……pm install -r "/data/local/tmp/com.macaca.android.testing"
最近换了小米手机做自动化测试,执行命令的时候报安装失败错误,错误如下 解决:设置小米允许USB安装就好了 pm install -r "/data/local/tmp/com.macaca. ...
- 利用tcpdump命令统计http的GET和POST请求
1.搭建的知识库服务器, 需要统计来访者都是哪些人,因为系统不是自己开发的,看不到访问日志.所以考虑从系统层面抓取访问流量来实现. 2.通过tcpdump抓取的数据包,在wireshark中打开发现, ...
- python—面向对象设计
一:三大编程范式 1.面向过程编程 2.函数式编程 3.面向对象编程 (类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念) (对象:就是基于类而创建的一个具体的事物 [具体存在的] ...