【问题标题】:Training with pre-trained weights使用预训练的权重进行训练
【发布时间】:2020-01-12 10:57:53
【问题描述】:

我想使用一组预训练的权重来训练我的模型进行 MNIST 分类。更具体地说,我在一个数据集上训练我的模型。我想使用最终权重作为起始权重,在不同的数据集上训练模型。为此,我使用

intial_weights = model1.get_weights()
model2 = create_model()
model2.set_weights(initial_weights)
model2.fit(x=x_train59,y=y_train59, epochs=20,callbacks = [cp_callback2])

我的问题是 model.fit() 是否会忽略使用 model2.set_weights() 设置的初始权重。如果它确实忽略了,有没有办法确保 model2.fit() 使用之前获得的权重。此外,有没有办法在 model.fit() 开始训练之前可视化起始权重。非常感谢!

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    当您执行model2.set_weights 时,您更改了model2 的权重。就这样。

    您可以通过相同的方式查看权重:w2 = model2.get_weights()。然后以方便的方式打印w2。

    【讨论】:

    • 感谢您的快速回复。我知道我改变了model2的权重。但是当我在那之后执行 model2.fit() 时,fit() 函数是否将权重重新初始化为随机权重,或者它从之前设置的权重开始。如果我遗漏了什么,我深表歉意。
    • 不,不会重新初始化模型的权重。它们仅在您创建模型时初始化一次。
    • 好的,谢谢!因此,从您的回答中,我了解到 model2 = create_model(); model2.set_weights(my_weights);模型2.fit();将从 my_weights 开始在 model2 上运行训练。再次感谢您的帮助。
    • 是的。 create_model() 将随机永久权重分配给模型。 set_weights() 将永久权重更改为您想要的值。 fit() 从当前权重开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2020-11-09
    • 2017-08-19
    • 2018-08-03
    • 2018-07-28
    • 2020-12-07
    • 2023-01-03
    相关资源
    最近更新 更多