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)