私はモデルのハイパーパラメータを最適化するために以前はScikit-learnのGridSearchCVを使用しましたが、Tensorflowのハイパーパラメータを最適化するための同様のツールが存在するかどうかは疑問でした(例えば、エポック数、ウィンドウのサイズなど)Tensorflowモデルのハイパーパラメータチューニング
もしそうでなければ、効果的にすべての組み合わせを実行するスニペットを実装するにはどうすればよいですか?
私はモデルのハイパーパラメータを最適化するために以前はScikit-learnのGridSearchCVを使用しましたが、Tensorflowのハイパーパラメータを最適化するための同様のツールが存在するかどうかは疑問でした(例えば、エポック数、ウィンドウのサイズなど)Tensorflowモデルのハイパーパラメータチューニング
もしそうでなければ、効果的にすべての組み合わせを実行するスニペットを実装するにはどうすればよいですか?
明示的に文書化されていないようですが(バージョン1.2)、tf.contrib.learn
(TensorFlowに含まれています)は、scikit-learnと互換性のある分類子を定義しています...しかし、the source実際にこの互換性を取得するには、環境変数TENSORFLOW_SKLEARN
(例:"1"
)を明示的に設定する必要があるようです。これが有効な場合は、GridSearchCV
(see this test case)を既に使用できます。
しかし、いくつかの選択肢があります。私はTensorFlow特有のことについてはわかりませんが、hyperopt、Scikit-OptimizeまたはSMAC3はすべて有効なオプションでなければなりません。 MOEとSpearmintは良い選択であるように見えますが、現在はあまり維持されていないようです。
また、SigOpt(MOEの元の著者による会社)のようなサービスを調べることもできます。
編集
、コアロジックのパラメータのすべての可能な組み合わせを実行する方法について、あなたはそれを自分で実装する場合、実際には複雑ではありません。各パラメータに可能な値を持つリストを定義してから、itertools.product
ですべての組み合わせを実行するだけです。ような何か:
from itertools import product
param1_values = [...]
param2_values = [...]
param3_values = [...]
for param1, param2, param3 in product(param1_values, param2_values param3_values):
run_experiment(param1, param2, param3)
注しかしその格子検索は、多くの場合、実行することが法外に高価になることができ、さらにはパラメータ空間でちょうどランダム探索を行うことは、おそらく(そのin this publication詳細)、より効率的になります。