Neural network PyTorch-fix预测中的自定义激活函数

Neural network PyTorch-fix预测中的自定义激活函数,neural-network,pytorch,activation-function,Neural Network,Pytorch,Activation Function,我读过有关CustomActivation函数的内容,但仍然无法实现我的代码。我的激活函数可以表示为现有PyTorch函数的组合,它可以很好地工作函数\u PyTorch(预测,Q\u样本)。[Q_samples,是一个变量,我需要它,它不需要梯度。] 我的激活函数应该接收NN的输出,并执行函数_pytorch,它的输出进入损耗函数。因此: class Activation_fun(nn.Module): def __init__(self, prediction): super().

我读过有关CustomActivation函数的内容,但仍然无法实现我的代码。我的激活函数可以表示为现有PyTorch函数的组合,它可以很好地工作
函数\u PyTorch(预测,Q\u样本)
。[Q_samples,是一个变量,我需要它,它不需要梯度。]

我的激活函数应该接收NN的输出,并执行
函数_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, hidden_size, output_size)
在我的训练时期:

outputs = model(inputs, q_samples)
问题是:如果我应用我的定制激活功能,我的预测仍然是固定的。 我的执行中有什么问题吗