当前位置: 首页 > news >正文

PyTorch 入门学习笔记

       

目录

1 张量

1)张量的初始化和属性

2)张量操作

3)使用 NumPy 进行桥接

2 torch.autograd

1)背景

2)在 PyTorch 中的使用

3)Autograd 的微分机制

4)计算图原理

3 神经网络

1)定义网络

2)损失函数

3)反向传播

4)权重更新


         PyTorch 是由 Meta(原 Facebook) 开源的深度学习框架,是基于 Python 的科学计算包,主要服务于两大用途:(1)作为 NumPy 的替代方案,支持 GPU 及其他硬件加速器的高性能计算,显著提升张量运算效率;(2)作为自动微分库,为神经网络训练提供高效的梯度计算与反向传播支持。

1 张量


        张量(Tensor)是 PyTorch 中多维数据的主要载体,类似于 NumPy 的 ndarray,但支持 GPU 加速计算和自动微分功能,是神经网络中数据和梯度计算的基础单位。

1)张量的初始化和属性


张量有以下几种创建方式:

  • 直接用数据创建,
  • 用 numpy 数组创建,
  • 用另一个张量创建,
  • 用常量或随机值创建。例如:
import torch
import numpy as np# 用数据创建
data = [[1, 2], [3, 4]]
x_data = torch.tensor(data)# 用数组创建
np_array = np.array(data)
x_np = torch.from_numpy(np_array)# 用另一个张量创建
x_ones = torch.ones_like(x_data) # 保持 x_data 的属性
print(f"Ones Tensor: \n {x_ones} \n")
x_rand = torch.rand_like(x_data, dtype=torch.float) # 覆盖 x_data 的类型
print(f"Random Tensor: \n {x_rand} \n")# 用常量或随机值次创建
shape = (2, 3,)
rand_tensor = torch.rand(shape)
ones_tensor = torch.ones(shape)
zeros_tensor = torch.zeros(shape)print(f"Random Tensor: \n {rand_tensor} \n")
print(f"Ones Tensor: \n {ones_tensor} \n")
print(f"Zeros Tensor: \n {zeros_tensor}")

运行结果如下:

张量属性描述了它们的形状、数据类型和存储它们的设备。

tensor = torch.rand(3, 4)print(f"Shape of tensor: {tensor.shape}")
print(f"Datatype of tensor: {tensor.dtype}")
print(f"Device tensor is stored on: {tensor.device}")

运行结果如下:

 

2)张量操作

        PyTorch 提供了超过100种张量操作,涵盖数学运算、线性代数、数据切片等常见需求。这些操作均可在 GPU 上运行,且速度通常远快于 CPU。如果您使用的是 Colab,可以通过 Edit —— Notebook Settings 来分配。

# 将张量移动到 GPU 上(如果支持)
if torch.cuda.is_available():tensor = tensor.to('cuda')print(f"Device tensor is stored on: {tensor.device}")

尝试一些操作(如果您熟悉 NumPy API,则会发现 Tensor API 使用起来相对更容易):

# 类似 numpy 的标准索引和切片
tensor = torch.ones(4, 4)
tensor[:,1] = 0
print(tensor)# 可以用 torch.cat 将张量沿指定维度连接起来(还有类似功能 torch.stack)
t1 = torch.cat([tensor, tensor, tensor], dim=1)#0表示第一个维度
print(t1)# 计算元素级乘积
print(f"tensor.mul(tensor) \n {tensor.mul(tensor)} \n")
# 也可以这样写
print(f"tensor * tensor \n {tensor * tensor}")# 计算两个张量之间的矩阵乘法
print(f"tensor.matmul(tensor.T) \n {tensor.matmul(tensor.T)} \n")
# 也可以这样写
print(f"tensor @ tensor.T \n {tensor @ tensor.T}")# 原地操作,带有 _ 后缀的操作是原地操作(例如 x.copy_(y) 和 x.t_() 会直接修改 x 的值)
print(tensor, "\n")
tensor.add_(5)
print(tensor)

3)使用 NumPy 进行桥接

