【安装和引入 PyTorch 包,快来收藏】

在本文介绍 PyTorch 中一些最常用的命令和设置。

在这里插入图片描述

一个完成的 PyTorch 工作流程。
在这里插入图片描述

安装和引入 PyTorch 包

最好的安装教程就是去官方网站:https://pytorch.org/get-started/locally/

安装结束之后,直接引入整个 torch 包:

import torch

或者是按需引入:

from torch import nn

由于大多数机器学习都是在数据中寻找模式,因此了解如何在 PyTorch 中处理数据集是很有必要的。

from torch.utils.data import Dataset, DataLoader

创建张量

PyTorch 的主要用例之一是加速深度学习计算。深度学习通常涉及操纵大型张量(大型、多维数字集合)。

PyTorch 有许多创建张量的方法。

# Create a single number tensor (scalar)
scalar = torch.tensor(7)# Create a random tensor
random_tensor = torch.rand(size=(3, 4)) # this will create a tensor of size 3x4 but you can manipulate the shape how you want# Multiply two random tensors
random_tensor_1 = torch.rand(size=(3, 4))
random_tensor_2 = torch.rand(size=(3, 4))
random_tensor_3 = random_tensor_1 * random_tensor_2 # PyTorch has support for most math operators in Python (+, *, -, /)

特定领域相关的库

根据我们正在处理的具体问题,PyTorch 有多个与具体领域相关的库:

TorchVision — PyTorch 的内置计算机视觉库。

TorchText — PyTorch 的内置文本库。

TorchAudio — PyTorch 的音频库。

TorchRec — PyTorch 最新的用于通过深度学习为推荐引擎提供支持的库。

计算机视觉

https://pytorch.org/vision/stable/index.html

# Base computer vision library
import torchvision# Other components of TorchVision (premade datasets, pretrained models and image transforms)
from torchvision import datasets, models, transforms

自然语言处理

https://pytorch.org/text/stable/index.html

# Base text and natural language processing library
import torchtext# Other components of TorchText (premade datasets, pretrained models and text transforms)
from torchtext import datasets, models, transforms

语音

https://pytorch.org/audio/stable/index.html

# Base audio and speech processing library
import torchaudio# Other components of TorchAudio (premade datasets, pretrained models and text transforms)
from torchaudio import datasets, models, transforms

推荐系统


https://pytorch.org/torchrec/

# # Base recommendation system library 
# import torchrec# # Other components of TorchRec
# from torchrec import datasets, models

在不同设备上使用 PyTorch

深度学习的大部分内容都涉及张量计算。

张量计算在 GPU(通常来自 NVIDIA)上通常比在 CPU 上运行得更快。通常是:NVIDIA GPU(cuda)> MPS 设备(mps)> CPU(cpu)。

MPS 代表 Metal Performance Shader ,即 Apple 的 GPU(M1、M1 Pro、M2 等)。关于mps更多详细的教程可以去官方网站:

https://pytorch.org/docs/stable/notes/mps.html

编写自动检测设备的代码:

# Setup device-agnostic code 
if torch.cuda.is_available():device = "cuda" # NVIDIA GPU
elif torch.backends.mps.is_available():device = "mps" # Apple GPU
else:device = "cpu" # Defaults to CPU if NVIDIA GPU/Apple GPU aren't availableprint(f"Using device: {device}")

然后我们可以通过 .to(“device_name”) 方法将 PyTorch 中的对象(模型和张量)移动到不同的设备。

# Create a tensor 
x = torch.tensor([1, 2, 3]) 
print(x.device) # defaults to CPU # Send tensor to target device
x = x.to(device)
print(x.device)

设置随机数种子

许多机器学习和深度学习涉及在张量中获取随机数,然后对这些随机数进行整形以查找/表示真实数据中的模式。

但是,有时我们需要“可重现”的随机性。为此,我们可以设置随机种子。

import torch# Set the random seed (you can set this to any number you like, it will "flavour"
# the randomness with that number.
torch.manual_seed(42)# Create two random tensors
random_tensor_A = torch.rand(3, 4)torch.manual_seed(42) # set the seed again (try commenting this out and see what happens)
random_tensor_B = torch.rand(3, 4)print(f"Tensor A:\n{random_tensor_A}\n")
print(f"Tensor B:\n{random_tensor_B}\n")
print(f"Does Tensor A equal Tensor B? (anywhere)")
random_tensor_A == random_tensor_B

