新手PytorchTensor笔记 (一)


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
上一篇:MySQL如何随机查询表中的几行记录


下一篇:国赛培训——随机化算法——蒙特卡洛模拟