Python Keras中多模型串联训练的超参数优化

Python Keras中多模型串联训练的超参数优化,python,keras,neural-network,tf.keras,Python,Keras,Neural Network,Tf.keras,其思想是使用相同的训练数据集训练多个模型,每次更改一些参数以查看哪个参数效果最佳。为了做到这一点,我需要每一个模型都从零开始训练 我当前的代码(简化)是: 它按预期运行打印: [0, 0.89712456798] [1, 0.76652347349] [2, 0.83178943210] ... 但是我不能理解代码是否符合上述要求,或者相反,是否训练依赖于前一个的模型。每次调用 model = Sequential() 您的模型已重新初始化,因此上面的代码草图确实执行了您希望它执行的操作,即

其思想是使用相同的训练数据集训练多个模型,每次更改一些参数以查看哪个参数效果最佳。为了做到这一点,我需要每一个模型都从零开始训练

我当前的代码(简化)是:

它按预期运行打印:

[0, 0.89712456798]
[1, 0.76652347349]
[2, 0.83178943210]
...
但是我不能理解代码是否符合上述要求,或者相反,是否训练依赖于前一个的模型。

每次调用

model = Sequential()

您的模型已重新初始化,因此上面的代码草图确实执行了您希望它执行的操作,即为每个循环迭代从头开始装配新模型。

您的代码很好。它每次创建一个新模型

但我建议在prallel中训练多个模型。我刚刚发现了RayLib,它非常适合这个任务

您的代码包含4个并行培训课程,每个课程有5次迭代:

import ray

@ray.remote
def train(sequence):
    scores= []
    for i in range(sequence)
        model = Sequential()
        model.add(...)
        model.compile(...)
        model.fit(...)
        scores.append([i, model.score(...)])
    return scores

n=4
results = []
for i in range(n):
    results.append(train.remote(5))

results_data = ray.get(results)

for i in results_data:
    print(i)
您可以将hyperparameter作为训练功能的输入,并快速测试不同的体系结构。
RayLib需要Ubuntu-tho。

太好了!感谢沙漠之神给了我们超级迅速的回答。反复使用大量参数(训练大量模型)运行此代码是否会影响训练速度?我发现有什么东西(内存问题等)限制了理论上的迭代次数?@leo我什么都不知道-我自己也使用过类似的循环(虽然不是用于超参数调优,而是用于性能的统计评估)。根据我的经验,更改隐藏层中的节点数或批量大小,影响训练速度。当然,这取决于您的CPU和GPU。@Pyseker您似乎误解了OP的问题;当然批量大小和型号大小通常会影响培训时间,但这里的问题不是这个,而是“反复培训大量型号”
import ray

@ray.remote
def train(sequence):
    scores= []
    for i in range(sequence)
        model = Sequential()
        model.add(...)
        model.compile(...)
        model.fit(...)
        scores.append([i, model.score(...)])
    return scores

n=4
results = []
for i in range(n):
    results.append(train.remote(5))

results_data = ray.get(results)

for i in results_data:
    print(i)