CPU 上的张量和 NumPy 数组可以共享它们的底层内存位置,更改其中一个将会更改另一个。

# 张量转换为 NumPy 数组
t = torch.ones(5)
print(f"t: {t}")
n = t.numpy()
print(f"n: {n}")# 张量的变化会反映在 NumPy 数组上
t.add_(1)
print(f"t: {t}")
print(f"n: {n}")# NumPy 数组转张量
n = np.ones(5)
t = torch.from_numpy(n)# NumPy 数组的修改会同步到张量
np.add(n, 1, out=n)
print(f"t: {t}")
print(f"n: {n}")

运行结果如下:

 

2 torch.autograd


torch.autograd 是 PyTorch 的自动微分引擎,为神经网络训练提供核心支持。

1)背景


        神经网络(Neural Networks, NNs)是由一系列嵌套函数组成的计算模型,这些函数对输入数据执行运算。这些函数由参数(包括权重和偏置)定义,在 PyTorch 中,这些参数以张量的形式存储。

神经网络的训练过程分为两个阶段:

        前向传播(Forward Propagation)

     在前向传播过程中,神经网络基于输入数据计算其预测输出。数据依次经过网络中的每一层函数,最终生成预测结果。

        反向传播(Backward Propagation)

    在反向传播过程中,神经网络根据预测误差按比例调整参数。具体做法是从输出层开始反向遍历网络,计算误差关于各层参数的导数(即梯度),并利用梯度下降法优化参数。

如果把前向传播就类比成按菜谱做菜,反向传播则是根据成品味道反推和调整菜谱配方。

2)在 PyTorch 中的使用


        来看一个简单的训练示例,本例从 torchvision 加载一个预训练的 resnet18 模型。创建一个随机数据张量来模拟一张3通道、高宽均为64的图像,并初始化其对应的标签为随机值。预训练模型中的标签形状为(1,1000)。注意:本教程仅适用于 CPU 环境,无法在 GPU 设备上运行(即使将张量移至 CUDA)。

import torch
from torchvision.models import resnet18, ResNet18_Weights
model = resnet18(weights=ResNet18_Weights.DEFAULT)
data = torch.rand(1, 3, 64, 64)
labels = torch.rand(1, 1000)

 

将输入数据传入模型,经过每一层的计算得到预测结果——这就是前向传播

prediction = model(data) # 前向传播

然后计算误差(损失值),也就是计算预测值与真实标签之间的差异度量。然后再将这个误差反向传播到整个网络中。调用 .backward() 方法会触发反向传播过程。此时 Autograd 引擎会自动计算每个模型参数的梯度(梯度表示函数在某一点的导数或偏导数,描述了张量随着其输入变化的变化率),并将它们存储在参数的 .grad 属性中

loss = (prediction - labels).sum() # 计算损失
loss.backward() # 反向传播

接下来加载一个优化器优化器的技术本质是一个能自动调整模型参数的算法目标是让预测结果越来越准,通俗点说就是告诉模型怎么改、改多少。这个例子中使用了随机梯度下降法(SGD),并设置学习率为0.01,动量参数为0.9。我们要将模型的所有参数都注册到该优化器中。

optim = torch.optim.SGD(model.parameters(), lr=1e-2, momentum=0.9)

然后调用 .step() 方法来执行梯度下降优化器会根据每个参数存储在 .grad 属性中的梯度值来调整这些参数。

optim.step()  # 执行梯度下降

以上就是训练神经网络所需的所有基本步骤

3)Autograd 的微分机制

autograd 是如何收集梯度的呢?创建两个张量 a 和 b,并设置 requires_grad=True。这相当于告诉 autograd:跟踪所有对这两个张量的。

import torcha = torch.tensor([2., 3.], requires_grad=True)
b = torch.tensor([6., 4.], requires_grad=True)

假设 a 和 b 是神经网络的参数,Q 是误差值。在训练神经网络时,我们需要计算误差关于参数的梯度(a 的梯度应为9倍 a 的平方,b 的梯度应为-2倍的 b):

