How can I get biases from a trained model in Keras?

后端 未结 2 1161
挽巷
挽巷 2020-12-06 06:50

I have built a simple neural network,

model = Sequential()
model.add(Dense(20, input_dim=5, activation=\'sigmoid\'))
model.add(Dense(1, activation=\'sigmoid\         


        
相关标签:
2条回答
  • 2020-12-06 07:09

    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()
    
    0 讨论(0)
  • 2020-12-06 07:18

    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]
    
    0 讨论(0)
提交回复
热议问题