My model has many parameters for each data value in the data set. I initialize them in my model constructor as follows.
init_lev_sms = []
init_seas_sms = []
init_seasonalities = []
for i in range(num_series):
init_lev_sms.append(nn.Parameter(torch.Tensor([0.5])))
init_seas_sms.append(nn.Parameter(torch.Tensor([0.5])))
temp_seas = []
for j in range(config['seasonality']):
temp_seas.append(nn.Parameter(torch.Tensor([0.5])))
init_seasonalities.append(torch.Tensor(nn.ParameterList(copy.copy(temp_seas))))
self.init_lev_sms = nn.ParameterList(init_lev_sms)
self.init_seas_sms = nn.ParameterList(init_seas_sms)
self.init_seasonalities = init_seasonalities
And then in my forward I access them as follows
Logistic is nn.Sigmoid
idx is a list of indices from for the shuffled batch so we can look up the right parameters
init_lev_sms and seas_sms are showing up when I print the model parameters
init_seasonalities is not showing up
none of the gradients are being accumulated with the operations that I apply after this initialization
lev_sms = self.logistic(torch.stack([self.init_lev_sms[idx] for idx in idxs]).squeeze(1))
seas_sms = self.logistic(torch.stack([self.init_seas_sms[idx] for idx in idxs]).squeeze(1))
init_seasonalities = torch.stack([self.init_seasonalities[idx] for idx in idxs])
seasonalities = []
# prime seasonality
for i in range(self.config['seasonality']):
seasonalities.append(torch.exp(init_seasonalities[:, i]))
seasonalities.append(torch.exp(init_seasonalities[:, 0]))
Since I’m indexing the object itself it feels like I should be fine. How can I go about debugging this issue (i.e. visualizing the gradients flow backward in the network)