?對于訓練深度學習,設計神經網絡結構是其中技術含高最高的任務,優(yōu)秀的網絡架構往往依賴建構模型的經驗炫狱,專業(yè)領域知識藻懒,以及大量的算力試錯。實際應用中往往基于類似功能的神經網絡微調生成新的網絡結構视译。
?Auto-Keras是一個離線使用的開源庫嬉荆,用于構建神經網絡結構和搜索超參數(shù),支持RNN酷含,CNN神經網絡鄙早,它使用了高效神經網絡搜索ENAS,利用遷移學習的原理將在前面任務中學到的權值應用于后期的模型中椅亚,效率相對較高限番。除了支持keras,它還提供TensorFlow他PyTorch的版本呀舔。
1. 安裝
?由于需要把輸出的神經網絡結構保存成圖片弥虐,使用了pydot和graphviz圖像工具支持,auto-keras支持torch等多種工具支持媚赖,因此霜瘪,安裝時會下載大量依賴軟件。使用以下方法安裝auto-keras:
$ apt install graphviz
$ pip3 install pydot
$ pip3 install autokeras
?使用以下方法下載源碼:
$ git clone https://github.com/jhfjhfj1/autokeras
2. 舉例
?本例中使用了mnist數(shù)據集惧磺,它是一個入門級的圖像識別數(shù)據集粥庄,用于訓練手寫數(shù)字識別模型,例程自動下載訓練數(shù)據豺妓,然后創(chuàng)建了圖片分類器,訓練時間設置為10分鐘布讹,模型在測試集上的正確率為99.21%琳拭。建議使用帶GPU的機器訓練模型,它比使用CPU訓練速度快幾十倍描验。
from keras.datasets import mnist
from autokeras import ImageClassifier
from autokeras.constant import Constant
import autokeras
from keras.utils import plot_model
if __name__ == '__main__':
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape + (1,))
x_test = x_test.reshape(x_test.shape + (1,))
clf = ImageClassifier(verbose=True, augment=False)
clf.fit(x_train, y_train, time_limit=10 * 60)
clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
y = clf.evaluate(x_test, y_test)
print(y * 100)
clf.export_keras_model('model.h5')
plot_model(clf, to_file='model.png')
# 返回值: 99.21
# 謝彥的技術博客
?上述程序在我的機器上運行后訓練出了17層網絡白嘁,其中包括dropout層,池化層膘流,卷積層絮缅,全連接層等,程序以圖片方式將描述信息保存在model.png中呼股,下面截取了圖片中的部分層作為示例耕魄,如下圖所示: