PyTorch基础知识(超基础)

简介: PyTorch基础知识(超基础)

 一、PyTorch框架介绍

image.gif编辑

PyTorch是在2017年1月由Facebook推出的。它是经典机器学习库Torch框架的一个端口,主要编程语言为python。PyTorch“曾经”的优点是动态图,现在的优点是开源代码和开源社区。

PyTorch是一个年轻的框架。2017年1月28日,PyTorch 0.1版本正式发布,这是Facebook公司在机器学习和科学计算工具Torch的基础上,针对Python语言发布的全新的深度学习工具包。PyTorch类似NumPy,并且支持GPU,有着更高级而又易用的功能,可以用来快捷地构建和训练深度神经网络。一经发布,PyTorch便受到深度学习和开发者们广泛关注和讨论。经过一年多的发展,目前PyTorch已经成为机器学习和深度学习者重要的研究和开发工具之一。

二、tensor(张量)的属性

张量是PyTorch里的基本运算单位,与numpy的ndarray相同都表示一个多维的矩阵。与ndarray最大的区别在于Tensor能使用GPU加速,而ndarray只能用在CPU上。

1、导入torch库

import torch
a = torch.tensor([1,2,3],dtype=int)
b = torch.tensor([4,5,6],dtype=float)
print(a)
print(a.dtype) 
print(b)
//结果
//tensor([1, 2, 3])
//torch.int64   64位的int类型
//tensor([4., 5., 6.], dtype=torch.float64)

image.gif

2、数据的维度

tensor = torch.tensor([[1,2,3],[4,5,6]])

print(tensor.ndim)

//结果

//2

3、数据的形状

tensor = torch.tensor([[1,2,3],[4,5,6]])

print(tensor.shape)

print(tensor.size())

//结果

//torch.Size([2, 3])

//torch.Size([2, 3])

4、基础运算

sample = torch.rand(3, 2)
print(sample)
# 求总和
print(torch.sum(sample))
# 求最小值
print(torch.min(sample))
# 求最小值所在的位置(索引)
print(torch.argmin(sample))
# 求最大值所在的位置(索引)
print(torch.argmax(sample))
# 求平均值
print(torch.mean(sample))
# 求中位数
print(torch.median(sample))
# 求开方
print(torch.sqrt(sample))
# 求平方
print(sample ** 2)
//结果
tensor([[0.9740, 0.4381],
        [0.9116, 0.7061],
        [0.9465, 0.0322]])
tensor(4.0085)
tensor(0.0322)
tensor(5)
tensor(0)
tensor(0.6681)
tensor(0.7061)
tensor([[0.9869, 0.6619],
        [0.9548, 0.8403],
        [0.9729, 0.1793]])
tensor([[0.9487, 0.1919],
        [0.8310, 0.4986],
        [0.8960, 0.0010]])

image.gif

三、数据生成

1、生成数据集

import torch
a = torch.tensor([1,2,3],dtype=int)
b = torch.tensor([4,5,6],dtype=float)
print(a)
print(a.dtype) 
print(b)
//结果
//tensor([1, 2, 3])
//torch.int64   64位的int类型
//tensor([4., 5., 6.], dtype=torch.float64)

image.gif

2、读取数据集

def load_array(data_arrays, batch_size, is_train=True):  #@save
    # 构造一个PyTorch数据迭代器
    # torch.utils.data.TensorDataset(Dataset):包装数据和目标张量的数据集,直接传入张量参数即可(*tensor)
    # 该类通过每一个 tensor 的第一个维度进行索引。因此,该类中的 tensor 第一维度必须相等。
    dataset = data.TensorDataset(*data_arrays)
    # 通过DataLoader类从dataset中选取数据,每次读取大小为batch_size
    return data.DataLoader(dataset, batch_size, shuffle=is_train)
batch_size = 10
# 传入张量数组,返回一个可迭代的张量组
data_iter = load_array((features, labels), batch_size)

image.gif


相关文章
|
7月前
|
机器学习/深度学习 算法 PyTorch
PyTorch 人工智能基础知识:6~8
PyTorch 人工智能基础知识:6~8
168 0
|
7月前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch 人工智能基础知识:1~5
PyTorch 人工智能基础知识:1~5
105 0
|
机器学习/深度学习 搜索推荐 数据挖掘
【Pytorch神经网络理论篇】 25 基于谱域图神经网络GNN:基础知识+GNN功能+矩阵基础+图卷积神经网络+拉普拉斯矩阵
图神经网络(Graph Neural Network,GNN)是一类能够从图结构数据中学习特征规律的神经网络,是解决图结构数据(非欧氏空间数据)机器学习问题的最重要的技术之一。
1014 0
|
机器学习/深度学习 人工智能 PyTorch
Pytorch的安装与基础知识和前置知识
Pytorch的安装与基础知识和前置知识
251 0
|
机器学习/深度学习 人工智能 PyTorch
PyTorch学习笔记(二):PyTorch简介与基础知识
概念:由Facebook人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库 优势:简洁、上手快、具有良好的文档和社区支持、项目开源、支持代码调试、丰富的扩展库
163 0
|
2月前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
399 2
|
26天前
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
43 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
|
2月前
|
机器学习/深度学习 自然语言处理 监控
利用 PyTorch Lightning 搭建一个文本分类模型
利用 PyTorch Lightning 搭建一个文本分类模型
79 8
利用 PyTorch Lightning 搭建一个文本分类模型
|
2月前
|
机器学习/深度学习 自然语言处理 数据建模
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨了Transformer模型中的三种关键注意力机制:自注意力、交叉注意力和因果自注意力,这些机制是GPT-4、Llama等大型语言模型的核心。文章不仅讲解了理论概念,还通过Python和PyTorch从零开始实现这些机制,帮助读者深入理解其内部工作原理。自注意力机制通过整合上下文信息增强了输入嵌入,多头注意力则通过多个并行的注意力头捕捉不同类型的依赖关系。交叉注意力则允许模型在两个不同输入序列间传递信息,适用于机器翻译和图像描述等任务。因果自注意力确保模型在生成文本时仅考虑先前的上下文,适用于解码器风格的模型。通过本文的详细解析和代码实现,读者可以全面掌握这些机制的应用潜力。
137 3
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
|
3月前
|
机器学习/深度学习 PyTorch 调度
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
在深度学习中,学习率作为关键超参数对模型收敛速度和性能至关重要。传统方法采用统一学习率,但研究表明为不同层设置差异化学习率能显著提升性能。本文探讨了这一策略的理论基础及PyTorch实现方法,包括模型定义、参数分组、优化器配置及训练流程。通过示例展示了如何为ResNet18设置不同层的学习率,并介绍了渐进式解冻和层适应学习率等高级技巧,帮助研究者更好地优化模型训练。
222 4
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型