在这里插入图片描述

还可以在 GPU(CUDA 设备)上设置随机种子。

# Set random seed on GPU
torch.cuda.manual_seed(42)

神经网络

PyTorch 拥有一个非常全面的预构建神经网络组件库(其中许多在 PyTorch 生态系统中被称为“模块”)。

从根本上讲,神经网络是层的堆叠。这些层中的每一层都对输入执行某种操作并产生输出。这些层如何堆叠在一起将取决于你正在处理的问题。机器学习中最活跃的研究领域之一是如何将神经网络层堆叠在一起。

PyTorch 中的绝大多数神经网络组件都包含在 torch.nn 包中(nn 是神经网络 neural network 的缩写)。

https://pytorch.org/docs/stable/nn.html

from torch import nn

线性层

PyTorch 有很多内置的线性层。

https://pytorch.org/docs/stable/nn.html#linear-layers

# Create a linear layer with 10 in features and out features
linear_layer = nn.Linear(in_features=10,out_features=10)# Create an Identity layer
identity_layer = nn.Identity()

卷积层

PyTorch 有几个内置的卷积层。


https://pytorch.org/docs/stable/nn.html#convolution-layers

卷积层的命名通常遵循 torch.nn.ConvXd,其中 X 可以是1、2或3。X 值表示卷积将在其上运行的维度数,例如,1表示单维文本,2表示二维图像(高度 x 宽度),3表示视频等3D对象(视频被视为具有时间维度的一系列图像,高度 x 宽度 x 时间)。

