日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Auto-Keras与AutoML:入门指南

發(fā)布時(shí)間:2024/8/23 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Auto-Keras与AutoML:入门指南 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在本教程中,你將學(xué)習(xí)如何使用Auto-Keras(Google的AutoML的開源替代品)來實(shí)現(xiàn)自動(dòng)化機(jī)器學(xué)習(xí)和深度學(xué)習(xí)。

目前來說,深度學(xué)習(xí)從業(yè)者在數(shù)據(jù)集上訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),主要正在嘗試優(yōu)化和平衡兩個(gè)目標(biāo):

1.適合數(shù)據(jù)集性質(zhì)的經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu);

2.實(shí)驗(yàn)調(diào)整一組超參數(shù),這將導(dǎo)致模型具有高精度并能夠推廣到訓(xùn)練和測試集之外的數(shù)據(jù)。需要調(diào)整的典型超參數(shù)包括優(yōu)化算法(SGD,Adam等),學(xué)習(xí)速率和學(xué)習(xí)速率調(diào)度以及正則化等。

根據(jù)數(shù)據(jù)集和具體問題,深度學(xué)習(xí)專家可以進(jìn)行數(shù)十到數(shù)百次實(shí)驗(yàn),以找到神經(jīng)網(wǎng)絡(luò)架構(gòu)和超參數(shù)之間的平衡,這些實(shí)驗(yàn)通常需要計(jì)算數(shù)百到數(shù)千小時(shí)。

剛剛提到的這種模式僅適用于專家,那非深度學(xué)習(xí)專家呢?

這就需要Auto-Keras和AutoML:

Auto-Keras和AutoML的最終目標(biāo)是通過使用自動(dòng)神經(jīng)架構(gòu)搜索(NAS)算法降低進(jìn)入機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的門檻。Auto-Keras和AutoML使非深度學(xué)習(xí)專家能夠以最小的深度學(xué)習(xí)領(lǐng)域知識(shí)或?qū)嶋H數(shù)據(jù)來訓(xùn)練他們自己的模型。具有最小機(jī)器學(xué)習(xí)專業(yè)知識(shí)的程序員可以使用AutoML和Auto-Keras并應(yīng)用這些算法,只需很少的努力即可實(shí)現(xiàn)最先進(jìn)的性能。

聽起來好得令人難以置信?

也許你需要好好閱讀這篇文章的其余部分以找出原因。

Auto-KerasAutoML:入指南

在本博文的第一部分中,我們將討論自動(dòng)機(jī)器學(xué)習(xí)(AutoML)和神經(jīng)架構(gòu)搜索(NAS),這種算法使得AutoML在應(yīng)用于神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)時(shí)成為可能。我們還將簡要討論Google的AutoML,這是一套工具和庫,允許具有有限機(jī)器學(xué)習(xí)專業(yè)知識(shí)的程序員在自己的數(shù)據(jù)上訓(xùn)練高精度模型。

當(dāng)然,谷歌的AutoML是一種專有算法,AutoML的另一種選擇是開源Auto-Keras、它是圍繞Keras和PyTorch而構(gòu)建。

然后,我將向你展示如何使用Auto-Keras自動(dòng)訓(xùn)練網(wǎng)絡(luò)以及評估它。

什么是自動(dòng)機(jī)器學(xué)習(xí)AutoML)?

Auto-Keras是Google AutoML的替代品。它可以幫助你自動(dòng)訓(xùn)練模型,幾乎不需要干預(yù)。對于新手深度學(xué)習(xí)從業(yè)者來說,它們是很好的選擇。

在無監(jiān)督學(xué)習(xí)之外,非專家的自動(dòng)機(jī)器學(xué)習(xí)被認(rèn)為是機(jī)器學(xué)習(xí)的“圣杯”。

想象一下通過以下方式自動(dòng)創(chuàng)建機(jī)器學(xué)習(xí)模型的能力:

1.安裝庫/使用Web界面;

2.將庫/接口指向你的數(shù)據(jù);

3.自動(dòng)訓(xùn)練數(shù)據(jù)模型而無需調(diào)整參數(shù)/需要深入了解為其提供動(dòng)力的算法;

一些公司正試圖創(chuàng)建這樣的解決方案,其中一個(gè)就是谷歌的AutoML。Google AutoML使非常有限的機(jī)器學(xué)習(xí)經(jīng)驗(yàn)的開發(fā)人員和工程師能夠自動(dòng)在他們自己的數(shù)據(jù)集上訓(xùn)練神經(jīng)網(wǎng)絡(luò)。

谷歌的底層AutoML算法是迭代的:

1.在訓(xùn)練集上訓(xùn)練網(wǎng)絡(luò);

