Python Pytorch模型的超参数优化

Python Pytorch模型的超参数优化,python,machine-learning,deep-learning,pytorch,hyperparameters,Python,Machine Learning,Deep Learning,Pytorch,Hyperparameters,对Pytorch模型执行超参数优化的最佳方法是什么?自己实施随机搜索?使用技巧学习?或者还有什么我不知道的吗?您可以使用(完全公开,我为这个软件包做出了贡献)或。这两种方法都试图自动化超参数调优阶段。Hyperband被认为是这一领域的最新技术。除随机搜索外,Hyperband是我听说过的唯一一种无参数方法。如果愿意,您还可以研究使用强化学习来学习最佳超参数。进行黑盒优化的最简单的无参数方法是随机搜索,它将比网格搜索更快地探索高维空间。有关于这一点的论文,但tl;使用随机搜索时,每次在每个维度上

对Pytorch模型执行超参数优化的最佳方法是什么?自己实施随机搜索?使用技巧学习?或者还有什么我不知道的吗?

您可以使用(完全公开,我为这个软件包做出了贡献)或。这两种方法都试图自动化超参数调优阶段。Hyperband被认为是这一领域的最新技术。除随机搜索外,Hyperband是我听说过的唯一一种无参数方法。如果愿意,您还可以研究使用强化学习来学习最佳超参数。

进行黑盒优化的最简单的无参数方法是随机搜索,它将比网格搜索更快地探索高维空间。有关于这一点的论文,但tl;使用随机搜索时,每次在每个维度上都会得到不同的值,而使用网格搜索时则不会

有很好的理论保证(尽管有近似值),像Spearmint这样的实现可以封装任何脚本;有超参数,但用户在实践中看不到它们。Hyperband通过显示出比朴素贝叶斯优化更快的收敛速度而受到了广泛关注。它可以通过为不同的迭代次数运行不同的网络来实现这一点,而贝叶斯优化并不天真地支持这一点。虽然贝叶斯优化算法可以更好地考虑到这一点,例如,在实践中,hyperband非常简单,您可能会更好地使用它并观察它以间隔调整搜索空间。

许多研究人员使用它。这是一个可扩展的超参数调优框架,专门用于深度学习。您可以轻松地将其用于任何深度学习框架(下面有两行代码),并且它提供了最先进的算法,包括HyperBand、基于群体的训练、贝叶斯优化和BOHB

import torch.optim as optim
from ray import tune
from ray.tune.examples.mnist_pytorch import get_data_loaders, ConvNet, train, test


def train_mnist(config):
    train_loader, test_loader = get_data_loaders()
    model = ConvNet()
    optimizer = optim.SGD(model.parameters(), lr=config["lr"])
    for i in range(10):
        train(model, optimizer, train_loader)
        acc = test(model, test_loader)
        tune.report(mean_accuracy=acc)


analysis = tune.run(
    train_mnist, config={"lr": tune.grid_search([0.001, 0.01, 0.1])})

print("Best config: ", analysis.get_best_config(metric="mean_accuracy"))

# Get a dataframe for analyzing trial results.
df = analysis.dataframe()

[免责声明:我积极参与此项目!]

我发现如下:

更多年轻项目

  • 仅限于FC层
  • 只有网格搜索可用
更新 新事物:

此外,我在以下位置找到了一个有用的表格:


您似乎链接到了HyperOpt的错误回购。是正确的URL。还有,它也有一个很好的比较表。我尝试了这个例子,但我在这里发布了一个错误:请帮我一下好吗?