I have built a simple neural network,
model = Sequential()
model.add(Dense(20, input_dim=5, activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))
and I would get its weights by:
summary = model.summary()
W_Input_Hidden = model.layers[0].get_weights()[0]
W_Output_Hidden = model.layers[1].get_weights()[0]
print(summary)
print('INPUT-HIDDEN LAYER WEIGHTS:')
print(W_Input_Hidden)
print('HIDDEN-OUTPUT LAYER WEIGHTS:')
print(W_Output_Hidden)
but, in this way, I only get the weights matrices (5x20 , 1x20) without the biases. How can I get the biases values?
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.
Use Bias. It specifies whether or not you want to include biases in the layer for all of its neurons. If we want to include biases, we set the parameter value to True. Otherwise, we set it to False.
Quite simple, its just the second element in the array returned by get_weights() (For Dense layers):
B_Input_Hidden = model.layers[0].get_weights()[1]
B_Output_Hidden = model.layers[1].get_weights()[1]
Here's a complete working example (implemented with TensorFlow 2 and Keras).
import tensorflow as tf
import numpy as np
def get_model():
inp = tf.keras.layers.Input(shape=(1,))
# Use the parameter bias_initializer='random_uniform'
# in case you want the initial biases different than zero.
x = tf.keras.layers.Dense(8)(inp)
out = tf.keras.layers.Dense(1)(x)
model = tf.keras.models.Model(inputs=inp, outputs=out)
return model
def main():
model = get_model()
model.compile(loss="mse")
weights = model.layers[1].get_weights()[0]
biases = model.layers[1].get_weights()[1]
print("initial weights =", weights)
print("initial biases =", biases)
X = np.random.randint(-10, 11, size=(1000, 1))
y = np.random.randint(0, 2, size=(1000, 1))
model.fit(X, y)
weights = model.layers[1].get_weights()[0]
biases = model.layers[1].get_weights()[1]
print("learned weights =", weights)
# Biases are similar because they are all initialized with zeros (by default).
print("learned biases =", biases)
if __name__ == '__main__':
main()
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