当调用 Q.backward() 时,autograd 会计算梯度并将结果存储在各个张量的 .grad 属性中。

由于 Q 是向量,这里需要显式传入一个 gradient 参数。这个参数是与 Q 形状相同的张量,代表 Q 对自身的梯度,即:

等价的做法是将 Q 聚合为标量再隐式调用 backward,例如 Q.sum().backward()。

现在梯度已存入 a.grad  b.grad 中:

# 验证梯度是否正确
print(9*a**2 == a.grad)  # 检查 a 的梯度
print(-2*b == b.grad)    # 检查 b 的梯度

4)计算图原理

autograd 通过有向无环图(DAG记录数据(张量)和执行的所有运算(包括生成的新张量)。这个 DAG 由 Function 对象构成:

  • 叶子节点:输入张量(如初始参数)

  • 根节点:输出张量(如损失值)

通过从根节点回溯到叶子节点,autograd 能利用链式法则自动计算梯度。

前向传播,autograd 会同步完成两件事:

  • 执行运算:计算输出张量

  • 维护 DAG:记录运算对应的梯度函数(grad_fn)

反向传播,当调用 .backward() 时,autograd 会:

  • 从每个 grad_fn 计算梯度
  • 将梯度累加到对应张量的 .grad 属性中
  • 通过链式法则一直传播到叶子张量

        在神经网络中,不计算梯度的参数通常被称为冻结参数。如果事先知道某些参数不需要计算梯度(通过减少自动微分计算提升性能),那么“冻结”模型的一部分就会非常有用。在微调时,我们通常会冻结模型的大部分参数,仅修改分类器层以适配新的标签预测。

3 神经网络

        可以使用 torch.nn 包来构建神经网络。nn 模块是基于 autograd 来定义模型并进行微分计算的。一个 nn.Module 包含若干网络层,以及一个 forward(input) 方法,该方法返回网络的输出结果。

这是一个简单的前馈神经网络(常见的神经网络还有:卷积神经网络、循环神经网络等)。它接收输入数据,依次通过多个网络层进行处理,最终产生输出结果。神经网络的标准训练流程通常包括以下步骤:

  • 定义包含可训练参数(或称权重)的神经网络结构

  • 遍历输入数据集

  • 将输入数据送入网络进行前向传播

  • 计算损失值(输出结果与正确结果的偏差)

  • 梯度反向传播至网络各参数

  • 使用简单更新规则调整网络权重:权重 = 权重 - 学习率 × 梯度(梯度下降算法的核心表达式)

1)定义网络

import torch
import torch.nn as nn
import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net, self).__init__()# 输入图像通道数1(灰度图),输出通道数6,5x5卷积核self.conv1 = nn.Conv2d(1, 6, 5)# 输入通道数6,输出通道数16,5x5卷积核self.conv2 = nn.Conv2d(6, 16, 5)# 全连接层(仿射变换):y = Wx + b# 输入维度16*5*5(16个通道,5x5特征图),输出120维self.fc1 = nn.Linear(16 * 5 * 5, 120) # 5*5来自图像维度# 全连接层:120维输入,84维输出self.fc2 = nn.Linear(120, 84)# 输出层:84维输入,10维输出(对应10个类别)self.fc3 = nn.Linear(84, 10)def forward(self, input):# 卷积层C1:1输入通道,6输出通道,5x5卷积核# 使用ReLU激活函数,输出张量尺寸为(N, 6, 28, 28),N是批次大小c1 = F.relu(self.conv1(input))# 下采样层S2:2x2最大池化,无参数# 输出张量尺寸为(N, 6, 14, 14)s2 = F.max_pool2d(c1, (2, 2))# 卷积层C3:6输入通道,16输出通道,5x5卷积核# 使用ReLU激活函数,输出张量尺寸为(N, 16, 10, 10)c3 = F.relu(self.conv2(s2))# 下采样层S4:2x2最大池化,无参数# 输出张量尺寸为(N, 16, 5, 5)s4 = F.max_pool2d(c3, 2)# 展平操作:无参数,输出(N, 400)张量s4 = torch.flatten(s4, 1)# 全连接层F5:输入(N, 400),输出(N, 120)# 使用ReLU激活函数f5 = F.relu(self.fc1(s4))# 全连接层F6:输入(N, 120),输出(N, 84)# 使用ReLU激活函数f6 = F.relu(self.fc2(f5))# 输出层:输入(N, 84),输出(N, 10)output = self.fc3(f6)return output# 实例化网络
net = Net()
print(net)

