首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Keras中连续训练多个模型以进行超参数优化

在Keras中连续训练多个模型以进行超参数优化
EN

Stack Overflow用户
提问于 2019-10-02 00:03:06
回答 2查看 608关注 0票数 3

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

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

代码语言:javascript
复制
scores= []

for i in range(n):
    model = Sequential()
    model.add(...)
    model.compile(...)
    model.fit(...)
    scores.append([i, model.score(...)])

for score in scores:
    print(score)

它按照预期运行打印:

代码语言:javascript
复制
[0, 0.89712456798]
[1, 0.76652347349]
[2, 0.83178943210]
...

但我不能理解代码是否做了上面描述的事情,或者相反,是否训练了依赖于前一个模型的模型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-02 00:05:11

每次你打电话给

代码语言:javascript
复制
model = Sequential()

您的模型被重新初始化,因此上面的代码草图确实做了您想要它做的事情,即为每个循环迭代从头开始拟合一个新模型。

票数 0
EN

Stack Overflow用户

发布于 2019-10-02 00:14:36

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

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

https://ray.readthedocs.io/en/latest/auto_examples/plot_hyperparameter.html

您的代码具有4个并行训练会话,每个会话有5次迭代:

代码语言:javascript
复制
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)

您可以将超参数作为训练函数的输入,并快速测试不同的体系结构。RayLib需要Ubuntu tho。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58188609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档