es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo construir una red neuronal en esta estructura? con diferentes nodos conectados a diferentes número de nodos en la próxima capa.

Solo sé cómo usar la red incorporada como RNN o LSTM en PyTorch. Pero suelen tratar con cada nodo en la capa anterior que dará información a todos los nodos en la siguiente capa.

Quiero hacer algo diferente, pero no sé cómo codificarlo yo mismo. Algo como en esta figura: el nodo a se asigna a todos [d, e, f] tres nodos en la capa 2, mientras que el nodo b se asigna a [e, f] y el nodo c solo se asigna a [f]. Como resultado, el nodo d solo contendrá información de a, mientras que e contendrá información de [a, b]. Y f contendrá información de todos los nodos de la capa anterior.
¿Alguien sabe cómo codificar esta estructura? Por favor, denme alguna idea, estaré muy agradecido 😀

Estructura: https://i.stack.imgur.com/imp4f.png

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Esta estructura parece ser una red neuronal feedforward personalizada con múltiples nodos de entrada para cada nodo de salida. Para implementar esto en PyTorch, puede crear una clase personalizada para el modelo y definir la función forward en consecuencia. Por ejemplo, la función forward podría tomar tres entradas (una para cada nodo de entrada) y pasarlas a través de capas lineales separadas antes de concatenarlas y pasarlas a través de una capa lineal final para producir la salida.

    Aquí hay un código de ejemplo para comenzar:

    import torch
    import torch.nn as nn
    
    class CustomNetwork(nn.Module):
        def __init__(self):
            super(CustomNetwork, self).__init__()
            self.linear1a = nn.Linear(in_features=1, out_features=1)
            self.linear1b = nn.Linear(in_features=1, out_features=1)
            self.linear1c = nn.Linear(in_features=1, out_features=1)
            self.linear2 = nn.Linear(in_features=3, out_features=3)
            self.linear3 = nn.Linear(in_features=3, out_features=1)
    
        def forward(self, a, b, c):
            a_out = self.linear1a(a)
            b_out = self.linear1b(b)
            c_out = self.linear1c(c)
            concat_out = torch.cat((a_out, b_out, c_out), dim=1)
            layer2_out = self.linear2(concat_out)
            final_out = torch.sigmoid(self.linear3(layer2_out))
            return final_out
    

    En este ejemplo, definimos una red personalizada con tres capas lineales separadas para cada nodo de entrada, que luego se concatenan y se pasan a través de una capa lineal más grande antes de producir la salida final. Puede ajustar el número de nodos de entrada, sus dimensiones y las dimensiones de salida según sea necesario para su problema específico.

Comments are closed.