【PyTorch学习-1】张量操作|自动求导|神经网络模块|优化器|数据加载与处理|GPU 加速...
【PyTorch学习-1】张量操作|自动求导|神经网络模块|优化器|数据加载与处理|GPU 加速…
【PyTorch学习-1】张量操作|自动求导|神经网络模块|优化器|数据加载与处理|GPU 加速…
文章目录
- 【PyTorch学习-1】张量操作|自动求导|神经网络模块|优化器|数据加载与处理|GPU 加速...
- 前言
- 1. PyTorch 常用库和模块
- 2. 张量操作(Tensor)
- 2.1 创建张量
- 2.2 张量的属性
- 2.3 张量的操作
- 2.4 张量与 NumPy 的转换
- 3. 自动求导(Autograd)
- 3.1 自动求导的基本操作
- 3.2 停止梯度追踪
- 3.3 计算图与梯度累积
- 4. 神经网络模块(torch.nn)
- 4.1 定义神经网络模型
- 4.2 常用层
- 4.3 损失函数
- 5. 优化器(torch.optim)
- 5.1 常用优化器
- 5.2 使用优化器
- 6. 数据加载与处理(torch.utils.data)
- 6.1 Dataset 类
- 6.2 DataLoader 类
- 7. GPU加速
- 7.1 检查是否支持 GPU
- 7.2 将模型和张量迁移到 GPU
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
前言
PyTorch 是一个非常流行的深度学习框架,提供了灵活和易用的 API,支持张量计算、自动求导、构建神经网络、GPU 加速等。下面是 PyTorch 常用的语法和函数的全面介绍,涵盖张量操作、神经网络构建、优化器、自动求导、数据处理等。
1. PyTorch 常用库和模块
- 1.
torch:核心模块,包含张量操作、数学计算、自动求导等功能。 - 2.
torch.nn:神经网络相关的模块,提供各种层(如卷积、全连接等)和常用损失函数。 - 3.
torch.optim:优化器模块,用于定义优化算法,如 SGD、Adam 等。 - 4.
torch.autograd:自动求导模块,用于实现自动反向传播计算。 - 5.
torch.utils.data:数据处理模块,包含Dataset和DataLoader,用于处理和加载数据集。
2. 张量操作(Tensor)
张量是 PyTorch 的核心数据结构,类似于 NumPy 的数组,但可以在 GPU 上运行。
2.1 创建张量
- 通过
torch.tensor()创建张量:
import torch
a = torch.tensor([1, 2, 3])
print(a) # tensor([1, 2, 3])
- 创建随机数张量:
rand_tensor = torch.rand(3, 4) # 3x4的随机数张量
print(rand_tensor)
2.2 张量的属性
shape、dtype和device:
tensor = torch.rand(3, 4)
print(tensor.shape) # 输出张量的形状
print(tensor.dtype) # 数据类型
print(tensor.device) # 设备(CPU or GPU)
2.3 张量的操作
- 张量的数学运算,如加减乘除、矩阵乘法:
a = torch.tensor([1, 2])
b = torch.tensor([3, 4])
print(a + b) # 加法
print(a * b) # 乘法
print(a @ b.T) # 矩阵乘法
- 维度变换:
view()、reshape()和transpose()用于改变张量形状:
x = torch.randn(4, 3)
y = x.view(3, 4) # 改变形状
print(y)
- 索引和切片:
x = torch.tensor([[1, 2], [3, 4], [5, 6]])
print(x[0]) # 选择第一行
print(x[:, 1]) # 选择第二列
print(x[1:, :]) # 选择从第二行开始的所有行
2.4 张量与 NumPy 的转换
- 从
torch.Tensor转换为numpy.array:
a = torch.ones(5)
b = a.numpy()
print(b)
- 从
numpy.array转换为torch.Tensor:
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
print(b)
3. 自动求导(Autograd)
PyTorch 中的 autograd 模块支持自动求导功能,即反向传播。
3.1 自动求导的基本操作
requires_grad标志用于启用对张量的梯度跟踪:
x = torch.tensor([2.0, 3.0], requires_grad=True)
y = x ** 2 # y = [4, 9]
y.backward(torch.tensor([1.0, 1.0])) # 计算梯度
print(x.grad) # 输出 x 的梯度
3.2 停止梯度追踪
在推理阶段或者某些计算中,我们不需要计算梯度,可以使用 torch.no_grad() 或 detach()。
- 使用
no_grad():
with torch.no_grad():y = model(x)
- 使用
detach():
x = torch.tensor([1.0], requires_grad=True)
y = x ** 2
z = y.detach() # z 不会计算梯度
3.3 计算图与梯度累积
- 反向传播时,PyTorch 会默认将梯度累积到
grad属性中,因此在每次反向传播之前,需要清零梯度:
optimizer.zero_grad()
loss.backward()
optimizer.step()
4. 神经网络模块(torch.nn)
PyTorch 提供了 torch.nn 模块,用于定义神经网络的层和损失函数。
4.1 定义神经网络模型
torch.nn.Module 是所有神经网络的基类,通常需要在类的 __init__ 方法中定义网络的层,在 forward() 方法中定义前向传播过程。
- 简单的前馈神经网络示例:
import torch.nn as nnclass SimpleNet(nn.Module):def __init__(self):super(SimpleNet, self).__init__()self.fc1 = nn.Linear(10, 50)self.fc2 = nn.Linear(50, 1)def forward(self, x):x = torch.relu(self.fc1(x))x = self.fc2(x)return xmodel = SimpleNet()
4.2 常用层
- 全连接层:
torch.nn.Linear用于实现全连接层。
fc = nn.Linear(in_features=10, out_features=5)
- 卷积层:
torch.nn.Conv2d用于实现二维卷积。
conv = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3)
-
激活函数:
ReLU:torch.nn.ReLU()
Sigmoid:torch.nn.Sigmoid()
Tanh:torch.nn.Tanh() -
池化层:
torch.nn.MaxPool2d和torch.nn.AvgPool2d用于池化操作。
pool = nn.MaxPool2d(kernel_size=2, stride=2)
4.3 损失函数
PyTorch 提供了多种常用的损失函数,如均方误差(MSE)、交叉熵损失(CrossEntropy)。
- 均方误差(MSE)损失函数:
loss_fn = nn.MSELoss()
loss = loss_fn(predicted_output, target_output)
- 交叉熵损失函数:
loss_fn = nn.CrossEntropyLoss()
loss = loss_fn(predictions, labels)
5. 优化器(torch.optim)
PyTorch 的 torch.optim 模块提供了多种优化算法,用于更新模型的参数。
5.1 常用优化器
- 随机梯度下降(SGD):
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
- Adam 优化器:
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
5.2 使用优化器
- 在每个训练迭代中,使用优化器更新模型参数的典型步骤:
optimizer.zero_grad() # 清空梯度
loss.backward() # 反向传播
optimizer.step() # 更新参数
6. 数据加载与处理(torch.utils.data)
6.1 Dataset 类
torch.utils.data.Dataset 是数据集的抽象类,用户可以通过继承 Dataset 类来自定义数据集。
- 自定义数据集:
from torch.utils.data import Datasetclass CustomDataset(Dataset):def __init__(self, data, labels):self.data = dataself.labels = labelsdef __len__(self):return len(self.data)def __getitem__(self, index):return self.data[index], self.labels[index]
6.2 DataLoader 类
torch.utils.data.DataLoader 用于将 Dataset 打包成可迭代的数据批次,并支持多线程加载。
- 使用
DataLoader:
from torch.utils.data import DataLoaderdataset = CustomDataset(data, labels)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
for batch in dataloader:inputs, targets = batch
7. GPU加速
PyTorch 提供了对 GPU 的支持,可以使用 CUDA 设备加速计算。
7.1 检查是否支持 GPU
print(torch.cuda.is_available())
7.2 将模型和张量迁移到 GPU
- 将张量迁移到 GPU:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tensor = tensor.to(device)
- 将模型迁移到 GPU:
model = model.to(device)
通过这份全面的 PyTorch 语法和函数介绍,你可以更好地掌握 PyTorch 的基本用法以及常用的深度学习相关功能。
相关文章:
【PyTorch学习-1】张量操作|自动求导|神经网络模块|优化器|数据加载与处理|GPU 加速...
【PyTorch学习-1】张量操作|自动求导|神经网络模块|优化器|数据加载与处理|GPU 加速… 【PyTorch学习-1】张量操作|自动求导|神经网络模块|优化器|数据加载与处理|GPU 加速… 文章目录 【PyTorch学习-1】张量操作|自动求导|神经网络模块|优化器|数据加载与处理|GPU 加速...前言…...
Leecode热题100-560.和为k的子数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,2,3], k…...
Mac 卸载 IDEA 流程
1、现在应用程序中删除Idea 2、进入Library目录 cd /Users/zhengzhaoxiang/Library 3、删除IntelliJIdea2023.3(根据自己的版本而定)记得进去看下是否删除干净了 rm -rf Logs/JetBrains/IntelliJIdea2023.3 rm -rf Preferences/com.jetbrains.intel…...
vue3 antdv3/4 Modal显示一个提示,内容换行显示。
1、官网地址: Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 2、显示个信息: Modal.info({title: This is a notification message,content: h(div, {}, [h(p, some messages...some messages...),h(p, some …...
Jgit的使用
Jgit的使用 文章目录 Jgit的使用一,git操作的对应代码1.1 查看操作1.1.1 打开仓库1.1.3 获取状态信息 1.2 添加操作1.2.1 初始化本地仓库1.2.2 创建一个新文件并写入内容1.2.3 添加指定(所有)文件到暂存区1.2.4 提交操作1.2.5 连接并推送到远…...
SQL Server—约束和主键外键详解
SQL Server—约束和主键外键详解 约束和主键外键 主键 和 外键 -- 主键: 关系型数据库中一条记录有若干个属性,若其中某一个属性能够位置标识这条记录,这个属性就可以设置为表的主键,主键是确定一条记录的唯一标识,有可能作为主键…...
信息学奥赛复赛复习14-CSP-J2021-03网络连接-字符串处理、数据类型溢出、数据结构Map、find函数、substr函数
PDF文档回复:20241007 1 P7911 [CSP-J 2021] 网络连接 [题目描述] TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个协议,还原一个简化后的网络连接场景。 在本问题中,计算机分为两大类:服务机&#x…...
Allegro如何合并同名网络铜皮操作指导
Allegro如何合并同名网络铜皮操作指导 Allegro可以将同名网络的铜皮合并起来,如下图,需要把下面两块铜皮合并成一块铜皮 具体操作如下 选择Shape 选择merge shapes Find选择shapes 点击其中一块铜皮,会被亮起来 再点击另外一块铜皮 两块铜皮…...
【探测器】线阵相机中的 TDI 技术
【探测器】线阵相机中的 TDI 技术 1.背景2.TDI相机3.场景应用 1.背景 TDI 即Time Delay Integration时间延迟积分。 TDI相机是线阵相机的一种特殊类型,带有独特的时间延迟积分(TDI)技术。 换句话说,TDI相机是线阵相机的一个高级版…...
k8s 之安装metrics-server
作者:程序那点事儿 日期:2024/01/29 18:25 metrics-server可帮助我们查看pod的cpu和内存占用情况 kubectl top po nginx-deploy-56696fbb5-mzsgg # 报错,需要Metrics API 下载 Metrics 解决 wget https://github.com/kubernetes-sigs/metri…...
java学习-idea编辑器基础使用设置
首先打开电脑中的idea编辑器,点击头部:File按钮 → Settings… 打开设置界面; 设置idea的主题 设置idea代码注释的字体颜色 设置idea编辑器的字体和字体大小 设置idea通过提示回车自动导入包 设置idea输入忽略大小写进行提示...
PDSCH(物理下行共享信道)简介
文章目录 PDSCH(物理下行共享信道)简介1. Transport block CRC attachment2. LDPC base graph selection3. Code block segmentation And Code Block CRC Attachment4. Channel Coding5. Rate Matching6. Code Block Concatenation7. Scrambling8. Modul…...
hutool bug
Hutool参考文档 不用随便升级版本 版本5.8 1: 不要用 ReflectUtil.newInstance(cName); * 和spring 部分框架整合 ,子类转换为父类或者接口失败,报转换失败的错误 https://gitee.com/dromara/hutool/issues/I18NCR?skip_mobiletrue 改成使…...
69.x的平方根 367.完全有效的平方数
题目:69. x 的平方根 - 力扣(L69eetCode) 经典平方根问题,用二分法慢慢逼近找开方值,注意mid*mid要用long long值,不然会溢出 class Solution { public:int mySqrt(int x) {int left 0; int right x;int ans -1; w…...
Android Automotive(一)
目录 什么是Android Automotive Android Automotive & Android Android Automotive 与 Android Auto 什么是Android Automotive Android Automotive 是一个基础的 Android 平台,它能够运行预装的车载信息娱乐系统(IVI)应用程序,以及可选的二方和三方 Android 应用程…...
命令设计模式
简介 命令模式(Command Pattern)是对命令的封装,每一个命令都是一个操作:请求方发出请求要求执行一个操作;接收方收到请求,并执行操作。命令模式解耦了请求方和接收方,请求方只需请求执行命令&…...
探索智能新境界:最好用的AI工具盘点
你用过最好用的AI工具有哪些? 在人工智能技术飞速发展的今天,AI工具正逐渐成为我们工作和生活中不可或缺的助手。它们不仅提高了效率,还为我们提供了创新的解决方案。作为一名对AI充满热情的用户,我有幸体验了许多优秀的AI工具。…...
【Redis】持久化(下)-- AOF
文章目录 AOF概念如何使用AOFAOF工作流程命令写入演示文件同步策略 AOF的重写机制概念触发重写机制AOF重写流程 启动时数据恢复混合持久化总结 AOF 概念 AOF持久化:以独立日志的方式记录每次的写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的.AOF的主要作用是解决…...
用Arduino单片机制作一个简单的音乐播放器
Arduino单片机上有多个数字IO针脚,可以输出数字信号,用于驱动发声器件,从而让它发出想要的声音。蜂鸣器是一种常见的发声器件,通电后可以发出声音。因此,单片机可以通过数字输出控制蜂鸣器发出指定的声音。另外&#x…...
软件工程相关
1.软件过程模型(重要) 1.1.瀑布模型 只适合需求明确的项目严格串行化,很长时间才能看到结果。严格区分阶段,每个阶段因果紧密相连,且要求每个阶段一次性解决该阶段的任务 1.2.原型模型(构造简易模型确定…...
【Midjourney极简艺术风格终极指南】:20年视觉设计专家亲授3大构图法则、5类禁用提示词与1套可复用Prompt模板
更多请点击: https://intelliparadigm.com 第一章:极简艺术风格的本质与Midjourney适配原理 极简艺术风格并非简单地“减少元素”,而是通过精准的留白、克制的色彩、几何化的形态与高度凝练的视觉语法,实现信息密度与情绪张力的平…...
基于Adafruit Audio FX的智能穿戴音频系统设计与实现
1. 项目概述:一件会“捧场”的智能夹克你有没有想过,你的衣服可以成为你专属的喜剧演员、气氛组或者随身音效库?想象一下,在朋友聚会时,一个恰到好处的罐头笑声从你的口袋响起;或者在你做出一个帅气动作时&…...
开源流程编排引擎FlowCue:基于DAG与事件驱动的自动化工作流实践
1. 项目概述:FlowCue是什么,以及它为何值得关注如果你是一名开发者,尤其是经常和API、数据流、自动化任务打交道的后端或全栈工程师,那么你肯定对“流程编排”这个概念不陌生。简单来说,就是把一系列独立的操作&#x…...
Sunshine游戏串流架构深度解析:3种高效部署方案完全指南
Sunshine游戏串流架构深度解析:3种高效部署方案完全指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine作为一款开源自托管的游戏串流服务器,为Mo…...
2026年冰袋吸水粉厂家大揭秘:选择指南与行业趋势题
随着冷链物流行业的快速发展,冰袋吸水粉作为冷链运输中不可或缺的保冷材料,其市场需求持续增长。然而,市场上冰袋吸水粉的质量参差不齐,如何选择一家值得信赖的厂家成为许多采购商关注的重点。本文将从行业背景、技术特点及市场趋…...
AI智能体文件管理:从零构建统一资产仓库与版本控制系统
1. 项目概述与核心价值最近在折腾AI智能体开发的朋友,估计没少为文件管理这事儿头疼。你辛辛苦苦训练好的模型、精心设计的提示词模板、还有那些五花八门的配置文件,是不是散落在各个角落,每次想复现或者分享都得一通乱找?更别提团…...
Hermes Agent 工具如何配置接入 Taotoken 提供的模型服务
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Hermes Agent 工具如何配置接入 Taotoken 提供的模型服务 Hermes Agent 是一个流行的开源智能体框架,它允许开发者通过…...
ElevenLabs匈牙利语音合成效果深度测评(实测12种场景+WAV/MP3/SSML对比数据)
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs匈牙利语音合成技术概览 ElevenLabs 自 2023 年起逐步扩展其多语言支持能力,匈牙利语(hu-HU)作为东欧高复杂度音系语言的代表,于 v2.5 API 版本…...
【实用小程序】超轻量级文件上传下载中心 (File Download Server)
站内源码及jar包下载 一、项目概述 文件下载中心一个基于 Java 内置 HTTP 服务器(com.sun.net.httpserver)构建的轻量级文件管理服务。它零第三方依赖,单 JAR 包即可运行,适合在内网环境或临时场景中快速搭建文件共享站点。 你的团队需要临时共享一批日志文件或交付物,…...
Motrix WebExtension:浏览器下载加速的终极解决方案
Motrix WebExtension:浏览器下载加速的终极解决方案 【免费下载链接】motrix-webextension A browser extension for the Motrix Download Manager and its forks 项目地址: https://gitcode.com/gh_mirrors/mo/motrix-webextension 在当今数字时代ÿ…...
