Pytorch入门——Tensor

来源:互联网 发布:数据库基本概念 编辑:程序博客网 时间:2024/06/05 22:41

在之前的博客已经对Pytorch进行了介绍及安装,接下来正式学习Pytorch,本章博客主要介绍torch Tensor、torch Tensor与numpy array的转化以及运算操作。

1.Tensor

Tensor类似于numpy的ndarrays,另外它还可以在GPU上使用Tensor进行加速计算。
导入pytorch包

import torch

下面讲解如何创建一个5*3的矩阵,并输出

x = torch.Tensor(5, 3)print(x)#输出:   0.0000    0.0000    0.0000   0.0000    0.4677    0.0000   0.4692    0.0000    0.4662   0.0000    0.4693    0.0000  12.7686  189.2708    0.0000[torch.FloatTensor of size 5x3]

创建一个随机初始化矩阵

x = torch.rand(5, 3)print(x)#输出: 0.0608  0.8530  0.3833 0.3624  0.2066  0.9663 0.6356  0.3567  0.4907 0.1922  0.8057  0.5244 0.0902  0.3608  0.9948[torch.FloatTensor of size 5x3]

获取矩阵的大小

print(x.size())#输出:(5L, 3L)#torch.Size 实际上是一个元组,所以它支持相同的操作

2. pytorch Tensor与numpy array的转化

2.1 将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加1,看看numpy数组b的值变化情况:

a.add_(1)#输出: 2 2 2 2 2print(a)#输出: 2 2 2 2 2[torch.FloatTensor of size 5]print(b)#输出:[ 2.  2.  2.  2.  2.]

2.2 将numpy数组转换为Torch张量

import numpy as npa = np.ones(5)b = torch.from_numpy(a)np.add(a, 1, out=a)#输出:array([ 2.,  2.,  2.,  2.,  2.])print (a)#输出:[ 2.  2.  2.  2.  2.]print (b)#输出: 2 2 2 2 2[torch.DoubleTensor of size 5]

pytorch Tensor与numpy array的转化,无论对tensor还是对array进行运算操作,通时都会改变两者的值。

3.运算操作

Pytorch提供运算操作的API,需要用到的的运算操作具体可参考官方文档说明,在这里以加法运算为例,展示Pytorch几种运算操作的语法:
语法1: op1 + op1

x = torch.rand(5, 3)#输出: 0.0608  0.8530  0.3833 0.3624  0.2066  0.9663 0.6356  0.3567  0.4907 0.1922  0.8057  0.5244 0.0902  0.3608  0.9948[torch.FloatTensor of size 5x3]y = torch.rand(5, 3)#输出: 0.8414  0.9531  0.9665 0.5594  0.9018  0.3758 0.6742  0.8654  0.9356 0.6685  0.8721  0.7872 0.7185  0.2411  0.8492[torch.FloatTensor of size 5x3]print (x+y)#输出: 0.9021  1.8061  1.3498 0.9218  1.1084  1.3421 1.3099  1.2221  1.4263 0.8608  1.6778  1.3116 0.8087  0.6019  1.8440[torch.FloatTensor of size 5x3]

语法2:torch.operation(op1, op2, …)

print(torch.add(x, y))#输出: 0.9021  1.8061  1.3498 0.9218  1.1084  1.3421 1.3099  1.2221  1.4263 0.8608  1.6778  1.3116 0.8087  0.6019  1.8440[torch.FloatTensor of size 5x3]

语法3:op1.operaition_(op2)

y.add_(x)#输出: 0.9021  1.8061  1.3498 0.9218  1.1084  1.3421 1.3099  1.2221  1.4263 0.8608  1.6778  1.3116 0.8087  0.6019  1.8440[torch.FloatTensor of size 5x3]

补充:可以使用该.cuda函数将tensor移动到GPU上计算:

# let us run this cell only if CUDA is availableif torch.cuda.is_available():    x = x.cuda()    y = y.cuda()    x + y
原创粉丝点击