如果我在 GRU 模型上进行训练,有没有一种方法可以输出学习到的参数,以便下次使用更多数据进行训练时,可以以这些学习到的参数为起点进行初始化?
输出 Keras 模型的训练参数
数据挖掘
张量流
喀拉斯
2022-02-19 07:42:09
1个回答
有一种方法可以做到这一点。请参阅文档!这很棒。
我假设您的意思是您使用 Keras(其中包含循环 GRU 层)构建网络,并希望在一些训练后保存模型,然后从同一点重新启动,例如使用新数据或只是进一步推动模型。
例子
假设您要分析一些形状为 (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
解释
在构建模型时,我们可以按照通常的方式编译和训练它,例如my_model.fit(...)
训练完成后,我们可以通过两种不同的方式保存模型:
- 只是模型权重,使用
my_model.save_weights('my_weights.h5') - 整个模型及其元数据,使用
my_model.save('my_model.h5')
无论哪种情况,您都需要该库h5py(请参阅文档)
选项 2 保留了模型中的更多信息。引用文档,它保存:
- 模型的架构,允许重新创建模型
- 模型的权重
- 训练配置(损失、优化器)
- 优化器的状态,允许在您停止的地方恢复训练。
要继续使用您结束并保存的模型,它很简单:
my_model = keras.models.load_model('my_models.h5')
现在你可以进一步训练它或内省模型等等。
链接
其它你可能感兴趣的问题