【问题标题】:Why does training one model in my script train all others?为什么在我的脚本中训练一个模型会训练所有其他模型?
【发布时间】:2020-11-14 02:17:11
【问题描述】:

我正在运行一个脚本,我在其中一次训练几个不同的模型。它们都具有相同的架构,但在不同的数据集上进行了训练。模型存储在列表中。我迭代地调用模型并像这样训练每个模型:

for i in range(len(model_list)):
    model=model_list[i]
    model.fit(training,label)

(请注意,训练和标签数据集并未显示为针对每个模型进行更新,但它们确实如此) 每次我训练一个模型时,列表中的每个其他模型的权重都会更新为当前模型的权重,这不是我想要的。我希望每个模型都保持从他们自己的拟合会话中收集的权重。

我该如何解决这个问题?

【问题讨论】:

  • 循环遍历所有模型并训练所有模型。你预计会发生什么?
  • 你是如何创建这个模型列表的?喜欢[create_model()] * number_of_models
  • traininglabel 在您的循环中没有更改,因此每个模型都适合 same 数据集。
  • @TomRon 我每个模型都有不同的数据集,我希望每个模型都在自己的数据集上进行训练并保持他们学习的权重。目前,在所有训练结束时,所有模型都具有与最后一个模型相同的权重,而不是每个模型都有自己的权重。
  • 看起来函数式 API 不会在您每次调用 tf.keras.models.Model() 时创建层。我认为您必须在循环中创建模型,而不仅仅是在相同的输入和输出上调用 tf.keras.models.Model()

标签: python tensorflow keras


【解决方案1】:

看起来函数式 API 不会在您每次调用 tf.keras.models.Model() 时创建层。我认为您必须在循环中创建模型,而不仅仅是在相同的输入和输出上调用 tf.keras.models.Model()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 2017-10-29
    • 2017-03-27
    • 1970-01-01
    • 2018-10-23
    • 2021-10-03
    • 2019-11-25
    • 1970-01-01
    相关资源
    最近更新 更多