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

磐石网站建设注册微信公众平台

磐石网站建设,注册微信公众平台,郑州短视频培训机构,acfun网站设计改进【pytorch(01)】CUDA、cuDNN、pytorch安装,神奇魔法解决网络问题 【pytorch(02)】Tensor(张量)概述、如何创建、常见属性,切换设备 【pytorch(03)】Tensor(张量)数据转换、常见操作…

【pytorch(01)】CUDA、cuDNN、pytorch安装,神奇魔法解决网络问题

【pytorch(02)】Tensor(张量)概述、如何创建、常见属性,切换设备

【pytorch(03)】Tensor(张量)数据转换、常见操作(元素值运算、阿达玛积、相乘、形状操作)

【pytorch(04)】自动微分:基础概念,梯度计算,梯度上下文控制

【pytorch(05)】感知神经网络,构造人工神经元,深入神经网络(了解结构,如何构建),全连接神经网络

目录

  • 全连接神经网络:基本组件认知
  • 线性层组件
  • 激活函数组件
  • 损失函数组件
    • 1.回归任务的损失函数:
    • 2.分类任务的损失函数:
  • 优化器

全连接神经网络:基本组件认知

先初步认知,他们用法基本一样的,后续在学习深度神经网络和卷积神经网络的过程中会很自然的学到更多组件!

官方文档:https://pytorch.org/docs/stable/nn.html

线性层组件

nn.Linear是 PyTorch 中的一个非常重要的模块,用于实现全连接层(也称为线性层)。它是神经网络中常用的一种层类型,主要用于将输入数据通过线性变换映射到输出空间。

torch.nn.Linear(in_features, out_features, bias=True)

参数说明:

in_features:

  • 输入特征的数量(即输入数据的维度)。
  • 例如,如果输入是一个长度为 100 的向量,则 in_features=100。

out_features:

  • 输出特征的数量(即输出数据的维度)。
  • 例如,如果希望输出是一个长度为 50 的向量,则 out_features=50。

bias:

  • 是否使用偏置项(默认值为 True)。
  • 如果设置为 False,则不会学习偏置项。

示例:构建3层全连接神经网络:在__init__方法中定义网络结构,在forward定义前向传播

import torch
from torch import nn
# 定义全连接神经网络模型
class MyFcnn(nn.Module):def __init__(self, input_size,out_size):# 父类初始化super(MyFcnn, self).__init__()# 定义线性层1self.fc1 = nn.Linear(input_size, 64)# 定义线性层2,输入要和第一层的输出一致self.fc2 = nn.Linear(64, 32)# 定义线性层3,输入要和第二层的输出一致self.fc3 = nn.Linear(32, out_size)def forward(self, x):x = self.fc1(x)x = self.fc2(x)x = self.fc3(x)return xinput_size = 32
out_size = 1
model = MyFcnn(input_size,out_size)
print(model)

如果模型中线性层按顺序叠加,也可以使用nn.Sequential构建模型。nn.Sequential 是一个顺序容器,内置了自动的前向传播逻辑,它会自动将输入数据依次传递给其中的每一层,并执行前向传播,不需要显式定义 forward() 方法。

import torch
from torch import nninput_size = 32
# 定义全连接神经网络模型
model = nn.Sequential(nn.Linear(input_size, 64),nn.Linear(64, 32),nn.Linear(32, 1)
)
print(model)

激活函数组件

激活函数的作用是在隐藏层引入非线性,使得神经网络能够学习和表示复杂的函数关系,使网络具备非线性能力,增强其表达能力。

常见激活函数:

sigmoid函数:

import torch.nn.functional as F
sigmoid = F.sigmoid()

tanh函数:

tanh = F.tanh()

ReLU函数:

import torch.nn as nn
relu = nn.ReLU()

LeakyReLU函数:

leaky_relu = nn.LeakyReLU(negative_slope=0.01)

softmax函数:

softmax = F.softmax

损失函数组件

损失函数的主要作用是量化模型预测值(y^)与真实值(y)之间的差异。通常,损失函数的值越小,表示模型的预测越接近真实值。训练过程中,通过优化算法(如梯度下降)最小化损失函数,从而调整模型的参数。

PyTorch已内置多种损失函数,在构建神经网络时随用随取!

文档:https://pytorch.org/docs/stable/nn.html#loss-functions

根据任务类型(如回归、分类等),损失函数可以分为以下几类:

1.回归任务的损失函数:

1.均方误差损失(MSE Loss)

  • 函数: torch.nn.MSELoss
import torch.nn as nn
loss_fn = nn.MSELoss()

2.L1 损失(L1 Loss)

