Keras官方出調參工具了,然而Francois說先別急著用

2021-01-11 機器之心Pro

近日,Keras 官方發布了一個調參工具 Keras Tuner,提供一種 Keras 內的簡單便捷調參方式,以及可視化和分析服務。然而目前發布的版本還不成熟,Keras 作者 Franois Chollet 表示:大家先別用,API 還不穩定。

Keras Tuner GitHub 地址:https://github.com/keras-team/keras-tuner

早在上個月舉辦的谷歌 I/O 大會上,谷歌即展示了 Keras Tuner 的功能。Keras 作者 Franois 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 作者 Franois Chollet 有話說

這兩天,有 reddit 網友發帖介紹了這個強大的工具,引發熱議。然而第一熱評(來自 Keras作者 Franois 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

相關焦點

  • Keras官方中文版文檔正式發布了
    而昨日,Franois Chollet 再一次在推特上表示 Keras 官方文檔已經基本完成!他非常感謝翻譯和校對人員兩個多月的不懈努力,也希望 Keras 中文使用者能繼續幫助提升文檔質量。這一次發布的是 Keras 官方中文文檔,它得到了嚴謹的校對而提升了整體質量。
  • Keras和TensorFlow究竟哪個會更好?
    他給出的建議是先使用 Keras ,然後下載 TensorFlow 以獲取可能需要的任何特定功能。文本中,Rosebrock 展示了如何訓練使用 Keras 的神經網絡和使用直接構建在 TensorFlow 庫中的 Keras+TensorFlow 集成(具有自定義功能)的模型。
  • 喜大普奔,Keras 官方中文版文檔發布啦!
    在官方中文版上,我們也看到對 Keras 的正式介紹:Keras 是一個用 Python 編寫的高級神經網絡 API,它能夠以 TensorFlow, CNTK, 或者 Theano 作為後端運行。Keras 的開發重點是支持快速的實驗。能夠以最小的時延把你的想法轉換為實驗結果,是做好研究的關鍵。
  • 小白學CNN以及Keras的速成
    一、為何要用Keras如今在深度學習大火的時候,第三方工具也層出不窮,比較出名的有Tensorflow,Caffe,Theano,MXNet,在如此多的第三方框架中頻繁的更換無疑是很低效的,只要你能夠好好掌握其中一個框架,熟悉其原理,那麼之後因為各種要求你想要更換框架也是很容易的。那麼sherlock用的是哪個框架呢?
  • 圖像分類入門,輕鬆拿下90%準確率|教你用Keras搞Fashion-MNIST
    原作 Margaret Maynard-Reid王小新 編譯自 TensorFlow的Medium量子位 出品 | 公眾號 QbitAI這篇教程會介紹如何用TensorFlow裡的tf.keras函數,對Fashion-MNIST數據集進行圖像分類。
  • 看我七十二變,Keras Image Data Augmentation 各...
    我們先來看看ImageDataGenerator的官方說明(https://keras.io/preprocessing/image/):keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,    samplewise_center=False
  • Keras vs PyTorch:誰是第一深度學習框架?
    本文中,來自 deepsense.ai 的研究員給出了他們在高級框架上的答案。在 Keras 與 PyTorch 的對比中,作者還給出了相同神經網絡在不同框架中性能的基準測試結果。目前在 GitHub 上,Keras 有超過 31,000 個 Stars,而晚些出現的 PyTorch 已有近 17,000 個 Stars。
  • 用TensorFlow和Keras構建卷積神經網絡
    人工神經網絡在許多領域都展現出了其強大功能,最近已經應用到很多行業中。然而,不同深度學習結構各有以下優勢:· 圖像分類(卷積神經網絡)。· 圖像、音頻和文本生成(GANS,RNN)。· 時間序列預測(RNNS,LSTM)。
  • Keras結合Keras後端搭建個性化神經網絡模型(不用原生Tensorflow)
    實際上,這些變換不整合在lambda層中而直接寫在外面也是可以的:from keras import backend as Kfrom keras import layersx = layers.Dense(500,activation='relu')(x) mask = K.random_binomial(K.shape(x),0.5)x = x*mask*2數據先經過一個全連接層
  • tf.keras.losses.binary_crossentropy
    tf.keras.losses: 評價機器學習模型預測值和實際值偏離情況的一個類。loss類用來評估預測結果的好壞。
  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    軟體開發者畢竟不是科學家,很多時候簡單易學易用是程式設計師選擇的第一要素。目前,兩個主要的深度學習庫Keras和Pytorch獲得了大量關注,主要是因為它們的使用比較簡單。keras是神經網絡的一個模型計算框架,嚴格來說不是神經網絡框架。本身沒有重量級計算,它使用其他AI框架作為計算後臺,傻瓜式的使用。它的計算後臺還支持 Theano、CNTK(微軟的一個AI計算後臺)等,也就是說keras是多個計算後臺的門面。官方設計哲學為Simple. Flexible.
  • Keras R語言接口正式發布,同時公開20個完整示例
    毫不驚訝地說,Keras和tensorflow正在逐漸超過其他深度學習框架。現在,你不需要糾結該選tensorflow或是Keras了。Keras的默認後端支持通過tensorflow工作流,實現tensorflow和Keras的無縫集成。今年晚些時候,可以通過更深的集成,讓Keras完全實現與tensorflow的無縫銜接。
  • TensorFlow官方力推、GitHub爆款項目:用Attention模型自動生成...
    原標題:TensorFlow官方力推、GitHub爆款項目:用Attention模型自動生成圖像字幕 來源:GitHub 編譯:金磊 【新智元導讀】近期,TensorFlow官方推文推薦了一款十分有趣的項目——用Attention模型生成圖像字幕。
  • 用Keras和「直方圖均衡」為深度學習實現「圖像擴充」
    https://www.eff.org/ai/metrics然而,正如我們在楊建先生的「Hot Dog, Not Hot Dog」App「圖像擴充」其實就是從已有的訓練數據集中取出一些圖像,然後根據這些圖像創建出許多修改版本的圖像。這樣做不僅能夠獲得更多的訓練數據,還能讓我們的分類器應對光照和色彩更加複雜的環境,從而使我們的分類器功能越來越強大。
  • 從小白到入門:用Keras進行圖像基礎分類
    【IT168 資訊】在這篇文章中,將解釋一些在keras中經常需要的常見操作。首先,如何保存模型並使用它們進行預測,從數據集中顯示圖像並從加載系統中圖像並預測其類別。
  • Keras 2發布:實現與TensorFlow的直接整合
    類似的,Skymind 正在用 Scala 實現 Keras 份額部分規範,如 ScalNet。為了在瀏覽器中運行,Keras.js 正在用 JavaScript 運行 Keras 的部分 API。正因如此,Keras API 註定成為深度學習從業者的通用語言,在不同的工作流程中共享並獨立於底層平臺。
  • 評測| CNTK在Keras上表現如何?能實現比TensorFlow更好的深度學習嗎?
    例如幾周前發布的 CNTK v2.0(Microsoft Cognitive Toolkit),它與 TensorFlow 相比,顯示出在準確性和速度方面的強勁性能。參閱機器之心報導《開源 | 微軟發行 Cognitive Toolkit 2.0 完整版:從性能更新到應用案例》。CNTK v2.0 還有一個關鍵特性:兼容 Keras。
  • 初學者怎樣使用Keras進行遷移學習
    首先,載入相關包 import pandas as pdimport numpy as npimport osimport kerasimport matplotlib.pyplot as pltfrom keras.layers import Dense,GlobalAveragePooling2Dfrom keras.applications
  • 基於RTX2060構建TensorFlow-gpu(keras)學習平臺
    conda remove -n your_env_name(虛擬環境名稱) --all 刪除虛擬環境7. conda remove --name your_env_name package_name 刪除環境中的某個包二、創建環境及安裝notebook插件(安裝基本的anconda版本,用的
  • Keras 之父講解 Keras:幾行代碼就能在分布式環境訓練模型 |...
    也因此,在開發出 Keras 之後被谷歌挖走為 TensorFlow 背書。作為號稱是 TensorFlow 最好用、對新手最友好的 API,一起來看看它的神通在哪裡。Francois Chollet:對許多使用場景而言,canned estimator 是相當不錯的選擇。但如果你要做的事並沒有現成的 canned estimator,怎麼辦?