在 Keras 中串联训练多个模型以进行超参数优化
Training multiple models in series in Keras for hyperparameter optimization
想法是使用相同的训练数据集训练多个模型,每次更改一些参数以查看哪个参数效果最好。为此,我需要每次都从头开始训练每个模型。
我当前的代码(简体)是:
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)
它按预期运行打印:
[0, 0.89712456798]
[1, 0.76652347349]
[2, 0.83178943210]
...
但我无法理解代码是否执行上述操作,或者相反,训练的模型是否依赖于前一个模型。
每次打电话
model = Sequential()
你的模型被重新初始化,所以上面的代码草图确实做了你想要它做的,即为每个循环迭代从头开始拟合一个新模型。
你的代码没问题。它每次都会创建一个新模型。
但我建议并行训练多个模型。我刚刚发现 RayLib,它非常适合这项任务。
https://ray.readthedocs.io/en/latest/auto_examples/plot_hyperparameter.html
您的代码包含 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)
您可以将超参数作为训练函数的输入并快速测试不同的架构。
RayLib 需要 Ubuntu。
想法是使用相同的训练数据集训练多个模型,每次更改一些参数以查看哪个参数效果最好。为此,我需要每次都从头开始训练每个模型。
我当前的代码(简体)是:
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)
它按预期运行打印:
[0, 0.89712456798]
[1, 0.76652347349]
[2, 0.83178943210]
...
但我无法理解代码是否执行上述操作,或者相反,训练的模型是否依赖于前一个模型。
每次打电话
model = Sequential()
你的模型被重新初始化,所以上面的代码草图确实做了你想要它做的,即为每个循环迭代从头开始拟合一个新模型。
你的代码没问题。它每次都会创建一个新模型。
但我建议并行训练多个模型。我刚刚发现 RayLib,它非常适合这项任务。
https://ray.readthedocs.io/en/latest/auto_examples/plot_hyperparameter.html
您的代码包含 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)
您可以将超参数作为训练函数的输入并快速测试不同的架构。 RayLib 需要 Ubuntu。