gpt4 book ai didi

python - PyTorch:权重的 Sigmoid?

转载 作者:行者123 更新时间:2023-12-01 07:47:49 25 4
gpt4 key购买 nike

我是神经网络/PyTorch 的新手。我正在尝试制作一个接受向量x的网络,第一层是h_j = w_j^T * x + b_j,输出是max_j{h_j }。唯一的事情是,我希望通过 w_j = S(k*a_j)w_j 限制在 0 和 1 之间,其中 S 是 sigmoid 函数,k 是某个常数,a_j 是实际的权重变量(w_j 只是 a_j 的函数)。我如何在 PyTorch 中执行此操作?我不能只使用 torch.nn.Linear 层,还必须在权重的 sigmoid 函数中添加其他内容?

附带问题,对于最后一个输出层,我可以使用torch.max来获取前一层输出的最大值吗?这表现得好吗,或者是否有一些我不明白需要发生的torch.nn.Max或一些池化的东西?

谢谢!

最佳答案

我真的不确定你为什么要这样做,但你可以声明一个自定义层,如下所示,将 sigmoid 应用于权重。

class NewLayer(nn.Module): 
def __init__ (self, input_size, output_size):
super().__init__()
self.W = nn.Parameter(torch.zeros(input_size, output_size))
# kaiming initialization (use any other if you like)
self.W = nn.init.kaiming_normal_(self.W)
self.b = nn.Parameter(torch.ones(output_size))
def forward(self, x):
# applying sigmoid to weights and getting results
ret = torch.addmm(self.b, x, torch.sigmoid(self.W))
return ret

完成此操作后,您可以像在代码中使用线性层一样使用它。

关于python - PyTorch:权重的 Sigmoid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56364712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com