2.在測試集上評估網(wǎng)絡(luò);

3.修改神經(jīng)網(wǎng)絡(luò)架構(gòu);

4.調(diào)整超參數(shù);

5.重復(fù)上述過程;

使用AutoML的程序員或工程師不需要定義他們自己的神經(jīng)網(wǎng)絡(luò)架構(gòu)或調(diào)整超參數(shù),AutoML會(huì)自動(dòng)為他們做這件事。

經(jīng)架構(gòu)搜索(NAS)使AutoML可能

Google的AutoML和Auto-Keras都采用了一種稱為神經(jīng)架構(gòu)搜索(NAS)的算法。根據(jù)你的輸入數(shù)據(jù)集,神經(jīng)架構(gòu)搜索算法將自動(dòng)搜索最佳架構(gòu)和相應(yīng)參數(shù)。神經(jīng)架構(gòu)搜索基本上是用一組自動(dòng)調(diào)整模型的算法取代深度學(xué)習(xí)工程師/從業(yè)者!

在計(jì)算機(jī)視覺和圖像識(shí)別的背景下,神經(jīng)架構(gòu)搜索算法將:

1.接受輸入訓(xùn)練數(shù)據(jù)集;

2.優(yōu)化并找到稱為“單元”的架構(gòu)構(gòu)建塊,然后讓這些單元自動(dòng)學(xué)習(xí),這可能看起來類似于初始化,殘留或激活微架構(gòu);

3.不斷訓(xùn)練和搜索“NAS搜索空間”以獲得更優(yōu)化的單元;

如果AutoML系統(tǒng)的用戶是經(jīng)驗(yàn)豐富的深度學(xué)習(xí)從業(yè)者,那么他們可能會(huì)決定:

1.在訓(xùn)練數(shù)據(jù)集的一個(gè)非常小的子集上運(yùn)行NAS;

2.找到一組最佳的架構(gòu)構(gòu)建塊/單元;

3.獲取這些單元并手動(dòng)定義在體系結(jié)構(gòu)搜索期間找到的更深層次的網(wǎng)絡(luò)版本;

4.使用自己的專業(yè)知識(shí)和最佳實(shí)踐,在完整的培訓(xùn)集上訓(xùn)練網(wǎng)絡(luò);

這種方法是全自動(dòng)機(jī)器學(xué)習(xí)解決方案與需要專家深度學(xué)習(xí)實(shí)踐者的解決方案之間的混合體,通常這種方法比NAS自己訓(xùn)練的模型性能更好。

Auto-Keras:谷歌AutoML的開源替代品

在Auto-Keras包是由在德克薩斯州A&M大學(xué)數(shù)據(jù)實(shí)驗(yàn)室團(tuán)隊(duì)開發(fā)。Auto-Keras是Google AutoML的開源替代品。

Auto-Keras依然是利用神經(jīng)架構(gòu)搜索,但應(yīng)用“網(wǎng)絡(luò)態(tài)射”(在更改架構(gòu)時(shí)保持網(wǎng)絡(luò)功能)以及貝葉斯優(yōu)化,以指導(dǎo)網(wǎng)絡(luò)態(tài)射以實(shí)現(xiàn)更高效的神經(jīng)網(wǎng)絡(luò)搜索。你可以在Jin等人的2018年出版物Auto-Keras:Efficient Neural Architecture Search with Network Morphism中找到Auto-Keras框架的全部細(xì)節(jié)。

安裝Auto-Keras:

正如Auto-Keras GitHub存儲(chǔ)庫所述,Auto-Keras處于“預(yù)發(fā)布”狀態(tài)-它現(xiàn)在還不是正式版本。其次,Auto-Keras需要Python 3.6并且與Python 3.6兼容。如果你使用的是3.6以外的任何其他版本的Python,你將無法使用Auto-Keras軟件包。

如果你想要檢查Python版本,只需使用以下命令:

python --version

如果你有Python 3.6,你可以使用pip安裝Auto-Keras:

pip install tensorflow # or tensorflow-gpu

pip install keras pip install autokeras

使用Auto-Keras實(shí)現(xiàn)我們的訓(xùn)練腳本:

讓我們繼續(xù)使用Auto-Keras實(shí)現(xiàn)我們的訓(xùn)練腳本,打開train_auto_keras.py文件并插入以下代碼:

# import the necessary packages from sklearn.metrics import classification_report from keras.datasets import cifar10 import autokeras as ak import osdef main():# initialize the output directoryOUTPUT_PATH = "output"

首先,我們在第2-5行導(dǎo)入必要的包:

·如前所述,我們將使用scikit-learn的classification_report來計(jì)算我們將在輸出文件中保存的統(tǒng)計(jì)信息。

·我們將使用CIFAR-10數(shù)據(jù)集,因?yàn)樗呀?jīng)被內(nèi)置到keras.datasets。

·然后是導(dǎo)入import依賴項(xiàng)-autokeras,我已經(jīng)將它用AK的簡寫代替。

·該os模塊是必需的,因?yàn)槲覀儠?huì)在建立輸出文件的路徑時(shí),在各種操作系統(tǒng)上容納路徑分隔符。

我們在第7行定義腳本的主要功能,由于Auto-Keras和TensorFlow處理線程的方式,我們需要將代碼包裝在main函數(shù)中。有關(guān)更多詳細(xì)信息,請參閱此GitHub問題線程。

現(xiàn)在讓我們初始化Auto-Keras的訓(xùn)練時(shí)間列表:

# initialize the list of training times that we'll allow# Auto-Keras to train forTRAINING_TIMES = [60 * 60, # 1 hour60 * 60 * 2, # 2 hours60 * 60 * 4, # 4 hours60 * 60 * 8, # 8 hours60 * 60 * 12, # 12 hours60 * 60 * 24, # 24 hours]

上述代碼是限定了一組訓(xùn)練-TIMES,包括[1,2,4,8,12,24]小時(shí)。我們將使用Auto-Keras來探索更長的訓(xùn)練時(shí)間對精確度的影響。

讓我們加載CIFAR-10數(shù)據(jù)集并初始化類名:

# load the training and testing data, then scale it into the# range [0, 1]print("[INFO] loading CIFAR-10 data...")((trainX, trainY), (testX, testY)) = cifar10.load_data()trainX = trainX.astype("float") / 255.0testX = testX.astype("float") / 255.0# initialize the label names for the CIFAR-10 datasetlabelNames = ["airplane", "automobile", "bird", "cat", "deer","dog", "frog", "horse", "ship", "truck"]

我們的CIFAR-10數(shù)據(jù)被加載并存儲(chǔ)在第25行的訓(xùn)練/測試分組中。隨后,我們將這個(gè)數(shù)據(jù)縮放到[0,1]的范圍。接著我們會(huì)初始化我們的類labelNames,這10個(gè)類包含在CIFAR-10中。請注意,標(biāo)簽在這里很重要。

現(xiàn)在讓我們開始循環(huán)遍歷我們的TRAINING_TIMES,每次都使用Auto-Keras:

# loop over the number of seconds to allow the current Auto-Keras# model to train forfor seconds in TRAINING_TIMES:# train our Auto-Keras modelprint("[INFO] training model for {} seconds max...".format(seconds))model = ak.ImageClassifier(verbose=True)model.fit(trainX, trainY, time_limit=seconds)model.final_fit(trainX, trainY, testX, testY, retrain=True)# evaluate the Auto-Keras modelscore = model.evaluate(testX, testY)predictions = model.predict(testX)report = classification_report(testY, predictions,target_names=labelNames)# write the report to diskp = os.path.sep.join(OUTPUT_PATH, "{}.txt".format(seconds))f = open(p, "w")f.write(report)f.write("\nscore: {}".format(score))f.close()

上面的代碼塊是今天腳本的核心。在第35行我們在每個(gè)TRAINING_TIMES上定義了一個(gè)循環(huán),我們在其中做以下操作:

·初始化我們的模型(AK.ImageClassifier),并讓訓(xùn)練開始。請注意,我們并沒有實(shí)例化一個(gè)特定對象的CNN類,我們也沒有調(diào)整超參數(shù)。因?yàn)锳uto-Keras會(huì)為我們處理所有這些。

·一旦達(dá)到時(shí)間限制,請采用Auto-Keras找到的最佳模型和參數(shù)+重新訓(xùn)練模型。

·評估和構(gòu)建分類報(bào)告。

·將分類報(bào)告與準(zhǔn)確度分?jǐn)?shù)一起寫入磁盤,以便我們評估更長訓(xùn)練時(shí)間的影響。

我們將為每個(gè)TRAINING_TIMES重復(fù)此過程。

最后,我們將檢查并啟動(dòng)執(zhí)行的主線程:

# if this is the main thread of execution then start the process (our # code must be wrapped like this to avoid threading issues with # TensorFlow) if __name__ == "__main__":main()

這里我們檢查確保這是執(zhí)行的主線程,然后是主函數(shù)。僅僅60行代碼,我們就完成了使用CIFAR-10示例腳本編寫Auto-Keras,但是我們還沒有完成......

使用Auto-Keras訓(xùn)練神經(jīng)網(wǎng)絡(luò)

