栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

保存并加载模型优化器状态

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

保存并加载模型优化器状态

您可以从

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)

结合以上各行,这是一个示例:

  1. 首先将模型拟合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

  2. 现在保存权重和优化器状态。

    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)

  3. 在另一个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)

  4. 继续进行模型训练。

    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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638708.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号