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

微软公司做网站的软件南宁seo专员

微软公司做网站的软件,南宁seo专员,h5个人网页设计心得,网站怎么做直通车PyTorch 库函数使用详细案例 前言 在深度学习中,PyTorch 是一个广泛使用的开源机器学习库。它提供了强大的功能,用于构建、训练和评估深度学习模型。本文档将详细介绍如何使用以下 PyTorch 相关库函数,并提供相应的案例示例: to…

PyTorch 库函数使用详细案例

在这里插入图片描述

前言

在深度学习中,PyTorch 是一个广泛使用的开源机器学习库。它提供了强大的功能,用于构建、训练和评估深度学习模型。本文档将详细介绍如何使用以下 PyTorch 相关库函数,并提供相应的案例示例:

  • torch
  • torch.nn.functional
  • torch.optim.lr_scheduler
    这些库函数的使用将成为后续我们使用 机器学习求解 PDE 的基础。

1. torch

示例:张量操作

import torch# 创建张量
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.tensor([4.0, 5.0, 6.0])# 张量加法
z = x + y
print(z)  # 输出: tensor([5., 7., 9.])# 张量乘法
z = x * y
print(z)  # 输出: tensor([ 4., 10., 18.])# 张量的加法和乘法的其他操作
z = torch.add(x, y)
print(z)  # 输出: tensor([5., 7., 9.])
z = torch.mul(x, y)
print(z)  # 输出: tensor([ 4., 10., 18.])points = torch.tensor([[4.0, 1.0], [5.0, 3.0], [2.0, 1.0]])
points_storage = points.storage()
points_storage[0] = 2.0
print(points)

2. torch.nn.functional(简称 F)

torch.nn.functional(通常简写为torch.nn.f或简单地称为F)是PyTorch中一个非常重要的模块,它包含了构建神经网络所需的大部分激活函数、损失函数、归一化层等函数式接口。这些函数不保留任何内部状态,即它们是无状态的,每次调用时都会接收输入并返回输出,而不会保存任何关于之前输入或输出的信息。这使得torch.nn.functional中的函数非常适合用于定义前向传播逻辑,同时也使得模型定义更加灵活和清晰。

主要功能分类

  1. 激活函数:如ReLU、Sigmoid、Tanh等,用于在神经网络层之间添加非线性。
  2. 损失函数:如MSELoss、CrossEntropyLoss等,用于计算预测值和真实值之间的差异。
  3. 归一化函数:如BatchNorm、LayerNorm等,用于对输入数据进行归一化处理,加速训练过程并提升模型性能。
  4. 卷积和池化操作:如conv2d、max_pool2d等,用于图像等数据的特征提取。
  5. 其他操作:如dropout、padding、embedding等,提供了丰富的网络构建工具。
示例:激活函数和损失函数
import torch
import torch.nn.functional as F# 创建张量
x = torch.tensor([-1.0, 0.0, 1.0])# ReLU 激活函数
relu_x = F.relu(x)
print(relu_x)  # 输出: tensor([0., 0., 1.])# Sigmoid 激活函数
sigmoid_x = torch.sigmoid(x)
print(sigmoid_x)  # 输出: tensor([0.2689, 0.5000, 0.7311])# 计算均方误差损失
target = torch.tensor([0.0, 1.0, 1.0])
loss = F.mse_loss(sigmoid_x, target)
print(loss)  # 输出: tensor(0.2201)
使用torch.nn.functional中的ReLU激活函数和CrossEntropyLoss损失函数:
import torch  
import torch.nn.functional as F  # 假设我们有以下简单的模型参数(通常这些参数会由torch.nn.Module的子类管理)  
# 假设输入图像大小为1x28x28(1个通道,28x28像素)  
# 第一个全连接层将784(28*28)个输入转换为128个输出  
weight1 = torch.randn(784, 128)  
bias1 = torch.zeros(128)  
# 第二个全连接层将128个输入转换为10个输出(对应10个类别)  
weight2 = torch.randn(128, 10)  
bias2 = torch.zeros(10)  # 模拟一个批次的数据(假设批次大小为1,即一张图像)  
# 这里我们随机生成一个1x28x28的图像,并展平为1x784  
x = torch.randn(1, 1, 28, 28)  # [batch_size, channels, height, width]  
x = x.view(1, -1)  # 展平为 [batch_size, 784]  # 前向传播  
# 第一层全连接 + ReLU激活  
h1 = x.mm(weight1) + bias1  # [batch_size, 128]  
h1 = F.relu(h1)  # 第二层全连接  
output = h1.mm(weight2) + bias2  # [batch_size, 10]  # 假设真实标签是3(即手写数字3)  
label = torch.tensor([3], dtype=torch.long)  # 计算损失  
loss = F.cross_entropy(output, label)  print(f'Loss: {loss.item()}')

注意事项

  • 在实际使用中,通常会通过继承torch.nn.Module来构建和管理网络参数,因为这样可以更方便地利用PyTorch提供的自动求导、模型保存/加载等功能。
  • torch.nn.functional中的函数通常与torch.nn模块中的层(Layer)相对应,但函数式接口更加灵活,适合用于快速原型设计或简单网络构建。
  • 在进行模型训练时,通常会使用torch.optim中的优化器来更新模型参数,而torch.nn.functional中的函数则用于定义前向传播逻辑和计算损失。

3. torch.nn

torch.nn 模块是 PyTorch 中用于构建神经网络模型的核心模块。它提供了各种用于创建和训练神经网络的工具和组件,比如线性层、激活函数、损失函数等。下面是对torch.nn 模块的介绍:

