我正在训练一组非常复杂的模型,我正在寻找一种保存和加载模型优化器状态的方法。“教练模型”由几个其他“权重模型”的不同组合组成,其中一些具有相同的权重,一些具有取决于教练的权重,等等。这个示例太过复杂,无法共享,但是总之,我不能够使用model.save('model_file.h5')
,并keras.models.load_model('model_file.h5')
停止和启动我训练的时候。
model.load_weights('weight_file.h5')
如果训练完成,使用可以很好地测试我的模型,但是如果我尝试使用此方法继续训练模型,则损失甚至无法恢复到其最后位置。我已经读到这是因为使用这种方法没有保存优化器状态,这很有意义。但是,我需要一种用于保存和加载我的教练模型的优化器状态的方法。似乎keras曾经有一个,model.optimizer.get_sate()
并且可以满足model.optimizer.set_sate()
我的要求,但现在似乎不再如此了(至少对于Adam优化器而言)。当前的Keras还有其他解决方案吗?
您可以从load_model
和save_model
函数中提取重要的行。
要保存优化器状态,请在save_model
:
# Save optimizer weights.
symbolic_weights = getattr(model.optimizer, 'weights')
if symbolic_weights:
optimizer_weights_group = f.create_group('optimizer_weights')
weight_values = K.batch_get_value(symbolic_weights)
要加载优化器状态,请参见load_model
:
# Set optimizer weights.
if 'optimizer_weights' in f:
# Build train function (to get weight updates).
if isinstance(model, Sequential):
model.model._make_train_function()
else:
model._make_train_function()
# ...
try:
model.optimizer.set_weights(optimizer_weight_values)
结合以上各行,这是一个示例:
首先将模型拟合5个时期。
X, y = np.random.rand(100, 50), np.random.randint(2, size=100)
x = Input((50,))
out = Dense(1, activation=’sigmoid’)(x)
model = Model(x, out)
model.compile(optimizer=’adam’, loss=’binary_crossentropy’)
model.fit(X, y, epochs=5)
Epoch 1/5
100/100 [==============================] - 0s 4ms/step - loss: 0.7716
Epoch 2/5
100/100 [==============================] - 0s 64us/step - loss: 0.7678
Epoch 3/5
100/100 [==============================] - 0s 82us/step - loss: 0.7665
Epoch 4/5
100/100 [==============================] - 0s 56us/step - loss: 0.7647
Epoch 5/5
100/100 [==============================] - 0s 76us/step - loss: 0.7638
现在保存权重和优化器状态。
model.save_weights(‘weights.h5’)
symbolic_weights = getattr(model.optimizer, ‘weights’)
weight_values = K.batch_get_value(symbolic_weights)
with open(‘optimizer.pkl’, ‘wb’) as f:
pickle.dump(weight_values, f)
在另一个python会话中重建模型,并加载权重。
x = Input((50,))
out = Dense(1, activation=’sigmoid’)(x)
model = Model(x, out)
model.compile(optimizer=’adam’, loss=’binary_crossentropy’)
model.load_weights(‘weights.h5’)
model._make_train_function()
with open(‘optimizer.pkl’, ‘rb’) as f:
weight_values = pickle.load(f)
model.optimizer.set_weights(weight_values)
继续进行模型训练。
model.fit(X, y, epochs=5)
Epoch 1/5
100/100 [==============================] - 0s 674us/step - loss: 0.7629
Epoch 2/5
100/100 [==============================] - 0s 49us/step - loss: 0.7617
Epoch 3/5
100/100 [==============================] - 0s 49us/step - loss: 0.7611
Epoch 4/5
100/100 [==============================] - 0s 55us/step - loss: 0.7601
Epoch 5/5
100/100 [==============================] - 0s 49us/step - loss: 0.7594
译者 bruce1408 作者: Matthew Inkawhich 本文提供有关Pytorch模型保存和加载的各种用例的解决方案。您可以随意阅读整个文档,或者只是跳转到所需用例的代码部分。 当保存和加载模型时,有三个核心功能需要熟悉: torch.save: 将序列化对象保存到磁盘。 此函数使用 Python 的pickle模块进行序列化。使用此函数可以保存如模型、tensor、字典等各种对象。
This tutorial describes how to save and load models in TensorFlow.js. Saving and loading of models is an important capability. For example, how do you save the weights of a model fine-tuned by data on
优化级别1:类映射生成 怎么运行它呢? 有几个选项可以启用此功能: 在 composer.json 的配置中设置 "optimize-autoloader": true 使用 -o / --optimize-autoloader 调用安装或更新 使用 -o / --optimize 调用 dump-autoload 它有什么作用? 类映射生成实质上是将 PSR-4/PSR-0 规则转换为类映射规
我目前正在尝试确定使用GEKKO的氢气(H2)车辆加油过程的最佳流入条件。下面是耦合的常微分方程,用于控制H2和燃油箱壁的温度如何随加油时间变化。 哪里 这里,是储罐中H2的初始质量,是H2进入储罐的质量流量,是H2的比热比,是H2的流入温度,其他变量是中间变量/储罐参数。通过加油过程,被认为是恒定的(但未知),因此储罐中H2随时间的质量定义为: 此外,罐内H2的压力可以用真实的气体状态方程来计算
问题内容: 我正在编写Django应用程序,它将获取特定URL的所有图像并将其保存在数据库中。 但是我没有在Django中使用ImageField。 Settings.py models.py download_img.py 我正在像这样的一个视图内调用download_imgs.py 问题答案: Django Documentation总是一个很好的起点 更新 因此,此脚本有效。 循环播放图片以
性能与体验是前端的核心竞争力,是最直观反应页面是否好用、易用的标准。用户花在页面上的时间不应该是在等待页面加载和响应,而是使用和顺畅浏览的时间,因此如何提升页面性能和体验,让页面更快的可交互、浏览滚动更顺畅,是需要你持续的研究、优化、推进的。在 Rax 不断应用发展以及成熟的过程中,沉淀总结了一系列的性能体验的措施和最佳实践,通过这些,可以帮助你大幅提高页面的各项性能。 图片优化 图片占据着网页的