I am using the neuralfit
library to evolve a neural network, but I can't figure out the total number of hyperparameters of the model. I already monitor the size
of the neural network, which should give the bias parameters, but it does not include weights of connections.
import neuralfit
import numpy as np
x = np.asarray([[0],[1],[2],[3],[4]])
y = np.asarray([[4],[3],[2],[1],[0]])
model = neuralfit.Model(1,1)
model.compile('alpha', loss='mse', monitors=['size'])
model.evolve(x,y)
Epoch 100/100 - ... - loss: 0.000000 - size: 4
CodePudding user response:
There are two ways in which this is possible, but the method you want to use depends on the answer you want. If you want to get the total number of parameters that NeuralFit considers, you can do
num_param = len(model.get_nodes()) len(model.get_connections())
which gives the number of biases weights of the model.
Alternative method: via Keras
Since NeuralFit models can be exported to Keras, we can use this question to find the number of parameters for a Keras model. However, it adds an additional parameter for every output node of the original model. This is because of the way that NeuralFit's models are converted.
import keras.backend as K
keras_model = model.to_keras()
num_param = np.sum([K.count_params(w) for w in keras_model.trainable_weights])