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
scroll top