Hi everyone,
I am getting this error but I do not see why.  I wanted to add a  custom parameter to my RNN. The code is as follows :
class RNN_pre_d(nn.Module):
def init(self, hidden_dim=64, num_layers=1):
super(RNN_pre_d, self).init()
self.num_layers = num_layers
self.hidden_dim = hidden_dim
self.lstm = nn.LSTM(1, self.hidden_dim, self.num_layers)
self.fcF_c = nn.Linear(self.hidden_dim, 1)
w_final = torch.randn(1)
self.w_final = nn.Parameter(w_final)
def forward(self, x):
    x1, (h_1, c_1) = self.lstm(x)    ## x.shape = [sequence_len, batch_size, hidden_dim]
    
    c_train = torch.log(1+torch.exp(self.fcF_c(x1.squeeze(1))))
    
    c_train = c_train.squeeze(-1)
    
    for i in range(1,len(c_train)):
        c_train[i] = c_train[i] + ( 1/(1+torch.exp(-self.w_final)) ) * c_train[i-1] 

    return c_train, h_1, c_1  

the problem only appears when trying to backprop
NumbEpochs      = 100
learning_rate   = 10e-04
NumbHiddLayer   = 1
sizeHidd        = 128
nn_pre_d = RNN_pre_d(hidden_dim = sizeHidd,
num_layers = NumbHiddLayer)
optimizer = optim.Adam(nn_pre_d.parameters(),
lr=learning_rate)
MSE loss function
loss = nn.MSELoss() ; listLossTrain = []
Training data standardized
y = np.random.normal(0, 0.1, 500)
mean_train = np.mean(y) ; std_train = np.std(y) ; Z_stand_train = (y-mean_train) / std_train
data_nn_stand_train = torch.FloatTensor([Z_stand_train])
data_nn_stand_train = data_nn_stand_train.permute(1,0).unsqueeze(-1)
target_train = torch.tensor(y)
Training
for epoch in range(NumbEpochs):
optimizer.zero_grad()
# Make the prediction in training set.
c_train, h_1, c_1  = nn_pre_d.forward(data_nn_stand_train)
            
# Compute a scalar loss in training set.
loss_train = loss(target_train, c_train)


# Compute the gradient for the model parameters and update model parameters.
loss_train.backward()
optimizer.step()

listLossTrain.append(loss_train.detach().numpy())

Thank you!