微信扫一扫
分享到朋友圈

Keras官方出调参工具了,然而Francois说先别急着用

作者:机器之心 来源:机器之心 公众号
分享到:

06-14

机器之心报道

参与:路

近日,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 layers
import numpy as np
from 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 model

tuner = 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 model

tuner = 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 网友发帖介绍了这个强大的工具,引发热议。然而第一热评(来自 作者 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

阅读39548
举报0
关注机器之心微信号:almosthuman2014

用微信扫描二维码即可关注
声明

1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“机器之心”微信公众号,文章版权归机器之心公众号所有。

评论
更多

文章来自于公众号:

机器之心

微信号:almosthuman2014

邮箱qunxueyuan#163.com(将#换成@)
微信编辑器
免责声明
www.weixinyidu.com   免责声明
版权声明:本站收录微信公众号和微信文章内容全部来自于网络,仅供个人学习、研究或者欣赏使用。版权归原作者所有。禁止一切商业用途。其中内容并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现头条易读网站上有侵犯您的知识产权的内容,请与我们联系,我们会及时修改或删除。
本站声明:本站与腾讯微信、微信公众平台无任何关联,非腾讯微信官方网站。