也叫做MAE(Mean Absolute Error,平均绝对误差)

  • 函数: torch.nn.L1Loss
import torch.nn as nn
loss_fn = nn.L1Loss()

2.分类任务的损失函数:

1.交叉熵损失(Cross-Entropy Loss)

  • 函数: torch.nn.CrossEntropyLoss
cross_entropy_loss = nn.CrossEntropyLoss()
  • 参数:reduction:mean-平均值,sum-总和

  • 适用场景: 用于多分类任务。

2.二元交叉熵损失(Binary Cross-Entropy Loss)

  • 函数: torch.nn.BCELoss 或 torch.nn.BCEWithLogitsLoss
bce_loss = nn.BCELoss()
bce_with_logits_loss = nn.BCEWithLogitsLoss()
  • 适用场景: 用于二分类任务。

  • 特点: BCEWithLogitsLoss 更稳定,因为它结合了 Sigmoid 激活函数和 BCE 损失。

  • 注意:使用 nn.BCELoss 时,需要确保预测值经过 sigmoid 函数处理。如果预测值是 logits(即未经 sigmoid 处理的预测值),可以使用 nn.BCEWithLogitsLoss,它内部会自动应用 sigmoid 函数。

优化器

官方文档:https://pytorch.org/docs/stable/optim.html

在PyTorch中,优化器(Optimizer)是用于更新模型参数以最小化损失函数的核心工具。

PyTorch 在 torch.optim 模块中提供了多种优化器,常用的包括:

  • SGD(随机梯度下降)
  • Adagrad(自适应梯度)
  • RMSprop(均方根传播)
  • Adam(自适应矩估计)

核心方法有:

zero_grad():清空模型参数的梯度(将梯度置零)。必须在loss.backward()之前调用zero_grad(),避免梯度累积。

step():参数更新;是优化器的核心方法,用于根据计算得到的梯度更新模型参数。优化器会根据梯度和学习率等参数,调整模型的权重和偏置。

以SGD(随机梯度下降)优化器为例:

import torch
import torch.nn as nn
import torch.optim as optim# 优化方法SGD的学习
def test003():model = nn.Linear(20, 60)criterion = nn.MSELoss()# 优化器:更新模型参数optimizer = optim.SGD(model.parameters(), lr=0.01)input = torch.randn(128, 20)output = model(input)# 计算损失及反向传播loss = criterion(output, torch.randn(128, 60))# 梯度清零optimizer.zero_grad()# 反向传播loss.backward()# 更新模型参数optimizer.step()print(loss.item())if __name__ == "__main__":test003()
  • optim.SGD():优化器方法;是 PyTorch 提供的随机梯度下降(Stochastic Gradient Descent, SGD)优化器。
  • model.parameters():模型参数获取;是一个生成器,用于获取模型中所有可训练的参数(权重和偏置)。

注意:这里只是组件认识和用法演示,没有具体的模型训练功能实现

http://www.dtcms.com/a/541106.html

相关文章:

  • Docker从入门到实战——含容器部署、docker基础、项目部署
  • Neo4j-图数据库入门图文保姆攻略
  • 【LangChain】LangChain Model 模型分类
  • 如何将多张PGN、JPG等格式图片合并成一个PDF文档?
  • 如何做游戏网站百度推广关键词怎么优化
  • 如何正确创建一个后端项目nodejs+express,只针对windows用户
  • 给我一个网站好吗做网站模板的软件
  • 网站使用特殊字体重庆市建设工程网官网
  • 官方网站下载微信html5网页制作代码成品
  • Python-env变量读取
  • 仓颉编程(19)函数语法糖
  • idea中更新github token 登录github
  • win11 访问 Win10 共享文件出现扩展错误
  • 网站建设超链接制作卖老石器老榆木做哪个网站好
  • conda 基础命令使用
  • OpenAI完成了其盈利结构的重组
  • 测试开发话题03---BUG篇
  • Rust中的闭包
  • 辽宁省建设信息网福州网站推广优化
  • Physical AI:赋能工业运营中的新一代生产力和生产关系
  • 网站关键词价格徐州网站建设新闻
  • Swift-Mapping: Online Neural Implicit Dense Mapping in Urban Scenes 论文学习记录
  • Rust性能优化与最佳实践:构建高性能服务端与客户端应用
  • 海口网站建设过程全国做网站的
  • 网站建设一般满足什么需求电商网站怎么制作
  • 【若依前后端分离版,docker部署到服务器流程详解】
  • 想注册一个设计网站吗自己做的网站403
  • 没有基础怎么学网站建设python做网站教程
  • 网站构建代码模板北京公司网站优化
  • Ruby 范围(Range)