# Create a Conv1d layer (often used for text with a singular dimension)
conv1d = nn.Conv1d(in_channels=1,out_channels=10,kernel_size=3)# Create a Conv2d layer (often used for images with Height x Width dimensions)
conv2d = nn.Conv2d(in_channels=3, # 3 channels for color images (red, green, blue)out_channels=10,kernel_size=3)# Create a Conv3d layer (often used for video with Height x Width x Time dimensions)
conv3d = nn.Conv3d(in_channels=3,out_channels=10,kernel_size=3)

Transformer 层

PyTorch 具有内置的,如论文《Attention Is All You Need》中所描述的 Transformer 层。

(https://arxiv.org/abs/1706.03762)

得益于 PyTorch 的 BetterTransformer,使用内置的 PyTorch Transformer 层可以带来潜在的加速优势。

https://pytorch.org/blog/a-better-transformer-for-fast-transformer-encoder-inference/

# Create a Transformer model (model based on the paper "Attention Is All You Need" - https://arxiv.org/abs/1706.03762)
transformer_model = nn.Transformer()# Create a single Transformer encoder cell
transformer_encoder = nn.TransformerEncoderLayer(d_model=768, # embedding dimensionnhead=12) # number of attention heads# Create a single Transformer decoder cell
transformer_decoder = nn.TransformerDecoderLayer(d_model=768,nhead=12)# Stack together Transformer decoder cells
transformer_decoder_stack = nn.TransformerDecoder(decoder_layer=transformer_decoder, # from abovenum_layers=6) # 6 Transformer decoders stacked on top of each other

循环层

PyTorch 内置了对循环神经网络(RNN)层的支持,例如 LSTM 和 GRU。

# Create a single LSTM cell
lstm_cell = nn.LSTMCell(input_size=10, # can adjust as necessaryhidden_size=10) # can adjust as necessary# Stack together LSTM cells
lstm_stack = nn.LSTM(input_size=10,hidden_size=10,num_layers=3) # 3 single LSTM cells stacked on top of each other# Create a single GRU cell
gru_cell = nn.GRUCell(input_size=10, # can adjust as necessaryhidden_size=10) # can adjust as necessary# Stack together GRU cells
gru_stack = nn.GRU(input_size=10, hidden_size=10,num_layers=3) # 3 single GRU cells stacked on top of each other

激活函数

激活函数通常位于神经网络的各层之间,为线性(直线)函数添加非线性(非直线)功能。本质上,神经网络通常由大量线性和非线性函数组成。

PyTorch 在 torch.nn 中内置了几个非线性激活函数。其中一些最常见的是:

nn.ReLU

nn.Sigmoid

nn.Softmax

# ReLU
relu = nn.ReLU()# Sigmoid
sigmoid = nn.Sigmoid()# Softmax
softmax = nn.Softmax()

损失函数

损失函数衡量模型的错误程度。也就是说,它衡量了模型的预测值与真实值的偏差有多大。

PyTorch(以及一般的深度学习)中的损失函数也经常被称为:标准(criterion)、成本函数。PyTorch 在 torch.nn 中内置了几个损失函数。其中一些最常见的是:

nn.L1Loss - 也称为 MAE 或平均绝对误差(此损失通常用于回归问题或预测数字,例如房价)。

nn.MSELoss - 也称为 L2Loss 或均方误差(此损失通常用于回归问题或预测数字,例如房价)。

nn.BCEWithLogitsLoss - 也称为二元交叉熵,此损失函数通常用于二元分类问题。

nn.CrossEntropyLoss——此损失函数通常用于多类分类问题。

# L1Loss
loss_fn = nn.L1Loss() # also known as MAE or mean absolute error# MSELoss
loss_fn = nn.MSELoss() # also known as MSE or mean squared error# Binary cross entropy (for binary classification problems)
loss_fn = nn.BCEWithLogitsLoss()# Cross entropy (for multi-class classification problems)
loss_fn = nn.CrossEntropyLoss()

优化器

优化器的作用是改变神经网络权重,从而降低损失函数值。

PyTorch 在 torch.optim 模块中内置了几个优化函数。两个主要的优化器函数包括:

torch.optim.SGD(lr=0.1, params=model.parameters()) - SGD 也称为随机梯度下降(stochastic gradient descent)。

torch.optim.Adam(lr=0.001, params=model.parameters()) - Adam 优化器。

lr 代表学习率(learning rate),即每一步修改神经网络权重的乘数,小值 = 小调整,大值 = 大调整)。

params 代表“模型参数”,换句话说,就是您希望优化函数在训练期间优化的模型参数/权重。

# Create a baseline model
model = nn.Transformer()# SGD (stochastic gradient descent)
optimizer = torch.optim.SGD(lr=0.1, # set the learning rate (required)params=model.parameters()) # tell the optimizer what parameters to optimize# Create a baseline model
model = nn.Transformer()# Adam optimizer
optimizer = torch.optim.Adam(lr=0.001, # set the learning rate (required)params=model.parameters()) # tell the optimizer what para

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/28982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL注入-上篇

SQL注入 注入是web安全的头号大敌。注入攻击漏洞往往是应用程序缺少对输入进行安全性检查所引起的。攻击者把一些包含攻击代码当做命令或者查询语句发送给解释器,这些恶意数据可以欺骗解释器,从而执行计划外的命令或者未授权访问数据。注入漏洞通常能sq…

MySQL约束详解:构建数据完整性基石

目录 MySQL约束1.1 约束1.1 数据类型1.2 主键约束[重要]1.3 自增约束1.4 唯一约束1.5 非空约束1.6 默认值代码演示 1.7 外键约束[了解]思维导图最后 MySQL约束 MySQL作为广泛使用的开源关系型数据库管理系统,其强大的数据约束功能对于维护数据的一致性和准确性至关…

4.类,方法,对象

1.1.2. 面向对象程序设计的三大特征 1.1.2.1. 封装 面向对象编程核心思想之一就是将数据和对数据的操作封装在一起,形成一般的概念,比如类的概念。 1.1.2.2. 继承 继承体现了一种先进的编程模式。子类可以继承父类的属性和方法。 1.1.2.3. 多态 多…

Day 44 Ansible自动化运维

Ansible自动化运维 几种常用运维工具比较 ​ Puppet ​ —基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱ruby ​ SaltStack ​ —基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量级,配置语法使用 YAML,使得配置脚本更简单 ​ Ansible ​ —基于 …

Python学习笔记12:进阶篇(一),类的相关知识

前言 在讲类之前,我们简单介绍一些Python的知识。这些知识在入门篇没讲,想学Python的,基本都对Python有基础的了解,但是今天开始的进阶知识,会涉及到一些Python的特性,所以在这里介绍一下。 Python是一种高…

Unity2D游戏制作入门 | 13 ( 之人物三段攻击 )

上期链接:Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)-CSDN博客 上期我们聊了人物的受伤和死亡的逻辑和动画,我们主要学习了事件的执行,即我们在人物受伤时可能会触发很多的事件,比如触发人物受伤的动画以及播放音乐等…

LabVIEW电表改装与校准仿真系统

LabVIEW开发的电表改装与校准仿真实验平台不仅简化了传统的物理实验流程,而且通过虚拟仿真提高了实验的效率和安全性。该平台通过模拟电表改装与校准的各个步骤,允许学生在没有实际硬件的情况下完成实验,有效地结合了理论学习和实践操作。 项…

计算机组成原理(三)

文章目录 只读存储器和闪速存储器ROM 只读存储器光擦可编程只读存储器(EPROM) 闪速存储器 并行存储器双端口存储器多模块交叉存储器定量分析 相联存储器 只读存储器和闪速存储器 ROM 只读存储器 ROM ,只能读出不能写入,最大的优点是不易失性。 光擦可编程只读存储器…

Spring Security+Spring Boot实现登录认证以及权限认证

基本概念 “Authentication(认证)”是spring security框架中最重要的功能之一,所谓认证,就是对当前访问系统的用户给予一个合法的身份标识,用户只有通过认证才可以进入系统,在物理世界里,有点类似于“拿工卡刷门禁”的…

homework 2024.06.17 math, UI

A的宽度225 B的宽度150 这样画出来就比较标准, 225 * 2 150 * 3 2A 3B

【排序算法】希尔排序详解(C语言)

文章目录 前言希尔排序的原理原理思路 代码实现希尔排序的相关问题效率算法稳定性 前言 为什么会有希尔排序,要从插入排序说起,希尔排序一开始设计出来是为了改进插入排序,因为插入排序在处理大量数据时效率不高,特别是对于近乎有…

【MySQL】MySQL数据库基础|数据库的操作|常用数据类型|表的操作

目录 一、数据库的操作(针对“数据集合”的操作) 1.显示当前的数据库 2.创建数据库 3.使用数据库 4.删除数据库 二、常用数据类型 1.数值类型 2.字符串类型 3.日期类型 三、表的操作 1.列出当前数据库的表 2.创建表 3.查看表结构 4.删除表…

11.5.k8s中pod的调度-cordon,drain,delete

目录 一、概念 二、使用 1.cordon 停止调度 1.1.停止调度 1.2.解除恢复 2.drain 驱逐节点 2.1.驱逐节点 2.2.参数介绍 2.3.解除恢复 3.delete 删除节点 一、概念 cordon节点,drain驱逐节点,delete 节点,在对k8s集群节点执行维护&am…

CesiumJS【Basic】- #006 浏览器控制台查看位置角度

文章目录 浏览器控制台查看位置角度1 目标 浏览器控制台查看位置角度 1 目标 浏览器控制台查看位置角度

KVB:怎么样选择最优交易周期?

摘要 在金融交易中,周期的选择是影响交易成败的重要因素之一。不同的交易周期对应不同的市场环境和交易策略,选择合适的周期可以提高交易的成功率。本文将详细探讨交易中如何选择最优周期,包括短周期、中周期和长周期的特点及适用情况&#…

软考系统规划与管理师伴读脑图第9章

周末发系统规划与管理师的试听视频,占用了发送次数,所以上周的脑图推迟了今天发出。 不知不觉已经发到了第9章,感叹这就是坚持积累下来的力量,其实考试也是一样的道理。

Git--Part3--远程操作 配置 标签管理

theme: nico 远程仓库 Git 是分布式版本控制系统,同⼀个 Git 仓库,可以分布到不同的机器上。怎么分布呢? 最早,肯定只有⼀台机器有⼀个原始版本库,此后,别的机器可以 “克隆” 这个原始版本库&#xff0…

AI导航网

文章目录 1、[AI导航网](https://www.ainav.cn/) 1、AI导航网 https://www.ainav.cn/

苍穹外卖笔记-18-修改密码、bug记录

文章目录 1 修改密码1.1 需求分析和设计1.2 代码实现1.2.1 admin/EmployeeController1.2.2 EmployeeService1.2.3 EmployeeServiceImpl 1.3 功能测试 2 bug记录 1 修改密码 完结的时候发现还有一个接口未实现。这里补充 1.1 需求分析和设计 产品原型: 业务规则&am…

CMake从安装到精通

目录 引言 1. CMake的安装 2. CMake的原理 3. CMake入门 3.1 CMakeLists.txt与注释 3.2 版本指定与工程描述 3.3 生成可执行程序 3.4 定义变量与指定输出路径 3.5 指定C标准 3.6 搜索文件 3.7 包含头文件 4. CMake进阶 4.1 生成动静态库 4.2 链接动静态库 4.…