【发布时间】: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? -
training和label在您的循环中没有更改,因此每个模型都适合 same 数据集。 -
@TomRon 我每个模型都有不同的数据集,我希望每个模型都在自己的数据集上进行训练并保持他们学习的权重。目前,在所有训练结束时,所有模型都具有与最后一个模型相同的权重,而不是每个模型都有自己的权重。
-
看起来函数式 API 不会在您每次调用 tf.keras.models.Model() 时创建层。我认为您必须在循环中创建模型,而不仅仅是在相同的输入和输出上调用 tf.keras.models.Model()
标签: python tensorflow keras