运行结果如下:

你只需定义前向传播函数反向传播函数(用于计算梯度)将通过 autograd 自动定义。在前向传播中,可以使用任何张量运算。

net.parameters() 返回模型的所有可训练参数:

注意:torch.nn 模块仅支持小批量输入样本(不能是单个样本)。例如,nn.Conv2d 层需要接收一个4维张量,其维度为:样本数×通道数×高度×宽度。若只有单个样本,只需使用 input.unsqueeze(0) 来添加一个虚拟的批次维度。

2)损失函数

损失函数接受入参 (output, target) ,并计算一个值,该值估计输出与目标的差距。nn 包下有几个不同的损失函数,一个简单的损失函数是:nn.MSELoss,计算输出和目标之间的均方误差。

当我们调用 loss.backward() 时,整个计算图会相对于神经网络参数进行微分

3)反向传播

要实现误差反向传播,只需执行 loss.backward()。但注意需要清除已有梯度,否则梯度会累积到现有梯度之上。通过如下代码观察反向传播前后 conv1 层偏置的梯度变化:

net.zero_grad() # 将所有参数的梯度缓冲区置零print('conv1.bias.grad 反向传播之前')
print(net.conv1.bias.grad)loss.backward()print('conv1.bias.grad 反向传播之后')
print(net.conv1.bias.grad)

4)权重更新

实践中最简单的更新规则是随机梯度下降法(简称 SGD)

weight = weight - learning_rate * gradient# 可以通过简单的 Python 代码实现:
learning_rate = 0.01
for f in net.parameters():f.data.sub_(f.grad.data * learning_rate)

在使用神经网络时,我们可以使用各种不同的更新规则(SGD、 Nesterov-SGD、 Adam、 RMSProp 等)

import torch.optim as optim# 创建优化器
optimizer = optim.SGD(net.parameters(), lr=0.01)# 训练循环中的操作
optimizer.zero_grad() # 清空梯度缓冲
output = net(input)
loss = criterion(output, target)
loss.backward()
optimizer.step() # 执行更新

注意:观察梯度缓冲区是如何使用 optimizer.zero_grad() 手动设置为零的(如前面所述,梯度是累积的)。

相关文章:

PyTorch 入门学习笔记

目录 1 张量 1)张量的初始化和属性 2)张量操作 3)使用 NumPy 进行桥接 2 torch.autograd 1)背景 2)在 PyTorch 中的使用 3)Autograd 的微分机制 4)计算图原理 3 神经网络 1&#xff…...

9大策略深度解析MySQL多表JOIN性能优化

一、多表JOIN的现实挑战 在实际开发中,MySQL多表JOIN场景主要源于两类场景: • 历史遗留系统:老代码中未严格遵循范式设计的SQL语句• 数据库迁移:从Oracle迁移至MySQL时保留的复杂关联查询 这类操作潜藏多重风险: …...

CSS 逐帧动画

CSS 逐帧动画实现指南 逐帧动画(frame-by-frame animation)是一种通过快速连续显示一系列静态图像来创造运动效果的技术。以下是使用CSS实现逐帧动画的几种方法。 1. 使用 steps() 计时函数 这是实现逐帧动画最常用的方法,通过animation-timing-function的steps(…...

UE5 游戏模板 —— ThirdPersonGame

UE5 游戏模板 —— ThirdPersonGame 前言一、初始化旋转控制参数1.参数一2.参数二3.参数三4.参数四 二、输入系统总结 前言 有了前面的铺垫,第三人称模板简直是手到擒来了,我们只需要注意一些初始化的变量是做什么的即可,因为UE的Character …...

java中关于异步转同步的一些解决方案的对比与思考。【spring mvc堵塞式】

文章目录 1、Spring MVC堵塞式编程中的技术方案a) 最简单的方案,使用 DeferredResult 代码如下,代码解读:最终控制台输出如下。用户收到的结果 b) 上点难度,使用redis监听事件,根据事件的不同返回不同的数据…...

