我正在寻找一个可以用于直接编写Tensorflow代码(而不是Keras或Tflearn)的超参数调整包。你能给出一些建议吗?
我正在寻找一个可以用于直接编写Tensorflow代码(而不是Keras或Tflearn)的超参数调整包。你能给出一些建议吗?
在这些库里面,我只真正应用过 hyperopt 和 TensorFlow 进行解决实际问题,而且没有花费太多的精力。API 在某些方面有点奇怪,文档也不够详细,但它确实可用,并且看起来正在积极开发中,可能会推出更多的优化算法和适配(例如,专门针对神经网络)。然而,正如之前链接的博客文章所建议的那样,Scikit-Optimize 也很好用,如果适合您的话,SigOpt 看起来也很容易使用。
import ray
import ray.tune as tune
from ray.tune.hyperband import HyperBandScheduler
def train_model(config, reporter): # add the reporter parameter
model = build_tf_model(config["alpha"], config["beta"])
loss = some_loss_function(model)
optimizer = tf.AdamOptimizer(loss)
for i in range(20):
optimizer.step()
stats = get_statistics()
reporter(timesteps_total=i,
mean_accuracy=stats["accuracy"])
ray.init(num_cpus=4)
tune.run(train_model,
name="my_experiment",
stop={"mean_accuracy": 100},
config={
"alpha": tune.grid_search([0.2, 0.4, 0.6]),
"beta": tune.grid_search([1, 2])
},
scheduler=HyperBandScheduler(reward_attr="mean_accuracy"))
tune.run_experiments(...)
之后,如何获取已训练的model
对象? - Karlanalysis = tune.run(...)
进行调参分析,然后使用 analysis.get_best_config
获取最佳配置。 - richliaw我不确定这是否也是您想要的参数,但您提到了TensorFlow超参数,所以我可以建议一些。
尝试克隆此存储库以获取所需的脚本;
git clone https://github.com/googlecodelabs/tensorflow-for-poets-2
在主文件夹中,调用命令提示符并运行此行;
python -m scripts.retrain -h
以获取可选参数列表。
来源:https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#6
我发现sci-kit optimize非常简单易用,可用于超参数的贝叶斯优化,并且它可以与任何tensorflow API(估算器、自定义估算器、核心、keras等)一起使用。
你可以使用变分推断(贝叶斯)作为优化空间的点云,超参数调整会更好。Tensorflow probability 是一种方法。