为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用参数实现当前的pytorch激活函数?

如何使用参数实现当前的pytorch激活函数?

慕莱坞森 2021-10-10 16:53:52
我正在寻找一种简单的方法来使用 pytorch 库中存在的激活函数,但使用某种参数。例如:tanh(x/10)我想出寻找解决方案的唯一方法是完全从头开始实现自定义功能。有没有更好/更优雅的方法来做到这一点?编辑:我正在寻找某种方法将函数 Tanh(x/10) 而不是普通的 Tanh(x) 附加到我的模型中。这是相关的代码块:    self.model = nn.Sequential()    for i in range(len(self.layers)-1):        self.model.add_module("linear_layer_" + str(i), nn.Linear(self.layers[i], self.layers[i + 1]))        if activations == None:            self.model.add_module("activation_" + str(i), nn.Tanh())        else:            if activations[i] == "T":                self.model.add_module("activation_" + str(i), nn.Tanh())            elif activations[i] == "R":                self.model.add_module("activation_" + str(i), nn.ReLU())            else:                #no activation                pass
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

您可以将其内联到自定义层中,而不是将其定义为特定函数。


例如,您的解决方案可能如下所示:



import torch

import torch.nn as nn


class Net(nn.Module):

    def __init__(self):

        super(Net, self).__init__()

        self.fc1 = nn.Linear(4, 10)

        self.fc2 = nn.Linear(10, 3)

        self.fc3 = nn.Softmax()


    def forward(self, x):

        return self.fc3(self.fc2(torch.tanh(self.fc1(x)/10)))

wheretorch.tanh(output/10)内联在模块的 forward 函数中。


查看完整回答
反对 回复 2021-10-10
?
绝地无双

TA贡献1946条经验 获得超4个赞

您可以使用乘法参数创建一个图层:


import torch

import torch.nn as nn


class CustomTanh(nn.Module):


    #the init method takes the parameter:

    def __init__(self, multiplier):

        self.multiplier = multiplier


    #the forward calls it:

    def forward(self, x):

        x = self.multiplier * x

        return torch.tanh(x)

将其添加到您的模型中,CustomTanh(1/10)而不是nn.Tanh()。


查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号