title: 新手PytorchTensor笔记 (一)
date: 2021-08-06 16:04:20
tags: ["Pytorch", "Learning Note", "Muggle"]
categories: Pytorch
本篇博客介绍Pytorch
中的Tensor
概念, 如果你会用Numpy
的话, 学习轻而易举
来源官方文档: https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html#bridge-to-np-label
import torch
import numpy as np
Tensor Initialization 张量初始化
总结:
- 从普通的数据转变, 直接
torch.tensor()
- 从
Numpy
导入,torch.from_numpy()
- 抄其他数据格式,
torch.ones/rand_like()
① 从数据中生成Tensor
张量
data = [1, 2, 3, 4]
t_data = torch.tensor(data)
② 从Numpy
中导入
np_array = np.array(data)
t_np_array = torch.from_numpy(np_array)
③ 从其他Tensor
导入
t_ones = torch.ones_like(t_np_array)
t_rand = torch.rand_like(t_ones)
One Tensor:
tensor([1, 1, 1, 1])
tensor([0.2233, 0.5553, 0.3333, 0.5542])
④ 随机生成(需指定样式shape
)
shape = (2, 3, )
rand_tensor = torch.rand(shape)
ones_tensor = torch.ones(shape)
zeros_tensor = torch.zeros(shape)
# 额外讲讲 shape 的事情
x = torch.rand((2, 3, ))
# x的shape值是(2, 3, ), 表示这是一个二维数组, 有两行, 三列
y = torch.rand((2, ))
# y的shape是(2, ), 表示的是一个一维数组, 这个一维数组里, 有两个元素
z = torch.rand((2, 1 ))
# z的shape是(2, 1), 表示的是一个二维数组, 总共两行, 一列(每一行一个元素)
Tensor Attributes 张量属性
tensor.shape
tensor.dtype
-
tensor.devices
result is cpu or gpu
Tensor Operation
# We move our tensor to the GPU if available
if torch.cuda.is_available():
tensor = tensor.to('cuda')
torch
的用法和Numpy
很相近
tensor = torch.ones(4, 4)
tensor[:,1] = 0
tensor([ [1., 0., 1., 1.],
[1., 0., 1., 1.],
[1., 0., 1., 1.],
[1., 0., 1., 1.]])
t1 = torch.cat([tensor, tensor, tensor], dim=1)# 这里cat 将多个tensor按照 *列* 进行组合, 前提是除了 *列* 之外, 其他维度都要一样
tensor([ [1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],
[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],
[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],
[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.]])
用_
下缀会是全体的结果
tensor.add_(5) #是tensor中每一个单元都+5