基础组件

  • nn.Module: 是所有神经网络模块的基类。用户自定义的模型应该继承 nn.Module,并实现 forward 方法来定义前向传播的过程。

  • nn.Linear: 这是一个全连接层(线性变换),它对输入数据进行线性变换: y = x ∗ W T + b y = x * W^T + b y=xWT+b.

  • 激活函数: 常用的激活函数包括 nn.ReLU、nn.Sigmoid、nn.Tanh 等,用于增加模型的非线性能力。

示例代码

以下是一个简单的例子,演示如何使用 torch.nn 模块创建一个包含一个隐藏层的神经网络模型:

import torch
import torch.nn as nnclass SimpleModel(nn.Module):def __init__(self):super(SimpleModel, self).__init__()# 定义一个输入大小为1,输出大小为10的线性层self.hidden_layer = nn.Linear(1, 10)# 定义一个输入大小为10,输出大小为1的线性层self.output_layer = nn.Linear(10, 1)def forward(self, x):# 应用隐藏层,然后应用 tanh 激活函数x = torch.tanh(self.hidden_layer(x))# 应用输出层x = self.output_layer(x)return x# 创建模型实例
model = SimpleModel()# 输入数据
input_data = torch.tensor([[1.0]])# 进行前向传播
output = model(input_data)
print(output)

模型解释

在上述代码中,我们定义了一个简单的模型 SimpleModel,它包括:

两层线性层:

  • self.hidden_layer: 接收一个输入,并输出 10 个特征。
  • self.output_layer: 将 10 个特征压缩到单一输出。

前向传播 (forward):

  • 输入首先通过 hidden_layer,然后通过 torch.tanh 激活函数。
  • 激活输出再通过 output_layer 产生最终输出。由于网络随机设定初始权重,因此结果是随机的。

4. torch.optim.lr_scheduler

PyTorch 学习率调度器详细案例

背景

在训练深度学习模型时,学习率的设置和调整对模型的训练效果和速度有着重要的影响。PyTorch 提供了多种学习率调度器,可以在训练过程中动态调整学习率。下面将详细解释如何使用 StepLRMultiStepLR 学习率调度器,并演示它们的使用。

示例代码

import torch
from torch.optim import SGD
from torch.optim.lr_scheduler import StepLR, MultiStepLR# 创建一个简单的模型
model = torch.nn.Linear(10, 1)# 创建优化器
optimizer = SGD(model.parameters(), lr=0.1)# 创建学习率调度器
scheduler_step = StepLR(optimizer, step_size=10, gamma=0.1)
scheduler_multistep = MultiStepLR(optimizer, milestones=[30, 80], gamma=0.1)# 模拟训练过程
for epoch in range(100):optimizer.step()  # 更新模型参数scheduler_step.step()  # 更新学习率scheduler_multistep.step()  # 更新学习率print(f"Epoch {epoch}: StepLR LR={scheduler_step.get_last_lr()}, MultiStepLR LR={scheduler_multistep.get_last_lr()}")

解释:

  • StepLR
    StepLR 是一种按固定步数调整学习率的调度器。
    step_size=10 表示每 10 个 epoch 调整一次学习率。
    gamma=0.1 表示每次调整时,将学习率乘以 0.1.
  • MultiStepLR
    MultiStepLR 是一种在指定的 epoch 列表中调整学习率的调度器。
    milestones=[30, 80] 表示在第 30 和第 80 个 epoch 时调整学习率。
    gamma=0.1 表示在这些 epoch 调整时,将学习率乘以 0.1.

请添加图片描述


本专栏致力于普及各种偏微分方程的不同数值求解方法,所有文章包含全部可运行代码。欢迎大家支持、关注!

作者 :计算小屋
个人主页 : 计算小屋的主页

http://www.tj-hxxt.cn/news/74463.html

相关文章:

  • 六安哪家做网站不错seo发包软件
  • php 手机网站 模板合肥疫情最新消息
  • 好用的企业邮箱深圳seo招聘
  • 二级域名可以做网站吗常用的网络营销方法及效果
  • 什么网站可以做试卷营销计划
  • 中国企业网是国企吗游戏优化软件
  • 电子商务网站建设与维护 试卷猪八戒网接单平台
  • 建设工程获奖查询网站互联网十大企业
  • 只做日本的旅行网站网站自动推广软件
  • 天津建设网站的公司哪家好外贸企业网站推广
  • 网店网站建设的步骤过程个人怎么注册自己的网站
  • 怎样给网站做超链接百度关键词排名软件
  • 现在网站做多宽百度信息流广告推广
  • 建立公司网站视频百度云官网登录入口
  • 都匀网站建设公司免费手机优化大师下载安装
  • 太原网页设计公司是销售吗厦门seo推广外包
  • 肇庆市住房和城乡房屋建设局网站网络推广工作好吗
  • 苏州营销型网站推广新网域名注册
  • 成都装修公司十强黄山seo
  • 上海做企业网站的公司百度移动seo首选帝搜软件
  • 动态网站开发考试答案杭州关键词排名提升
  • 网站建设清单保定网站建设方案优化
  • 深圳网站制作作关键词优化资讯
  • 宁波网站建设rswlseo百科
  • 江苏网站建设官网关键词首页排名优化平台
  • 幼教网站建设分析重庆企业seo
  • 团购做的好的网站seo网络培训机构
  • 做网站图片广告推广怎么忽悠人的百度竞价推广属于什么广告
  • wordpress 无法登出黄冈网站推广优化找哪家
  • 奕腾网站建设福州seo招聘