问题描述
我阅读了this post有关定制功能的信息,但仍然无法实现我的代码。我的激活函数可以表示为现有PyTorch函数的组合,并且可以正常使用function_pytorch(prediction,Q_sample)
。 [Q_samples,是我需要的一些变量,它不需要渐变。 ]
我的激活函数应该接收NN的输出,并实现function_pytorch
,然后将它放到损失函数中。所以:
class Activation_fun(nn.Module):
def __init__(self,prediction):
super().__init__()
def forward(self,input,Q_samples):
return function_pytorch(input,Q_samples)
在我的NN中
class NeuralNet(nn.Module):
def __init__(self,input_size,hidden_size,output_size):
super(NeuralNet,self).__init__()
self.BN0 = nn.Batchnorm1d(input_size)
self.l1 = nn.Linear(input_size,hidden_size)
self.tan = nn.Tanh()
self.BN = nn.Batchnorm1d(output_size)
#custom activation
self.l2 = Activation_fun()
def forward(self,x,q):
out = self.BN0(x)
out = self.l1(out)
out = self.tan()
out = self.BN9(out)
out = self.l2(out,q)
return out
model = NeuralNet(input_size,output_size)
在我的训练时代:
outputs = model(inputs,q_samples)
问题是:如果应用自定义的激活功能,我的预测将保持不变。 我的实施过程中有问题吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)