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

梅州网站建设公司徐州seo排名公司

梅州网站建设公司,徐州seo排名公司,网站域名注册流程,中国国防新闻改编自李沐老师《动手深度学习》5.2. 参数管理 — 动手学深度学习 2.0.0 documentation (d2l.ai) 在深度学习中,一旦我们选择了模型架构并设置了超参数,我们就会进入训练阶段。训练的目标是找到能够最小化损失函数的模型参数。这些参数在训练后用于预测&…

改编自李沐老师《动手深度学习》5.2. 参数管理 — 动手学深度学习 2.0.0 documentation (d2l.ai)

  在深度学习中,一旦我们选择了模型架构并设置了超参数,我们就会进入训练阶段。训练的目标是找到能够最小化损失函数的模型参数。这些参数在训练后用于预测,有时我们也需要将它们提取出来,以便在其他环境中使用,或者保存模型以便在其他软件中执行,甚至是为了科学理解而进行检查。

参数访问

访问模型参数

在PyTorch中,我们可以通过模型的层来访问参数。每一层都有自己的参数,比如权重和偏置。我们可以通过索引来访问这些参数。

import torch
from torch import nn# 定义一个简单的模型
net = nn.Sequential(nn.Linear(4, 8), nn.ReLU(), nn.Linear(8, 1))
X = torch.rand(size=(2, 4))
output = net(X)

我们可以通过索引来检查模型中特定层的参数。

# 打印第二层(全连接层)的参数
print(net[2].state_dict())

这会显示第二层的权重和偏置,它们是模型学习的关键部分。

访问特定参数的值

我们可以进一步提取特定参数的值。这通常在我们需要对参数进行特定操作时非常有用。

# 打印第二层的偏置参数
print(net[2].bias)
print(net[2].bias.data)

参数是复合对象,包含值、梯度和其他信息。在没有进行反向传播的情况下,参数的梯度处于初始状态。

一次性访问所有参数

当需要对所有参数执行操作时,可以一次性访问所有参数。这在处理大型模型时尤其有用。

# 打印所有层的参数名称和形状
print(*[(name, param.shape) for name, param in net.named_parameters()])

从嵌套块收集参数

当模型由多个子模块组成时,我们可以通过类似列表索引的方式来访问这些子模块的参数。

# 定义一个子模块
def block1():return nn.Sequential(nn.Linear(4, 8), nn.ReLU(),nn.Linear(8, 4), nn.ReLU())# 定义一个包含多个子模块的模型
def block2():net = nn.Sequential()for i in range(4):net.add_module(f'block {i}', block1())return net# 创建一个包含嵌套子模块的模型
rgnet = nn.Sequential(block2(), nn.Linear(4, 1))
output = rgnet(X)# 打印模型结构
print(rgnet)# 访问嵌套子模块的参数
print(rgnet[0][1][0].bias.data)

参数初始化

内置初始化

PyTorch提供了多种预置的初始化方法,我们可以根据需要选择。

# 初始化所有权重为高斯随机变量,偏置为0
def init_normal(m):if type(m) == nn.Linear:nn.init.normal_(m.weight, mean=0, std=0.01)nn.init.zeros_(m.bias)
net.apply(init_normal)

自定义初始化

有时,我们需要自定义初始化方法来满足特定的需求。

# 自定义初始化方法
def my_init(m):if type(m) == nn.Linear:print("Init", *[(name, param.shape)for name, param in m.named_parameters()][0])nn.init.uniform_(m.weight, -10, 10)m.weight.data *= m.weight.data.abs() >= 5net.apply(my_init)

参数绑定

有时我们希望在多个层间共享参数。在PyTorch中,我们可以通过引用同一个层的参数来实现这一点。

# 定义一个共享层
shared = nn.Linear(8, 8)# 使用共享层构建模型
net = nn.Sequential(nn.Linear(4, 8), nn.ReLU(),shared, nn.ReLU(),shared, nn.ReLU(),nn.Linear(8, 1))
output = net(X)# 检查参数是否相同
print(net[2].weight.data[0] == net[4].weight.data[0])# 改变一个参数,另一个也会改变
net[2].weight.data[0, 0] = 100
print(net[2].weight.data[0] == net[4].weight.data[0])

这个例子展示了如何在模型的不同层之间共享参数,以及如何通过改变一个参数来影响另一个参数。这种技术在构建复杂的神经网络时非常有用。

http://www.khdw.cn/news/19747.html

相关文章:

  • 整形医院网站源码下载乔拓云建站平台
  • 武汉 门户网站建设cfa三级和一二级关系大吗
  • 交互网站是什么郑州网络推广服务
  • 海南省建设考试网站首页企业推广软文范文
  • 自己做盗版小说网站吗网店运营培训哪里好
  • 上海建站推广公司百度词条搜索排行
  • 购物网站建设实战教程答案百度指数查询官网入口登录
  • 济南科技市场做网站百度app下载安装
  • 电子 网站建设申请过程百度关键词搜索排名查询
  • 服务项目网站建设百度搜索排名推广
  • 电子商务网站建设asp电商平台推广方案
  • 青岛正规网站建设哪家便宜国外引擎搜索
  • 在柬埔寨做网络销售推网站贴吧引流推广
  • 网站开发的性能测试如何写网络营销方案策划书
  • 广水市建设局网站东莞做网站公司电话
  • 企业官方网站怎么建设北京seo服务商
  • 新网站百度收录搜索引擎谷歌入口
  • 郑州网站制作招聘舆情信息在哪里找
  • wordpress 360急速模式打不开郑州seo技术顾问
  • 电子商务网站建设的常用开发方法武汉今日头条最新消息
  • 泉州网站建设兼职百度登录
  • 论坛的网站开发项目网站怎么制作
  • 1核1g服务器做网站最新域名解析
  • 宁海哪家做网站比较可靠网络广告策划流程有哪些?
  • 如何让百度快速收录网站怎么优化关键词排名
  • 家装公司网站建设方案免费b2b平台推广
  • 做零食的网站有哪些搜索引擎技术基础
  • 网站后台怎么上传网页模板网络服务器图片
  • 网络广告是什么意思徐州新站百度快照优化
  • 营销网络的建设是什么意思求职seo