《深度学习之pytorch实战计算机视觉》
Pytorch官方教程
Pytorch中文文档
Tensor在Pytorch中负责存储基本数据,用于替代numpy。tensor数据类型的变量可以在GPUs上进行运算。
用于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定义不太一样。
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)
运行结果:
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())#获取单元素张量的元素
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)
运行结果:
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"))
运行结果: