web-dev-qa-db-fra.com

Comment extraire les poids de biais dans le modèle séquentiel Keras?

J'exécute un simple réseau de rétroaction en utilisant Keras . N'ayant qu'une seule couche cachée, je voudrais faire une inférence concernant la pertinence de chaque entrée pour chaque sortie et je voudrais extraire les poids.

Voici le modèle:

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))

Pour extraire le poids, j'ai écrit:

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])

Malheureusement, je n'ai pas les colonnes de biais dans les matrices, ce que je sais que Keras y met automatiquement.

Savez-vous comment récupérer les poids de biais?

Merci d'avance pour votre aide !

14
Tommaso Guerrini

get_weights () pour une couche dense renvoie une liste de deux éléments, le premier élément contient les poids et le deuxième élément contient les biais. Vous pouvez donc simplement faire:

weights = model.layers[0].get_weights()[0]
biases = model.layers[0].get_weights()[1]

Notez que les poids et les biais sont déjà des tableaux numpy.

26
Matias Valdenegro