【数据结构与算法】数据结构核心概念系统梳理

第一章 绪论:基础概念体系 🚩算法:问题求解步骤的描述。 🚩非递归的算法效率更高。 1.1 逻辑结构 vs 存储结构 维度逻辑结构存储结构(物理结构)定义数据元素之间的逻辑关系数据结构在计算机中的实现方式分类线性/树形/图/集合顺序/链式/索引/散列独立性独立于存储结构…...

《HTTP权威指南》 第7章 缓存

带着问题学习: 缓存如何提高性能如何衡量缓存的有效性缓存置于何处作用最大HTTP如何保持缓存副本的新鲜度缓存如何与其他缓存及服务器通信 web缓存是可以自动保存常见文档副本的HTTP设备。 缓存优点 减少冗余的数据传输,节省网络费用缓解网络瓶颈问题&…...

【Zephyr 系列 28】MCU 闪存文件系统详解:LittleFS + NVS + 块设备设计实战

🧠关键词:Zephyr 文件系统、LittleFS、NVS、Flash 分区、嵌入式存储、断电保护、wear leveling 📌 1. 为什么 MCU 上需要文件系统? 在嵌入式开发中,很多开发者起初直接操作 Flash 保存参数,但随着需求增长…...

ICML 2025 | 时间序列(Time Series)论文总结

ICML 2025将在2025年7月13日至7月19日(周六)在温哥华会议中心举行,本文总结了ICML 2025有关时间序列(Time Series)相关文章,共计63篇。 时间序列Topic:预测,分类,异常检测,生成&…...

理解后端开发中的中间件(以gin框架为例)

中间件(Middleware)是后端开发中的一个核心概念,它在请求(Request)和响应(Response)之间扮演着桥梁角色。以下是关于中间件的详细解释: 基本概念 中间件是在请求到达最终处理程序之前或响应返回客户端之前执行的一系列函数或组件。它可以: 访…...

【分布式技术】Bearer Token以及MAC Token深入理解

Bearer Token以及MAC Token深入理解 **Bearer Token 详解****1. 什么是 Bearer Token?****2. Bearer Token 的构建详情****(1)生成流程****(2)Token 示例(JWT)****(3)Tok…...

WebRTC(七):媒体能力协商

目的 在 WebRTC 中,每个浏览器或终端支持的音视频编解码器、分辨率、码率、帧率等可能不同。媒体能力协商的目的就是: 确保双方能“听得懂”对方发的媒体流;明确谁发送、谁接收、怎么发送;保障连接的互操作性和兼容性。 P2P的基…...

(线性代数最小二乘问题)Normal Equation(正规方程)

