[pytorch快速入门教程]pytorch的基石-Tensor张量
Tensors类似于numpy的ndarray,但是带了一些附加的功能,例如可以使用GPU加速计算等等。[code]import torch[/code] 构建一个未初始化的 5x3 矩阵:[code]x = torch.Tensor(5, 3) print(x)[/code] 输出:[code]1.00000e-37 * 0.0000 0.0000 0.0000 0.0000 0.0386 0.0000 0.1063 0.0000 0.9101 0.0000 0.8589 0.0000 3.8771 0.0000 4.7069 [torch.FloatTensor of size 5x3][/code]构建一个随机初始化的矩阵:[code]x = torch.rand(5, 3) print(x)[/code] 输出:[code] 0.0968 0.3444 0.8056 0.1710 0.9617 0.1205 0.8129 0.4235 0.8243 0.2726 0.2321 0.3425 0.3740 0.7438 0.8613 [torch.FloatTensor of size 5x3][/code] 获取矩阵维度大小:[code]print(x.size())[/code]输出:[code](5L, 3L)[/code][b]注意:[/b] [b]torch.Size [/b]实际上是一个元组,因此它支持相同的操作。
[b]运算操作[/b] 运算操作有多种语法,让我们看看加法的例子。
加法:语法1[code]x = torch.rand(5, 3) print(x)
y = torch.rand(5, 3)
print y print(x + y)[/code]输出:[code] 0.9073 0.0706 0.4055 0.2490 0.8740 0.8407 0.6423 0.6609 0.1303 0.7129 0.9927 0.5198 0.8317 0.0544 0.3642 [torch.FloatTensor of size 5x3]
0.1939 0.1270 0.7614 0.5257 0.0990 0.6064 0.7934 0.8955 0.7206 0.9461 0.2732 0.3663 0.3572 0.4705 0.3903 [torch.FloatTensor of size 5x3]
1.1011 0.1976 1.1669 0.7747 0.9730 1.4471 1.4357 1.5564 0.8509 1.6591 1.2659 0.8861 1.1889 0.5249 0.7544 [torch.FloatTensor of size 5x3][/code]加法:语法2[code]print(torch.add(x, y))[/code] 注意:[code] 1.1011 0.1976 1.1669 0.7747 0.9730 1.4471 1.4357 1.5564 0.8509 1.6591 1.2659 0.8861 1.1889 0.5249 0.7544 [torch.FloatTensor of size 5x3][/code]加法:给定一个输出tensor[code]result = torch.Tensor(5, 3) torch.add(x, y, out=result) print(result)[/code]加法:就地[code]# adds x to y y.add_(x) print(y)[/code]输出:[code] 1.1177 0.8514 1.1459 1.1878 0.9249 0.5759 1.3508 1.4628 1.2833 1.8678 0.8499 0.2941 0.9718 1.0785 0.6914 [torch.FloatTensor of size 5x3][/code]注意: 任何就地改变一个tensor的操作都以为后缀。例如:x.copy(y), x.t_(),都会改变x。
你可以像numpy一样使用索引! 任何就地改变一个tensor的操作都以为后缀。例如:x.copy(y), x.t_(),都会改变x。[code]print(x[:, 1])[/code]输出:[code]0.4855 0.4525 0.8742 0.1873 0.2953 [torch.FloatTensor of size 5][/code]延伸阅读: 100+ Tensor运算,包括转置、索引、切分、数学运算、线性代数随机数等等,参考:[url]http://pytorch.org/docs/torch[/url] [b]Numpy的桥梁[/b] [list] []Torch的Tensor和Numpy的数组之间的互转简直像一阵清风一样。[/] []Torch的Tensor和Numpy的数组会共享它们的底层存储位置,该变其中一个,另外一个也会改变。[/] [/list] [b]将Torch Tensor转换为Numpy数组[/b][code]a = torch.ones(5) print(a)[/code]输出:[code] 1 1 1 1 1 [torch.FloatTensor of size 5][/code]接下来我们进行转换[code]# -- coding: utf-8 -- import torch
a = torch.ones(5)
b = a.numpy() print(b)[/code]输出:[code][ 1. 1. 1. 1. 1.][/code]看看当改变numpy数组的值时发生了什么。[code]a.add_(5) print(a) print(b)[/code]输出:[code] 6 6 6 6 6 [torch.FloatTensor of size 5]
[ 6. 6. 6. 6. 6.][/code] [b]将Numpy数组转换为Torch Tensor[/b]
看看更改Numpy数组的同时自动地更改了Torch Tensor[code]# -- coding: utf-8 -- import torch import numpy as np
a = np.ones(5) b = torch.from_numpy(a) np.add(a, 3, out=a) print(a) print(b)[/code]输出:[code][ 4. 4. 4. 4. 4.]
4 4 4 4 4 [torch.DoubleTensor of size 5][/code]除了CharTensor之外,CPU上的所有Tensor都支持与Numpy数组的来回转换。
[b]CUDA Tensors[/b] 可以使用[b].cuda[/b]函数将Tensor转移到GPU上。[code]# let us run this cell only if CUDA is available if torch.cuda.is_available(): x = x.cuda() y = y.cuda() x + y[/code]
用户评论
更多相关好文
-
微信公众号文章/菜单添加小程序时路径如何获取? 2021-12-22
-
如何轻松获取微信小程序路径path? 2021-12-22
-
cannot import name 'CUDA_HOME' from 'mmcv.utils' 2021-12-05
-
vgg的loss一轮达到ln(1/n)阈值,如何解决 2021-11-21
-
如何下载使用utils库 2021-10-27
热门文章
-
cannot import name 'CUDA_HOME' from 'mmcv.utils' 2021-12-05
-
vgg的loss一轮达到ln(1/n)阈值,如何解决 2021-11-21
-
如何下载使用utils库 2021-10-27
-
pytorch调用geforce rtx 3060 2021-10-24
-
pytorch中如何实现多模型的并联 2021-09-15
栏目最新文章
公告提示
- pytorch中文文档
- pytorch官方文档
提交评论