当前位置: 首页 > 面试题库 >

如何在PyTorch中初始化权重?

谢同化
2023-03-14
问题内容

如何在PyTorch中的网络中初始化权重和偏差(例如,使用He或Xavier初始化)?


问题答案:

要初始化单层的权重,请使用中的函数torch.nn.init。例如:

conv1 = torch.nn.Conv2d(...)
torch.nn.init.xavier_uniform(conv1.weight)

或者,您可以通过写入conv1.weight.data(是torch.Tensor)来修改参数。例:

conv1.weight.data.fill_(0.01)

偏见也是如此:

conv1.bias.data.fill_(0.01)

nn.Sequential 或自定义 nn.Module

将初始化函数传递给torch.nn.Module.apply。它将以nn.Module递归方式初始化整个权重。

申请( FN
):
适用fn递归到每个子模块(通过返回的.children()),以及自我。典型的用法包括初始化模型的参数(另请参见torch-nn-
init)。

例:

def init_weights(m):
    if type(m) == nn.Linear:
        torch.nn.init.xavier_uniform(m.weight)
        m.bias.data.fill_(0.01)

net = nn.Sequential(nn.Linear(2, 2), nn.Linear(2, 2))
net.apply(init_weights)


 类似资料:
  • 问题内容: 我无法按照以下代码初始化列表: 我遇到以下错误: 无法实例化类型 我该如何实例化? 问题答案: 如果你检查API,则会注意到它说: 作为一种手段,它无法实例化(不可能)。 如果你检查该链接,则会发现一些实现的: 所有已知的实施类: 那些可以实例化。使用它们的链接来了解有关它们的更多信息,即IE:知道哪个更适合你的需求。 三种最常用的可能是: 奖励: 你还可以使用,以更简单的方式使用值实

  • 问题内容: 我正在跟踪Swift和Objective-C Runtime,它适用于常规方法。 我喜欢使用init方法,据我了解,init就像一个类方法。因此,我尝试将初始化作为实例和类方法。但这似乎不起作用 我可以使用Objective C使其工作,只是想知道如何在Swift中使其工作 摘录自我的要旨 问题答案: 为方法创建选择器时,应使用Obj C方法签名作为选择器的基础,因为使用Obj C运行

  • 本文向大家介绍python PyTorch参数初始化和Finetune,包括了python PyTorch参数初始化和Finetune的使用技巧和注意事项,需要的朋友参考一下 前言 这篇文章算是论坛PyTorch Forums关于参数初始化和finetune的总结,也是我在写代码中用的算是“最佳实践”吧。最后希望大家没事多逛逛论坛,有很多高质量的回答。 参数初始化 参数的初始化其实就是对参数赋值。

  • 问题内容: 我正在初始化这样的数组: NetBeans在此行指出一个错误: 我该如何解决这个问题? 问题答案: 上面的信息不正确(语法错误)。这意味着你正在分配一个仅可容纳元素的数组。 如果要初始化数组,请尝试使用: 注意两个声明之间的区别。将新数组分配给声明的变量时,new必须使用。 即使你纠正了语法,访问仍然是不正确的(你只能访问,因为Java中的数组索引是基于0的)。访问]将抛出。

  • 我有一个非常基本的问题。我需要如何为ArrayList键入parrameters才能在BlueJ中使用代码?我有一个方法如下。

  • 在Java中,可以初始化数组,例如: Kotlin的数组初始化是什么样子的?