[pytorch快速入门教程]pytorch的基石-Tensor张量

Song398 次浏览0个评论2018年07月11日

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]  

提交评论

请登录后评论

用户评论

    当前暂无评价,快来发表您的观点吧...

更多相关好文

    当前暂无更多相关好文推荐...

    公告提示

    Pytorch是Facebook的AI研究团队发布了一个Python工具包,是Python优先的深度学习框架。作为numpy的替代品;使用强大的GPU能力,提供最大的灵活性和速度,实现了机器学习框架Torch在Python语言环境的执行,基于python且具备强大GPU加速的张量和动态神经网络。