【Pytorch实战1】Pytorch中的Tensor

参考资料:

《深度学习之pytorch实战计算机视觉》

Pytorch官方教程

Pytorch中文文档

 

  Tensor在Pytorch中负责存储基本数据,用于替代numpy。tensor数据类型的变量可以在GPUs上进行运算。

一、Tensor的生成

  用于Tensor生成的常用函数如下。

1、torch.FloatTensor

生成浮点型的Tensor。float32

示例代码:

import torch
a = torch.FloatTensor(2,3)#传递维度
b = torch.FloatTensor([2,3,4,5])#传递列表

print(a)
print(b)

运行结果:

2、torch.IntTensor

生成整型的Tensor。

示例代码:

import torch
a = torch.IntTensor(2,3)#传递维度
b = torch.IntTensor([2,3,4,5])#传递列表

print(a)
print(b)

运行结果:

3、torch.rand

随机生成0~1区间均匀分布的浮点数。

示例代码:

import torch

a = torch.rand(2,3)
print(a)

运行结果:

4、torch.randn

随机生成满足标准正态分布的浮点数。

示例代码:

import torch

a = torch.randn(2,3)
print(a)

运行结果:

5、torch.arange

生成[start;end)区间的浮点数,默认步长为1。

示例代码:

import torch

a = torch.arange(0,10,2)
print(a)

运行结果:

注意:不赞成使用torch.range。torch.range和python自带的range定义不太一样。

二、Tensor运算

1、tensor的数学运算

torch.abs  绝对值运算

torch.add 加法运算       torch.div  除法运算        torch.mul 乘法运算    torch.pow  幂运算

代码示例:

import torch

a = torch.randn(2,3)
print(a)
b = torch.abs(a)
print(b)
c = torch.add(a,b)
print(c)
c = torch.mul(a,b)
print(c)
c = torch.div(a,b)
print(c)
c = torch.pow(a,2)
print(c)

运行结果:

【Pytorch实战1】Pytorch中的Tensor_第1张图片

torch.mm  矩阵乘法   torch.mv矩阵与向量的乘法

代码示例

import torch

a = torch.randn(2,3)
print(a)
b = torch.randn(3,1)
c = torch.mm(a,b)
print(c.size())
b = b.view(3)
c = torch.mv(a,b)
print(c.siz

运行结果

2、一些常见的tensor操作

import torch

a = torch.randn(2,3)
print(a)
print(a[:,1])#元素的切片
b = a.view(3,2)#resieze操作
print(b)

a = torch.tensor(5)#单元素的张量
a.add_(1)#a = torch.add(a,1)
print(a)
print(a.item())#获取单元素张量的元素

【Pytorch实战1】Pytorch中的Tensor_第2张图片

三、Numpy Bridge

torch的tensor和numpy的array共享地址,因此改变其中一个也会改变另一个。

tensor——>array  tensor.numpy()

array——>tensor torch.from_numpy()

示例代码:

import torch
import  numpy as np
a = torch.tensor([3,4])
print(a)
b = a.numpy()#将tensor转换为numpy数组
print(b)
c = torch.from_numpy(b)

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


运行结果:

【Pytorch实战1】Pytorch中的Tensor_第3张图片

四、CUDA Tensors

to()函数可以将张量传递给任意的设备

示例代码:

import torch

if torch.cuda.is_available():
    device = torch.device("cuda")# a CUDA device object
    x = torch.randn(2,3)
    y = torch.ones_like(x,device=device)#直接在GPU上创建一个张量
    x = x.to(device)
    z = torch.add(x,y)
    print(z)
    print(z.to("cpu"))

运行结果:

【Pytorch实战1】Pytorch中的Tensor_第4张图片

你可能感兴趣的:(pytorch,pytorch)