Torch.cat fonctionne-t-il avec la rétropropagation?
Question
Je me demandais si c'était normal d'utiliser Torch.cat dans ma fonction avant. Je le fais parce que je veux les deux premières colonnes de mon entrée pour sauter les couches cachées moyennes et aller directement à la couche finale.
Voici mon code: vous pouvez voir que j'utilise Torch.cat au dernier moment pour faire XCAT.
Le gradient se propage-t-il? Ou le torch.cat cache-t-il ce qui est arrivé à mes variables cachées?
class LinearRegressionForce(nn.Module):
def __init__(self, focus_input_size, rest_input_size, hidden_size_1, hidden_size_2, output_size):
super(LinearRegressionForce, self).__init__()
self.in1 = nn.Linear(rest_input_size, hidden_size_1)
self.middle1 = nn.Linear(hidden_size_1,hidden_size_2)
self.out4 = nn.Linear(focus_input_size + hidden_size_2,output_size)
def forward(self, inputs):
focus_inputs = inputs[:,0:focus_input_size]
rest_inputs = inputs[:,focus_input_size:(rest_input_size+focus_input_size)]
x = self.in1(rest_inputs).clamp(min=0)
x = self.middle1(x).clamp(min=0)
xcat = torch.cat((focus_inputs,x),1)
out = self.out4(xcat).clamp(min=0)
return out
Je l'appelle comme ça:
rest_inputs = Variable(torch.from_numpy(rest_x_train))
focus_x_train_ones = np.concatenate((focus_x_train, np.ones((n,1))), axis=1)
focus_inputs = Variable(torch.from_numpy(focus_x_train_ones)).float()
inputs = torch.cat((focus_inputs,rest_inputs),1)
predicted = model(inputs).data.numpy()
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à datascience.stackexchange