def __init__(self, encoding_dim):
        super(Autoencoder, self).__init__()
        ## encoder ##
        # linear layer (784 -> encoding_dim)
        self.fc1 = F.Linear(28 * 28, encoding_dim)

        ## decoder ##
        # linear layer (encoding_dim -> input size)
        self.fc2 = F.Linear(encoding_dim, 28 * 28)
Beispiel #2
0
    def __init__(self):
        super(GeneratorNet, self).__init__()
        n_features = 100
        n_out = 784

        self.hidden0 = nn.Sequential(nn.Linear(n_features, 256),
                                     nn.LeakyReLU(0.2))
        self.hidden1 = nn.Sequential(nn.Linear(256, 512), nn.LeakyReLU(0.2))
        self.hidden2 = nn.Sequential(nn.Linear(512, 1024), nn.LeakyReLU(0.2))

        self.out = nn.Sequential(nn.Linear(1024, n_out), nn.Tanh())
Beispiel #3
0
 def __init__(self):
     super(CVAE, self).__init__()
     self.relu = nn.ReLU()
     self.sigmoid = nn.Sigmoid()
     # For Encoder
     self.fcE = nn.Linear(X_dim + y_dim, h_dim)
     self.fcE_mu = nn.Linear(h_dim, Z_dim)
     self.fcE_var = nn.Linear(h_dim, Z_dim)
     # For Decoder
     self.fcD1 = nn.Linear(Z_dim + y_dim, h_dim)
     self.fcD2 = nn.Linear(h_dim, X_dim)
Beispiel #4
0
    def __init__(self):
        super(DiscriminatorNet, self).__init__()
        n_features = 784
        n_out = 1

        self.hidden0 = nn.Sequential(nn.Linear(n_features, 1024),
                                     nn.LeakyReLU(0.2), nn.Dropout(0.3))
        self.hidden1 = nn.Sequential(nn.Linear(1024, 512), nn.LeakyReLU(0.2),
                                     nn.Dropout(0.3))
        self.hidden2 = nn.Sequential(nn.Linear(512, 256), nn.LeakyReLU(0.2),
                                     nn.Dropout(0.3))
        self.out = nn.Sequential(torch.nn.Linear(256, n_out),
                                 torch.nn.Sigmoid())
Beispiel #5
0
def gradient_descent_pytorch_using_nn():
    batch_size, input_dim, hidden_layer_size, output_dim = 64, 1000, 100, 10

    x = torch.randn(batch_size, input_dim)
    y = torch.randn(batch_size, output_dim)

    #ici on définit notre réseaud de neuronne. on voit ici une première couche linaire avec les input
    #un relu et une dernière couche lineair avec les outputs
    model = torch.nn.Sequential(
        nn.Linear(input_dim, hidden_layer_size),
        nn.ReLU(),
        nn.Linear(hidden_layer_size, output_dim),
    )

    #on définit la loss on moyen de la fonction nn qui récupère directement la fonction et son traitement
    loss_fn = nn.MSELoss(reduction='sum')
    #on définit l'optimizer qui permet de rentre l'update des poids automatique dans un facon spécifique ici Adam mais possible SGD ou autre
    #optimizer_fn = torch.optim.Adam(model.parameters(), lr=learning_rate)

    for i in range(epochs):
        #ici nos input rentre dans le model
        y_pred = model(x)

        #on définit la fonction de loss avec le y_pred ainsi que les outputs
        loss = loss_fn(y_pred, y)

        #on met les gradients à 0 avant de faire le backward pass
        model.zero_grad()

        #calcule le gradient de la loss en fonction de tout les parametres possible du model.
        # à l'interne les paramètres de tous les modules ont le requires_grad=True
        # donc cette appel calculera le gradients de tout les paramètres du model
        loss.backward()

        #soit on fait manuellement comme précedement
        # mais la vu que notre model nous retour tout les paramètres on les récupères directement
        # grace à parametre() et on update les poids en fonctzion du learning rate
        with torch.no_grad():
            for param in model.parameters():
                param -= learning_rate * param.grad
Beispiel #6
0
 def __init__(self, block, Norm):
     super(DNN, self).__init__()
     self.R1 = block(1*9, Norm)
     self.R2 = block(4*9, Norm)
     self.R3 = block(16*9, Norm)
     self.last = F.Linear(576, 1)
Beispiel #7
0
 def forward(self, x):
     if self.bias is not None:
         out = F.Linear(x, self.weight * self.w_mul, self.bias * self.b_mul)
     else:
         out = F.Linear(x, self.weight * self.w_mul)
     return out
	def forward(self, input):
		return F.Linear(input, self.mask*self.weight, self.bias)