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 conectar la capa de entrada a una capa adicional en Tensorflow.

Estaba preguntándome si es posible crear una estructura de red personalizada en la cual la capa de entrada tenga una conexión extra con una capa oculta que no sea adyacente a la capa de entrada utilizando tensorflow. Como ejemplo, supongamos que tengo una estructura de red simple como se muestra a continuación.

““
import numpy as np
import random
import tensorflow as tf
from tensorflow import keras

m = 200
n = 5
my_input= np.random.random([m,n])
my_output = np.random.random([m,1])

my_model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(my_input.shape[1],)),
tf.keras.layers.Dense(32, activation=’softmax’),
tf.keras.layers.Dense(32, activation=’tanh’),
tf.keras.layers.Dense(32, activation=’relu’),
tf.keras.layers.Dense(1)
])

my_model.compile(loss=’mse’,optimizer = tf.keras.optimizers.Adam(learning_rate=0.001))
res = my_model.fit(my_input, my_output, epochs=50, batch_size=1,verbose=0)
“`

¿Existe una forma de que la primera capa que tiene los valores de entrada tenga una conexión adicional con la tercera capa que tiene la activación ReLU? Al hacerlo, me gustaría tener diferentes restricciones en cada conexión. Por ejemplo, para la conexión proveniente de la capa anterior, me gustaría usar la inicialización de peso GlorotNormal. En cuanto a la conexión adicional proveniente de la capa de entrada, me gustaría usar la inicialización de peso HeUniform.

Intenté visualizar lo que tengo en mente a continuación.

Imagen de la estructura de la red personalizada

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible crear una estructura de red personalizada donde la capa de entrada tenga una conexión adicional a una capa oculta que no está adyacente a la capa de entrada utilizando TensorFlow. Una forma de hacerlo es utilizando la API funcional de Keras.

    Aquí hay un ejemplo de código que muestra cómo crear la estructura de red como se muestra en la visualización:

    import tensorflow as tf
    from tensorflow import keras
    
    inputs = keras.Input(shape=(n,))
    x = keras.layers.Dense(32, activation="softmax")(inputs)
    extra_input = keras.Input(shape=(n,))
    extra_connection = keras.layers.Dense(32, activation="relu", kernel_initializer="he_uniform")(extra_input)
    concatenated = keras.layers.Concatenate()([x, extra_connection])
    x = keras.layers.Dense(32, activation="tanh")(concatenated)
    outputs = keras.layers.Dense(1)(x)
    
    model = keras.Model(inputs=[inputs, extra_input], outputs=outputs)
    model.compile(loss="mse", optimizer=keras.optimizers.Adam(learning_rate=0.001))
    
    res = model.fit([my_input, my_input], my_output, epochs=50, batch_size=1, verbose=0)
    

    Aquí, definimos dos capas de entrada: una para la entrada principal y otra para la conexión adicional. Luego, pasamos las dos capas de entrada a través de capas densas separadas y concatenamos las salidas resultantes. Finalmente, pasamos la salida concatenada a través de las capas restantes del modelo.

    Para agregar diferentes restricciones para cada conexión, simplemente podemos especificar los métodos de inicialización apropiados al definir las capas densas.

    En el ejemplo de código anterior, utilizamos la inicialización ‘he_uniform’ para la conexión adicional y la inicialización ‘glorot_uniform’ predeterminada para la conexión principal.

Comments are closed.