首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyTorch:权重的Sigmoid?

PyTorch:权重的Sigmoid?
EN

Stack Overflow用户
提问于 2019-05-30 00:12:37
回答 1查看 672关注 0票数 1

我是第一次接触神经网络/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或池化的东西需要发生?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 03:21:08

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

代码语言:javascript
复制
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 

一旦你这样做了,你就可以像在代码中使用线性层一样使用它了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56364712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档