【发布时间】:2021-12-27 13:57:34
【问题描述】:
我只是想了解更多关于中间步骤实际上是什么以及如何使用修剪的信息,如果您使用的是教程部分中没有的其他 ml 库,例如 XGB、Pytorch 等。
例如:
X, y = load_iris(return_X_y=True)
X_train, X_valid, y_train, y_valid = train_test_split(X, y)
classes = np.unique(y)
n_train_iter = 100
def objective(trial):
global num_pruned
alpha = trial.suggest_float("alpha", 0.0, 1.0)
clf = SGDClassifier(alpha=alpha)
for step in range(n_train_iter):
clf.partial_fit(X_train, y_train, classes=classes)
intermediate_value = clf.score(X_valid, y_valid)
trial.report(intermediate_value, step)
if trial.should_prune():
raise optuna.TrialPruned()
return clf.score(X_valid, y_valid)
study = optuna.create_study(
direction="maximize",
pruner=optuna.pruners.HyperbandPruner(
min_resource=1, max_resource=n_train_iter, reduction_factor=3
),
)
study.optimize(objective, n_trials=30)
for step in range() 部分的意义何在?这样做不仅会使优化花费更多时间,而且不会为循环中的每一步产生相同的结果吗?
我真的很想弄清楚for step in range() 的需求,是否每次您希望使用修剪时都需要它?
【问题讨论】:
标签: python machine-learning deep-learning hyperparameters optuna