欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

PyTorch 学习笔记 (II):PyTorch 简介和基础知识

最编程 2024-04-07 13:06:05
...

1. PyTorch简介


概念:由Facebook人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库

优势:简洁、上手快、具有良好的文档和社区支持、项目开源、支持代码调试、丰富的扩展库


2 PyTorch基础知识


2.1张量

分类:0维张量(标量)、1维张量(向量)、2维张量(矩阵)、3维张量(时间序列)、4维张量(图像)、5维张量(视频)

概念:一个数据容器,可以包含数据、字符串等

import torch
# 创建tensor
x = torch.rand(4, 3)
print(x)
# 构造数据类型为long,数据是0的矩阵
x = torch.zeros(4, 3, dtype=torch.long)
print(x)
tensor([[0.9515, 0.6332, 0.8228],
        [0.3508, 0.0493, 0.7606],
        [0.7326, 0.7003, 0.1925],
        [0.1172, 0.8946, 0.9501]])
tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]])

常见的构造Tensor的函数:


函数 功能

Tensor(*sizes) 基础构造函数

tensor(data) 类似于np.array

ones(*sizes) 全1

zeros(*sizes) 全0

eye(*sizes) 对角为1,其余为0

arange(s,e,step) 从s到e,步长为step

linspace(s,e,steps) 从s到e,均匀分成step份

rand/randn(*sizes) rand是[0,1)均匀分布;randn是服从N(0,1)的正态分布

normal(mean,std) 正态分布(均值为mean,标准差是std)

randperm(m) 随机排列

操作:


使用索引表示的变量与原数据共享内存,即修改其中一个,另一个也会被修改

使用torch.view改变tensor的大小

广播机制:当对两个形状不同的Tensor按元素运算时,可能会触发广播(broadcasting)机制

# 使用view改变张量的大小
x = torch.randn(5, 4)
y = x.view(20)
z = x.view(-1, 5) # -1是指这一维的维数由其他维度决定
print(x.size(), y.size(), z.size())
torch.Size([5, 4]) torch.Size([20]) torch.Size([4, 5]) 
x = tensor([[1, 2]])
y = tensor([[1],
        [2],
        [3]])
x + y = tensor([[2, 3],
        [3, 4],
        [4, 5]])