如何解决在pytorch中添加Xavier初始化
我想将Xavier初始化添加到我的神经网络的第一层,但是在此类中出现错误:
class DemoNN(nn.Module):
def __init__(self):
super().__init__()
torch.manual_seed(0)
self.net = nn.Sequential(
nn.Linear(2,2),torch.nn.init.xavier_uniform((nn.Linear(2,2)).weights),nn.Sigmoid(),nn.Linear(2,4),nn.Softmax()
)
def forward(self,X):
self.net(X)
解决方法
您似乎尝试初始化nn.Sequential对象的构造函数中的第二个线性层。
您需要做的是首先构造self.net
,然后才根据需要初始化第二个线性层。
这是您应该如何做:
import torch
import torch.nn as nn
class DemoNN(nn.Module):
def __init__(self):
super().__init__()
torch.manual_seed(0)
self.net = nn.Sequential(
nn.Linear(2,2),nn.Linear(2,nn.Sigmoid(),4),nn.Softmax()
)
torch.nn.init.xavier_uniform_(self.net[1].weight)
def forward(self,X):
self.net(X)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。