PyTorch学习—PyTorch是什么?
来源:互联网 发布:搜索引擎 数据库 区别 编辑:程序博客网 时间:2024/05/16 12:12
引言
PyTorch是一个Python的深度学习框架,最近越来越火,大有要赶超Tensorflow的势头。当然这是我听别人说的,我这个外行人就不敢乱评论了(不敢吭声.jpg)
PyTorch 的安装,在这就不说明了,总之我是百度了不少博客经验之类的网页,才终于磕磕碰碰地把 PyTorch 安装成功。听大部分人说, PyTorch 目前只支持 linux 和 osx 系统,而我用的是 windows ,所以只能开vmware,在虚拟机上的 ubuntu 装。我主要是参考 Pytorch安装-pip安装方案 这个大神的方法安装的。
这页博客是用来记录学习 PyTorch 的官方教程里“60分钟入门深度学习PyTorch”的进程:Deep Learning with PyTorch: A 60 Minute Blitz
PyTorch是什么?
是一个主要拥有如下两种功能的基于python的科学计算包:
- 在使用GPU时作为numpy库的替代品
- 提供最大程度的灵活度和速度的深度学习研究平台
开始
Tensor
Tensor与numpy中的ndarray’s 相似,并且tensor比ndarray多了一个功能:它可以使用GPU去进行计算机的计算
from __future__ import print_functionimport torch
构建一个未初始化的5*3的矩阵
x = torch.Tensor(5, 3)print(x)
输出:
-1.6081e-14 1.5525e-41 8.8476e-38 0.0000e+00 1.0065e+17 0.0000e+00 2.8026e-45 1.5525e-41 1.0065e+17 0.0000e+00 4.6243e-44 0.0000e+00 8.1728e-38 0.0000e+00 1.0065e+17[torch.FloatTensor of size 5x3]
随机初始化一个5*3的矩阵
x = torch.rand(5, 3)print(x)
输出:
0.3129 0.9342 0.9616 0.7383 0.0806 0.4812 0.3423 0.0733 0.3207 0.6953 0.9285 0.1022 0.4641 0.7445 0.3699[torch.FloatTensor of size 5x3]
获取矩阵的行列大小值
print(x.size())
输出:
torch.Size([5, 3])
PS:torch.Size 实际上是一个元组,所以它提供同样的功能
操作
操作的语法有很多种,我们来看以下一个例子:
语法一
y = torch.rand(5, 3)print(x + y)
输出:
0.3917 1.8496 1.4277 1.1302 0.6874 1.3269 1.0373 0.1904 1.2058 0.9007 1.7532 0.6824 1.2130 1.4414 1.1531[torch.FloatTensor of size 5x3]
语法二
print(torch.add(x, y))
输出:
0.3917 1.8496 1.4277 1.1302 0.6874 1.3269 1.0373 0.1904 1.2058 0.9007 1.7532 0.6824 1.2130 1.4414 1.1531[torch.FloatTensor of size 5x3]
将输出结果赋予给一个tensor
result = torch.Tensor(5, 3)torch.add(x, y, out=result)print(result)
输出:
0.3917 1.8496 1.4277 1.1302 0.6874 1.3269 1.0373 0.1904 1.2058 0.9007 1.7532 0.6824 1.2130 1.4414 1.1531[torch.FloatTensor of size 5x3]
也可以这样相加
# adds x to yy.add_(x)print(y)
输出:
0.3917 1.8496 1.4277 1.1302 0.6874 1.3269 1.0373 0.1904 1.2058 0.9007 1.7532 0.6824 1.2130 1.4414 1.1531[torch.FloatTensor of size 5x3]
PS:任何改变一个tensor的值的“替换”操作,都在其后面加一个小横杆 _ 例如,x.copy_(y) , x.t_() , 都会改变 x 的值。
“You can use standard numpy-like indexing with all bells and whistles!
”
你可以使用标准的numpy库,比如说索引一些很浮夸的东西!(这个句子翻译起来有点egg疼,希望英语大佬来帮忙改正)
print(x[:, 1])
输出:
0.9342 0.0806 0.0733 0.9285 0.7445[torch.FloatTensor of size 5]
PS:更多关于tensor的酷炫操作,在这里:click here
Numpy之桥
实现torch的tensor变量与numpy的数组变量之间的转换是轻而易举的事。
torch的tensor变量和numpy的数组变量的底层存储位置是共享的,这意味着改变其中一个的值,另一个也会随之改变
将torch的tensor转换成numpy的数组
a = torch.ones(5)print(a)
输出:
1 1 1 1 1[torch.FloatTensor of size 5]
b = a.numpy()print(b)
输出:
[ 1. 1. 1. 1. 1.]
然后你会发现改变a的值,b的值也会随之改变
a.add_(1)print(a)print(b)
输出:
2 2 2 2 2[torch.FloatTensor of size 5][ 2. 2. 2. 2. 2.]
将numpy的数组转换成torch的tensor
import numpy as npa = np.ones(5)b = torch.from_numpy(a)np.add(a, 1, out=a)print(a)print(b)
输出(b随着a的改变也改变了):
[ 2. 2. 2. 2. 2.] 2 2 2 2 2[torch.DoubleTensor of size 5]
除了CharTensor之外,CPU上的Tensors都支持与NumPy之间的转换
CUDA Tensors
使用 .cuda 函数,tensors可以在GPU上运行
# let us run this cell only if CUDA is availableif torch.cuda.is_available(): x = x.cuda() y = y.cuda() x + y
原作者:Sphnix-Gallery
- PyTorch学习—PyTorch是什么?
- Pytorch是什么?关于Pytorch
- PyTorch学习
- pytorch 学习
- PyTorch
- PyTorch
- PyTorch
- pytorch
- pytorch
- Pytorch
- PyTorch学习3—神经网络
- Pytorch广播是什么?
- pytorch学习笔记(1)--pytorch张量
- PyTorch学习记录-1PyTorch安装
- PyTorch学习总结(三)——ONNX
- PyTorch学习总结(四)——Utilities
- pytorch 学习笔记(一)
- pytorch 学习笔记(一)
- 左旋转字符串
- WPS 规划求解
- Jenkins和Docker在HULK的落地实践
- strcop & memcop & sprintf区别
- tensorflow编程: Tensor Handle Operations
- PyTorch学习—PyTorch是什么?
- 表篇(二)-----单链表的创建与使用(c语言版)
- C++ 循环
- BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊
- 【FullCalendar】概叙(一)
- DFS-求全排列
- c++源码分析继承问题
- C++ 判断
- 驱动建模表无法创建原因详细分析