Estoy ejecutando una red de avance simple usando Keras . Teniendo solo una capa oculta, me gustaría hacer algunas inferencias con respecto a la relevancia de cada entrada para cada salida y me gustaría extraer los pesos.
Este es el modelo:
def build_model(input_dim, output_dim): n_output_layer_1 = 150 n_output = output_dim model = Sequential() model.add(Dense(n_output_layer_1, input_dim=input_dim, activation='relu')) model.add(Dropout(0.25)) model.add(Dense(n_output))Para extraer el peso escribí:
for layer in model.layers: weights = layer.get_weights() weights = np.array(weights[0]) #this is hidden to output first = model.layers[0].get_weights() #input to hidden first = np.array(first[0])Desafortunadamente, no obtengo las columnas de sesgo en las matrices, que sé que Keras coloca automáticamente.
¿Sabes cómo recuperar los pesos de los sesgos?
Gracias de antemano por su ayuda !
get_weights() para una capa Dense devuelve una lista de dos elementos, el primer elemento contiene los pesos y el segundo elemento contiene los sesgos. Así que simplemente puedes hacer:
weights = model.layers[0].get_weights()[0] biases = model.layers[0].get_weights()[1]Tenga en cuenta que los pesos y los sesgos ya son matrices numpy.