Tensorflowで直接記述されたコード(KerasやTflearnではない)のハイパーパラメーター調整パッケージを探しています。何か提案をいただけますか?
通常、ハイパーパラメータ最適化ロジックを最適化されたモデルと組み合わせる必要はありません(ハイパーパラメータ最適化ロジックがトレーニングしているモデルの種類に固有である場合を除きます。その場合は、もう少し詳しく説明する必要があります)。このタスクに使用できるツールとパッケージがいくつかあります。 Here はこのトピックに関する優れた論文であり、 here は例を含むより実用的なブログ投稿です。
これらのうち、私は本当に(つまり、実際の問題で)TensorFlowでhyperoptを使用しただけで、それほど手間はかかりませんでした。 APIはいくつかの点で少し奇妙であり、ドキュメントはそれほど完全ではありませんが、それは機能し、活発に開発されているようで、より多くの最適化アルゴリズムと適応(特にニューラルネットワーク用)が来る可能性があります。ただし、以前にリンクされたブログ投稿で示唆されているように、Scikit-Optimizeはおそらく同じくらい優れており、SigOptは自分に合っていれば非常に使いやすいように見えます。
@jdehesaのリストにもう1つのライブラリを追加したいと思います。これは、特にテンソルフローを使用した研究で適用しました。 hyper-engine 、Apache2.0ライセンスです。
また、ガウス過程ベイズ最適化や、学習曲線予測など、多くの時間を節約するその他の手法も実装しています。
ハイパーパラメータ検索をスケーリングするためのシンプルなライブラリであるRayTuneを試すことができます。私は主にTensorflowモデルのトレーニングに使用しますが、フレームワークにとらわれず、PyTorch、Kerasなどとシームレスに連携します。ドキュメントページは次のとおりです ray.readthedocs.io/en/latest/tune.html
これを使用して、 HyperBand やベイズ最適化などの最先端のアルゴリズムの分散バージョンを約10行のコードで実行できます。
一度に4つの並列評価を実行する例として:
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"))
このスクリプトをクラスターで実行する場合も、コードを変更する必要はありません。
免責事項:私はこのプロジェクトに取り組んでいます-フィードバックがあれば教えてください!
これが必要なパラメーターでもあるかどうかはわかりませんが、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最適化は、ハイパーアメーターのベイズ最適化に非常に簡単に使用でき、任意のテンソルフローAPI(推定器、カスタム推定器、コア、ケラなど)で機能することがわかりました。
変分推論(ベイズ)を最適化空間上の点群として使用できます。ハイパーパラメータの調整ははるかに優れています。 Tensorflowの確率がアプローチになります。