Normal Equation(正规方程) 是线性代数中的一个重要概念,主要用于解决最小二乘问题(Least Squares Problem)。它通过直接求解一个线性方程组,找到线性回归模型的最优参数(如权重或系数&#xff…...

【机器学习】数学基础——标量

目录 一、标量的定义 二、标量的核心特征:无方向的纯粹量级 2.1 标量 vs 矢量 直观对比 三、 标量的数学本质:零阶张量 3.1 张量阶数金字塔 3.2 标量的数学特性 四、 现实世界的标量图谱 4.1 常见标量家族 4.2 经典案例解析 五、 标量的运算奥秘…...

基于python代码的通过爬虫方式实现TK下载视频(2025年6月)

Tk的视频页面通常需要登录才能获取完整数据,但通过构造匿名游客的请求,我们可以绕过登录限制,提取视频的元信息(如标题、ID和播放地址)。核心思路如下: 构造匿名Cookie:通过模拟浏览器的请求,获取Tk服务器分配的游客Cookie。解析网页:利用BeautifulSoup解析HTML,定位…...

Go 语言的堆糖图片爬虫

基于 Go 语言的堆糖图片爬取探索之旅 在互联网的浩瀚海洋中,堆糖网以其丰富多样的高清图片、美图壁纸等内容吸引了众多用户。对于图片爱好者来说,能高效获取心仪的图片资源无疑是一件极具吸引力的事情。今天,就带大家走进一段基于 Go 语言的…...

python+uni-app基于微信小程序的儿童安全教育系统

文章目录 具体实现截图本项目支持的技术路线源码获取详细视频演示:文章底部获取博主联系方式!!!!本系统开发思路进度安排及各阶段主要任务java类核心代码部分展示主要参考文献:源码获取/详细视频演示 ##项目…...

DAY 39 图像数据与显存

图像数据的格式:灰度和彩色数据模型的定义显存占用的4种地方 模型参数梯度参数优化器参数数据批量所占显存神经元输出中间状态 batchisize和训练的关系 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader ,…...

ELK搭建

1、elasticsearch和kibana搭建配置见 https://blog.csdn.net/yh_zeng2/article/details/148812447?spm1001.2014.3001.5501 2、logstash 下载 下载和elasticsearch版本一致的logstash,下载地址: Past Releases of Elastic Stack Software | Elastic …...

【ELK(Elasticsearch+Logstash+Kibana) 从零搭建实战记录:日志采集与可视化】

ELK(ElasticsearchLogstashKibana) 从零搭建实战记录:日志采集与可视化 本文记录了我在搭建ELK(Elasticsearch, Logstash, Kibana)技术栈时的完整实战过程。使用Docker Compose快速搭建了ELK服务端(监控主机),并通过Filebeat实现…...

反无人机系统:技术利刃如何守护低空安全?

反无人机系统:技术利刃如何守护低空安全? ——从军事防御到城市安防的全景解析 一、技术体系:从“电磁软杀伤”到“激光硬摧毁”的立体防御网 反无人机技术本质是一场“降维打击”:用百万级防御系统对抗千元级消费无人机。当前…...

第十章——8天Python从入门到精通【itheima】-102-Python基础综合案例-数据可视化(pyecharts的入门使用+数据处理)

目录 102节——pyecharts的入门使用 1.学习目标 2.pyecharts入门——基础折线图 3.pyecharts的配置对象有哪些? 4.全局配置——set_global_opts 5.小节总结 103节——数据处理 1.学习目标 2.无法继续关于第一阶段的pyecharts的相关学习 因为关于JSON数据获…...

Neo4j 中存储和查询数组数据的完整指南

Neo4j 中存储和查询数组数据的完整指南 图形数据库 Neo4j 不仅擅长处理节点和关系,还提供了强大的数组(Array)存储和操作能力。本文将全面介绍如何在 Neo4j 中高效地使用数组,包括存储、查询、优化以及实际应用场景。 数组在 Neo4j 中的基本使用 数组…...

云原生/容器相关概念记录

文章目录 网络与虚拟化技术云平台与架构容器与编排容器网络方案性能优化与工具硬件与协议 网络与虚拟化技术 P4可编程网关 P4: Programming Protocol-independent Packet Processors一种基于P4语言的可编程网络设备,支持自定义数据包处理逻辑。P4可编程技术详解&am…...

uni-app项目实战笔记21--uniapp缓存的写入和读取

一、缓存的写入 uni.setStorageSync("storageClassList",classifyList.value) 二、缓存的读取,如果缓存不存在,则返回空数组 const storageClassList uni.getStorageSync("storageClassList") || []; 三、对读取到的数据进行转…...

操作系统概述

覆盖了操作系统概述、运行机制、中断、异常、操作系统的五大结构、虚拟机。 借鉴:王道、我的好朋友杨某、我的笔记。 一、操作系统概念 概念 1.操作系统体现了封装思想 由于底层硬件只接受二进制的指令不方便用户操作,所以操作系统把这些封装成简易的…...

探索数据的力量:Elasticsearch中指定链表字段的统计查询记录

目录 一、基本的数据结构说明 二、基本的统计记录 (一)统计当前索引中sellingProducts的所有类型 (二)检索指定文档中sellingProducts的数据总量 (三)检索指定文档中sellingProducts指定类型的数量统计…...

【Datawhale组队学习202506】YOLO-Master task03 IOU总结

系列文章目录 task01 导学课程 task02 YOLO系列发展线 文章目录 系列文章目录前言1 功能分块1.1 骨干网络 Backbone1.2 颈部网络 Neck1.3 头部网络 Head1.3.1 边界框回归头1.3.2 分类头 2 关键概念3 典型算法3.1 NMS3.2 IoU 总结 前言 Datawhale是一个专注于AI与数据科学的开…...

C/C++数据结构之静态数组

概述 静态数组是C/C中一种基础的数据结构,它允许用户在编译时便确定数组的大小,并分配固定数量的连续存储空间来存放相同类型的元素。静态数组的主要特点是:其大小在声明时就必须指定,且在其生命周期内保持不变。这也意味着&#…...

pyqt f-string

文章目录 一、f-string的基本语法二、代码中的具体应用拼接效果 三、f-string的核心优势四、与其他字符串格式化方式的对比五、在Qt程序中的实际作用六、扩展用法:在f-string中添加格式说明 Python的 f-string(格式化字符串字面值) 特性&…...

夏普 AR-2348SV 打印机信息

基本信息:这是一款黑白 A3 激光多功能数码复合机,可实现打印、复印、扫描功能。性能参数 打印 / 复印速度:23 张 / 分钟。分辨率:600x600dpi,能确保文字和图像清晰。最大打印 / 复印尺寸:A3。纸张支持&…...

跨个体预训练与轻量化Transformer在手势识别中的应用:Bioformer

目录 一、从深度学习到边缘部署,手势识别的新突破 (一)可穿戴设备 边缘计算 个性化医疗新可能 (二)肌电信号(sEMG):手势识别的关键媒介 (三)挑战&#…...

探索常识性概念图谱:构建智能生活的知识桥梁

目录 一、知识图谱背景介绍 (一)基本背景 (二)与NLP的关系 (三)常识性概念图谱的引入对比 二、常识性概念图谱介绍 (一)常识性概念图谱关系图示例 (二&#xff09…...

人人都是音乐家?腾讯开源音乐生成大模型SongGeneration

目录 前言 一、SongGeneration 带来了什么? 1.1 文本控制与风格跟随:你的想法,AI 精准实现 1.2 多轨生成:从“成品”到“半成品”的巨大飞跃 1.3 开源:推倒“高墙”,共建生态 二、3B 参数如何媲美商业…...

一,python语法教程.内置API

一,字符串相关API string.strip([chars])方法:移除字符串开头和结尾的空白字符(如空格、制表符、换行符等),它不会修改原始字符串,而是返回一个新的处理后的字符串 chars(可选)&…...

python中学物理实验模拟:凸透镜成像和凹透镜成像

python中学物理实验模拟:凸透镜成像和凹透镜成像 凸透镜成像 凸透镜是指中间厚、边缘薄的透镜。它对光线有会聚作用,即光线通过凸透镜后会向主光轴方向偏折。 成像原理 基于光的折射,平行于主光轴的光线经凸透镜折射后会聚于焦点&#xff…...

【AGI】突破感知-决策边界:VLA-具身智能2.0

突破感知-决策边界:VLA-具身智能2.0 (一)技术架构核心(二)OpenVLA:开源先锋与性能标杆(三)应用场景:从实验室走向真实世界(四)挑战与未来方向&…...

2D曲线点云平滑去噪

2D曲线点云,含许多噪声,采用类似移动最小二乘的方法(MLS)分段拟合抛物线并投影至抛物线,进行点云平滑去噪。 更通俗的说法是让有一定宽度的曲线点云,变成一条细曲线上的点。 分两种情况进行讨论: 1&#…...

靶场(二十一)---小白心得靶场体会---DVR4

先看端口,看到了一个dvr的服务,老规矩只要有服务就先去看看 PORT STATE SERVICE VERSION 22/tcp open ssh Bitvise WinSSHD 8.48 (FlowSsh 8.48; protocol 2.0; non-commercial use) | ssh-hostkey: | 3072 21:25:f0:53:b4…...

Qt + C++ 入门2(界面的知识点)

补充前面没有说到的一点就是,qt的页面你可以用qt自带的也就是前面所说的自动生成.UI文件生成前端所谓的界面,然后往里面拖控件就可以了,这个UI界面非常的适合用于新手,以及某些软件少量的界面应用 。但是有一个难点就是后期这个UI…...

计算机网络第九章——数据链路层《流量控制和可靠传输》

一、回顾概念 前面上一章讲了数据链路层的《差错控制》,那么回顾一下差错控制和可靠传输的区别: 差错控制:发现一个帧里的【位错(比特错)】 检错(奇偶校验码、CRC循环冗余校验码):接…...

Zephyr 调试实用指南:日志系统、Shell CLI 与 GDB 全面解析

本文深入讲解 Zephyr 的调试利器,包括统一日志系统(logging subsystem)、内置命令行(Shell CLI)、与 GDB 调试集成方法,帮助开发者快速定位问题、分析运行时行为,实现高效开发与排障。 一、日志…...

【知识图谱提取】【阶段总结】【LLM4KGC】LLM4KGC项目提取知识图谱推理部分

文章目录 前言LLM4KGC的三个部分显卡使用效果前言 之前在学习基于大模型的知识图谱提取,就找到了LLM4KGC这个项目: 项目地址: https://github.com/ChristopheCruz/LLM4KGC/ 总体来说,这个项目没有什么比较高深的idea,年份也比较古老,但确实挺适合入手的。主要是绝对简…...

基于YOLO的智能车辆检测与记录系统

基于YOLO的智能车辆检测与记录系统 摘要 本报告总结了智能车辆检测系统的开发工作,主要包括车辆数据标注、YOLO模型训练及QT交互系统搭建三部分。通过使用专业标注工具完成车辆目标数据集的标注与预处理,基于YOLO模型构建车辆检测算法并优化训练流程&a…...

5.2 Qt Creator 使用FFmpeg库

一、目录结构 ├─3rdparty # 第三方依赖库 │ └─ffmpeg-4.4.3 # ffmpeg库 │ ├─mingw # 用MinGW64编译的库 │ │ ├─bin │ │ ├─include │ │ └─lib │ └─msvc # 用MSVC编译的库 │ ├─bin │ …...

C++基础练习 sort函数,用于排序函数

题目&#xff1a; https://acm.hdu.edu.cn/showproblem.php?pid2039 解答&#xff1a; #include <iostream> #include <cmath> #include <algorithm> using namespace std;double a[3]; int main(){int n;cin>>n;while(n--){cin>>a[0]>>…...

【Docker 08】Compose - 容器编排

&#x1f308; 一、Docker Compose 介绍 ⭐ 1. Docker Compose 是什么 Docker Compose 是由 Docker 官方提供的一个用于定义和运行多容器应用的工具&#xff0c;它让用户可以通过一个 YAML 文件&#xff08;通常是 docker-compose.yml&#xff09;来配置应用所需要的服务&…...

docker执行yum报错Could not resolve host: mirrorlist.centos.org

解决办法&#xff1a; -- 依次执行以下命令cd /etc/yum.repos.d/sed -i s|#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g /etc/yum.repos.d/CentOS-*sed -i s/mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-*yum update -yecho "export LC_ALL…...

信贷域——信贷授信业务

摘要 本文详细介绍了信贷授信业务&#xff0c;包括其核心目标、典型流程、不同机构授信流程的对比、授信业务的其他类型以及授信模块的技术实现。信贷授信是金融机构在放贷前对客户信用额度的评估与审批流程&#xff0c;旨在控制风险、合理设定额度和期限、确保合规&#xff0…...

python的校园兼职系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…...