Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to extract bias weights in Keras sequential model? [duplicate]

I'm running a simple feed-forward network using Keras . Having just one hidden layer I would like to make some inference regarding the relevance of each input to each output and I would like to extract the weights.

This is the model:

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

To extract the weight I wrote:

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

Unfortunately I don't get the biases columns in the matrices, which I know Keras automatically puts in it.

Do you know how to retrieve the biases weights?

Thank you in advance for your help !

like image 488
Tommaso Guerrini Avatar asked Feb 23 '17 09:02

Tommaso Guerrini


People also ask

How do you find the weights and biases of a model?

If you just need weights and bias values at the end of the training you can use model. layer[index]. get_weights()[0] for weights and model.

What is the meaning of model is equal to sequential in Keras?

The Sequential model API is a way of creating deep learning models where an instance of the Sequential class is created and model layers are created and added to it.


1 Answers

get_weights() for a Dense layer returns a list of two elements, the first element contains the weights, and the second element contains the biases. So you can simply do:

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

Note that weights and biases are already numpy arrays.

like image 138
Dr. Snoopy Avatar answered Oct 04 '22 07:10

Dr. Snoopy