Keras官方出调参工具了,然而Francois说先别急着用
机器之心报道
参与:路
近日,Keras 官方发布了一个调参工具 Keras Tuner,提供一种 Keras 内的简单便捷调参方式,以及可视化和分析服务。然而目前发布的版本还不成熟,Keras 作者 Fran?ois Chollet 表示:大家先别用,API 还不稳定。
Keras Tuner GitHub 地址:https://github.com/keras-team/keras-tuner
早在上个月举办的谷歌 I/O 大会上,谷歌即展示了 Keras Tuner 的功能。Keras 作者 Fran?ois Chollet 也发推介绍了该工具。

What is Keras Tuner?
据介绍,Keras Tuner 是专为 AI 从业者、hypertuner 算法创建者和模型设计人员开发的一款简单高效调参框架。它提供干净简单的 API,用户只需改变几行代码即可完成模型调参工作。
除了简单直观的 API 之外,Keras Tuner 还提供 SOTA hypertuner 算法、可调整的架构,以及无缝实验记录功能。

此外,它还可用于?TensorBoard、Colab、BigQuery、Command line 等。

谷歌 Elie Bursztein 在 I/O 大会上还展示了 Keras Tuner 使用示例:Keras Tuner 通过改变少量代码即可将分类器 ResNet101v2 进行调参,生成的模型相比原模型准确率提高了 20%,参数量减少了 45%!


此外,Keras Tuner 还提供 Online dashboard,用户可以实时在线观察模型训练状况。
Keras Tuner 使用示例
目前,Keras Tuner GitHub 项目中也给出了两个示例。
1. 使用 Keras Tuner 目前的 API 在 MNIST 数据集上进行模型调参:
from tensorflow import kerasfrom tensorflow.keras import layersimport numpy as npfrom kerastuner.tuners import GridSearchfrom kerastuner.distributions import Range, Choice(x, y), (val_x, val_y) = keras.datasets.mnist.load_data()x = x.astype('float32') / 255.val_x = val_x.astype('float32') / 255."""Basic case:- We define a `build_model` function- It returns a compiled model- It uses hyperparameters defined on the fly"""def build_model():model = keras.Sequential()model.add(layers.Flatten(input_shape=(28, 28)))for i in range(Range('num_layers', 2, 20)):model.add(layers.Dense(units=Range('units_' + str(i), 32, 512, 32),activation='relu'))model.add(layers.Dense(10, activation='softmax'))model.compile(optimizer=keras.optimizers.Adam(Choice('learning_rate', [1e-2, 1e-3, 1e-4])),loss='sparse_categorical_crossentropy',metrics=['accuracy'])return modeltuner = GridSearch(build_model,objective='val_accuracy',num_executions=2)tuner.search(x=x,y=y,validation_data=(val_x, val_y))
2. 使用 Keras Tuner 未来 API 在 MNIST 数据集上进行模型调参:
from tensorflow import kerasfrom tensorflow.keras import layersimport numpy as npfrom kerastuner.tuner import SequentialRandomSearch(x, y), (val_x, val_y) = keras.datasets.mnist.load_data()x = x.astype('float32') / 255.val_x = val_x.astype('float32') / 255."""Basic case:- We define a `build_model` function-It returns a compiled model-It uses hyperparameters defined on the fly"""def build_model(hp):model = keras.Sequential()model.add(layers.Flatten(input_shape=(28, 28)))for i in range(hp.Range('num_layers', 2, 20)):model.add(layers.Dense(units=hp.Range('units_' + str(i), 32, 512, 32),activation='relu'))model.add(layers.Dense(10, activation='softmax'))model.compile(optimizer=keras.optimizers.Adam(hp.Choice('learning_rate', [1e-2, 1e-3, 1e-4])),loss='sparse_categorical_crossentropy',metrics=['accuracy'])return modeltuner = SequentialRandomSearch(build_model,objective='val_accuracy')tuner.search(trials=2,x=x,y=y,epochs=5,?validation_data=(val_x,?val_y))
Keras 作者 Fran?ois Chollet 有话说
这两天,有 reddit 网友发帖介绍了这个强大的工具,引发热议。然而第一热评(来自 Keras 作者 Fran?ois Chollet!)「及时」泼了盆冷水:
目前 Keras Tuner 是 pre-alpha 版,大家先不要使用。它目前仅具备随机搜索和 HyperBand 功能。
接下来,API 将有大量改变。Beta 版的发布至少还要等好几个月,发行后,该工具将允许使用大量不同技术进行分布式调参,同时 Keras Tuner 将集成 Google Cloud tuning API。
同时他表示,欢迎社区积极贡献,Keras 团队将在 Keras Tuner API 更加稳定后,在 GitHub repo 中发布路线图。
参考内容:
https://www.reddit.com/r/MachineLearning/comments/bzs5r9/n_keras_tuner_official_hyperparameter_tuning/
https://elie.net/static/files/cutting-edge-tensorflow-keras-tuner-hypertuning-for-humans/cutting-edge-tensorflow-keras-tuner-hypertuning-for-humans-slides.pdf
本文为机器之心报道,转载请联系本公众号获得授权。
?------------------------------------------------
加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com
投稿或寻求报道:content@jiqizhixin.com
广告 & 商务合作:bd@jiqizhixin.com
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 绘就共同富裕新画卷 7904896
- 2 最能生娃省份排名来了 7808776
- 3 男子入伍火箭军后拒服兵役 官方通报 7714681
- 4 这一年 一个个暖心瞬间令人难忘 7619154
- 5 猴子攀绳索过河来 以为表演却是打劫 7522302
- 6 “冰是真的冰 壶也是真的壶” 7425459
- 7 30岁健美冠军去世前几天刚体检完 7328481
- 8 王毅同委内瑞拉外长希尔通电话 7237299
- 9 中国发现新矿物金秀矿 7136473
- 10 海南封关护港 海警全天候执法演练 7039536







机器之心
