tensor torch 构造_PyTorch教程之Tensors

Tensors类似于numpy的ndarrays,但是可以在GPU上使用来加速计算。

一、Tensors的构建

from __future__ importprint_functionimport torch

构建未初始化的5x3矩阵:

x = torch.Tensor(5, 3)print(x)

输出结果:

-2.9226e-26 1.5549e-41 1.5885e+14

0.0000e+00 7.0065e-45 0.0000e+00

7.0065e-45 0.0000e+00 4.4842e-44

0.0000e+00 4.6243e-44 0.0000e+00

1.5810e+14 0.0000e+00 1.6196e+14[torch.FloatTensor of size 5x3]

构造一个随机初始化的矩阵:

x = torch.rand(5, 3)print(x)

输出结果:

0.8168 0.4588 0.8139

0.7271 0.3067 0.2826

0.1570 0.2931 0.3173

0.8638 0.6364 0.6177

0.2296 0.1411 0.1117[torch.FloatTensor of size 5x3]

查看size:

print(x.size())

输出结果:

torch.Size([5, 3])

torch.Size 实际上上一个tuple, 因而支持基于tuple的所有运算。

二、Tensor的运算操作

Tensor的运算操作语法有很多种,以下一一演示。

语法1:

y = torch.rand(5, 3)print(x + y)

输出结果:

0.9616 0.8727 1.6763

1.4781 0.7961 1.2082

0.6717 0.9821 0.6129

1.2544 1.0118 1.2720

1.0912 0.3207 0.4200

[torch.FloatTensor of size 5x3]

语法2:

print(torch.add(x, y))

输出结果:

0.9616 0.8727 1.6763

1.4781 0.7961 1.2082

0.6717 0.9821 0.6129

1.2544 1.0118 1.2720

1.0912 0.3207 0.4200[torch.FloatTensor of size 5x3]

语法3:

result = torch.Tensor(5, 3)

torch.add(x, y, out=result)print(result)

输出结果:

0.9616 0.8727 1.6763

1.4781 0.7961 1.2082

0.6717 0.9821 0.6129

1.2544 1.0118 1.2720

1.0912 0.3207 0.4200[torch.FloatTensor of size 5x3]

语法4:

#adds x to y

y.add_(x)print(y)

输出结果:

0.9616 0.8727 1.6763

1.4781 0.7961 1.2082

0.6717 0.9821 0.6129

1.2544 1.0118 1.2720

1.0912 0.3207 0.4200[torch.FloatTensor of size 5x3]

任何一个会改变 tensor的操作都会加上下划线,例如x.copy_(y)和x.t_().

语法5:

print(x[:, 1])

输出结果:

0.4588

0.3067

0.2931

0.6364

0.1411[torch.FloatTensor of size5]

任何numpy标准库中的索引操作都可以用于tensor

三、Tensor与numpy的互相转化

1.从torch Tensor 到 numpy Array

构建Tensor

a = torch.ones(5)print(a)

输出结果:

1

1

1

1

1[torch.FloatTensor of size5]

转化为 Array

b =a.numpy()print(b)

输出结果:

[ 1. 1. 1. 1. 1.]

对Tensor 进行加法操作:

a.add_(1)print(a)print(b)

输出结果:

2

2

2

2

2[torch.FloatTensor of size5]

[2. 2. 2. 2. 2.]

可以看到对Tensor进行的加法操作映射到了对应Arrayy当中,二者共用内存,属于浅拷贝。

2.从numpy Array到 torch Tensor

构建和转化的方法与前者类似:

importnumpy as np

a= np.ones(5)

b=torch.from_numpy(a)

np.add(a,1, out=a)print(a)print(b)

输出结果:

[ 2. 2. 2. 2. 2.] 2

2

2

2

2[torch.DoubleTensor of size5]

可以看到对Array进行的加法操作同样映射到了对应Tensor当中,二者共用内存,也属于浅拷贝。

四、GPU运算

tensor可以使用CUDA函数移动到GPU上:

iftorch.cuda.is_available():

x=x.cuda()

y=y.cuda()

x+ y

输出结果:

0.4457 1.3248 1.9033

0.8010 1.4461 1.0481

1.2691 1.8655 0.4001

0.6913 0.2979 0.2352

1.0372 1.0988 1.2159[torch.cuda.FloatTensor of size 5x3 (GPU 0)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值