讓我們繼續(xù)使用Auto-Keras訓(xùn)練我們的神經(jīng)網(wǎng)絡(luò)。

請確保使用本教程的“下載”部分下載源代碼。

從那里打開終端,導(dǎo)航到下載源代碼的位置,然后執(zhí)行以下命令:

$ python train_auto_keras.py [INFO] training model for 3600 seconds max... Preprocessing the images. Preprocessing finished.Initializing search. Initialization finished.+----------------------------------------------+ | Training model 0 | +----------------------------------------------+ Using TensorFlow backend.No loss decrease after 5 epochs.Saving model. +--------------------------------------------------------------------------+ | Model ID | Loss | Metric Value | +--------------------------------------------------------------------------+ | 0 | 4.816269397735596 | 0.5852 | +--------------------------------------------------------------------------++----------------------------------------------+ | Training model 1 | +----------------------------------------------+ Using TensorFlow backend. Epoch-14, Current Metric - 0.83: 28%|██████▊ | 110/387 [01:02<02:46, 1.67 batch/s]Time is out. [INFO] training model for 86400 seconds max... Preprocessing the images. Preprocessing finished.Initializing search. Initialization finished.+----------------------------------------------+ | Training model 0 | +----------------------------------------------+ Using TensorFlow backend.No loss decrease after 5 epochs. ... +----------------------------------------------+ | Training model 21 | +----------------------------------------------+ Using TensorFlow backend.No loss decrease after 5 epochs.+--------------------------------------------------------------------------+ | Father Model ID | Added Operation | +--------------------------------------------------------------------------+ | | to_deeper_model 16 ReLU | | 16 | to_wider_model 16 64 | +--------------------------------------------------------------------------+Saving model. +--------------------------------------------------------------------------+ | Model ID | Loss | Metric Value | +--------------------------------------------------------------------------+ | 21 | 0.8843476831912994 | 0.9316000000000001 | +--------------------------------------------------------------------------+ +----------------------------------------------+ | Training model 22 | +----------------------------------------------+ Using TensorFlow backend. Epoch-3, Current Metric - 0.9: 80%|████████████████████▊ | 310/387 [03:50<00:58, 1.31 batch/s]Time is out.No loss decrease after 30 epochs.

在這里你可以看到我們的腳本正在指示Auto-Keras執(zhí)行六組實(shí)驗(yàn)。

在NVIDIA K80 GPU上,總訓(xùn)練時(shí)間為3天多一點(diǎn)

Auto-Keras的結(jié)果:

在上圖中,你可以看到訓(xùn)練時(shí)間(x軸)對使用Auto-Keras的總體準(zhǔn)確度(y軸)的影響。較短的訓(xùn)練時(shí)間,即1小時(shí)和2小時(shí),大約可以達(dá)到73%的準(zhǔn)確性。一旦我們訓(xùn)練4小時(shí),我們就能達(dá)到高達(dá)93%的準(zhǔn)確率。訓(xùn)練8-12小時(shí),我們就能獲得95%的精確度了。超過8-12小時(shí)的訓(xùn)練不會(huì)提高我們的準(zhǔn)確度,這意味著我們已達(dá)到飽和點(diǎn)并且Auto-Keras無法進(jìn)一步優(yōu)化。

Auto-Keras和AutoML值得嗎?

在無監(jiān)督學(xué)習(xí)之外(從未標(biāo)記數(shù)據(jù)自動(dòng)學(xué)習(xí)模式),非專家的自動(dòng)機(jī)器學(xué)習(xí)被認(rèn)為是機(jī)器學(xué)習(xí)的“圣杯”。Google的AutoML和開源Auto-Keras軟件包都試圖將機(jī)器學(xué)習(xí)帶給大眾,即使是沒有關(guān)鍵性技術(shù)的經(jīng)驗(yàn)的程序員。

雖然Auto-Keras在CIFAR-10上工作得相當(dāng)好,但是使用我之前關(guān)于深度學(xué)習(xí),醫(yī)學(xué)圖像和瘧疾檢測的文章進(jìn)行了第二組實(shí)驗(yàn)使用簡化的ResNet架構(gòu)獲得了97.1%的準(zhǔn)確率,該架構(gòu)花費(fèi)了不到一小時(shí)的時(shí)間進(jìn)行訓(xùn)練。然后我讓Auto-Keras在相同的數(shù)據(jù)集上運(yùn)行24小時(shí)-結(jié)果只有96%的準(zhǔn)確度,低于我自己定義的架構(gòu)。

但不管怎樣,谷歌的AutoML和Auto-Keras都是向前邁出的一大步。

?

原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Auto-Keras与AutoML:入门指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。