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 !
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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With