If I am training on a GRU model, is there a way I can output the learnt parameters so that when I train next time with more data, I can initialize with those learnt parameters as a starting point?
There is a way to do this. See the documentation! It is very good.
I assume you mean that you build a network using Keras (which contains recurrent GRU layers) and would like to save the model after some training, then restart from the same point e.g. with new data or just to push the model further.
Assuming you want to analyse some images of shape (150, 150, 3):
from keras.models import Model, load_model from keras.layers import Input, GRU, Dense my_model = Model() my_input = Input(shape=(150, 150, 3)) # using Tensorflow's dims: 'channels last' gru_layer - GRU()(input) output = Dense(32)(gru_layer) # tell the Model class which layers are the start and end of the model model = Model(inputs=my_input, outputs=my_output) # save it! my_model.save('my_model.h5') # some time later.... a new python session my_reloaded_model = load_model('my_model.h5') # continue using the model
At the point the model is built, we can compile and train it the usual way e.g.
Once training is finished, we can save the model two different ways:
- just the model weights, using
- the whole model and its meta data, using
In either case, you will need the library
h5py (see the documentation)
Option 2 preserves more information from the model. Quoting the documentation, it saves:
- the architecture of the model, allowing to re-create the model
- the weights of the model
- the training configuration (loss, optimizer)
- the state of the optimizer, allowing to resume training exactly where you left off.
To continue on the with model where you ended and saved, it is as simple as:
my_model = keras.models.load_model('my_models.h5')
Now you can train it further or introspect the model and so on.