日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

輕量級(jí)深度學(xué)習(xí)框架Keras簡(jiǎn)介

 imelee 2017-05-23

徐海蛟教學(xué)

Keras是基于Theano的一個(gè)深度學(xué)習(xí)框架,它的設(shè)計(jì)參考了Torch,用Python語(yǔ)言編寫,是一個(gè)高度模塊化的神經(jīng)網(wǎng)絡(luò)庫(kù),支持GPU和CPU。使用文檔在這:http:///,中文文檔在這:http://keras-cn./en/latest/ ,這個(gè)框架是2015年流行起來(lái)的,使用中遇到的困惑或者問(wèn)題可以提交到github:https://github.com/fchollet/keras。

Keras主要包括14個(gè)模塊包,可參見文檔https:///layers/ ,下面主要對(duì)Models、Layers、Initializations、Activations、Objectives、Optimizers、Preprocessing、metrics八個(gè)模塊包展開介紹。

1. Models包:keras.models

這是Keras中最主要的一個(gè)模塊,用于對(duì)各個(gè)組件進(jìn)行組裝。

詳細(xì)說(shuō)明:http:///models/

from keras.models import Sequential

model = Sequential()  # 初始化模型

model.add(...)  # 可使用add方法組裝組件

2. Layers包:keras.layers

該模塊主要用于生成神經(jīng)網(wǎng)絡(luò)層,包含多種類型,如Core layers、Convolutional layers、recurrent layers、advanced_activations layers、normalization layers、embeddings layers等。

其中Core layers里面包含了flatten(CNN的全連接層之前需要把二維特征圖flatten成為一維的)、reshape(CNN輸入時(shí)將一維的向量弄成二維的)、dense(隱藏層)。

Convolutional layers層包含Theano的Convolution2D的封裝等。

詳細(xì)說(shuō)明:http:///layers/

from keras.layers import Dense  # Dense表示BP層

model.add(Dense(input_dim=3,output_dim=5))  # 加入隱含層

3. Initializations包:keras.initializations

該模塊主要負(fù)責(zé)對(duì)模型參數(shù)(權(quán)重)進(jìn)行初始化,初始化方法包括:uniform、lecun_uniform、normal、orthogonal、zero、glorot_normal、he_normal等。

詳細(xì)說(shuō)明:http:///initializations/

model.add(Dense(input_dim=3,output_dim=5,init='uniform')) #加入帶初始化(uniform)的隱含層

4. Activations包:keras.activations、keras.layers.advanced_activations(新激活函數(shù))

該模塊主要負(fù)責(zé)為神經(jīng)層附加激活函數(shù),如linear、sigmoid、hard_sigmoid、tanh、softplus、softmax、relu以及LeakyReLU、PReLU等比較新的激活函數(shù)。

詳細(xì)說(shuō)明:http:///activations/

model.add(Dense(input_dim=3, output_dim=5, activation='sigmoid'))  # 加入帶激活函數(shù)(sigmoid)的隱含層

等價(jià)于:

model.add(Dense(input_dim=3, output_dim=5))

model.add(Activation('sigmoid'))

5. Objectives包:keras.objectives

該模塊主要負(fù)責(zé)為神經(jīng)網(wǎng)絡(luò)附加損失函數(shù),即目標(biāo)函數(shù)。如mean_squared_error,mean_absolute_error ,squared_hinge,hinge,binary_crossentropy,categorical_crossentropy等,其中binary_crossentropy,categorical_crossentropy是指logloss。

注:目標(biāo)函數(shù)的設(shè)定是在模型編譯階段。

詳細(xì)說(shuō)明:http:///objectives/

model.compile(loss='binary_crossentropy', optimizer='sgd') #loss是指目標(biāo)函數(shù)

6. Optimizers包:keras.optimizers

該模塊主要負(fù)責(zé)設(shè)定神經(jīng)網(wǎng)絡(luò)的優(yōu)化方法,如最基本的隨機(jī)梯度下降SGD,另外還有Adagrad、Adadelta、RMSprop、Adam,一些新的方法以后也會(huì)被不斷添加進(jìn)來(lái)。

詳細(xì)說(shuō)明:http:///optimizers/

keras.optimizers.SGD(lr=0.01, momentum=0.9, decay=0.9, nesterov=False)

上面的代碼是SGD的使用方法,lr表示學(xué)習(xí)速率,momentum表示動(dòng)量項(xiàng),decay是學(xué)習(xí)速率的衰減系數(shù)(每個(gè)epoch衰減一次),Nesterov的值是False或者True,表示使不使用Nesterov momentum。

model = Sequential()

model.add(Dense(64, init='uniform', input_dim=10))

model.add(Activation('tanh'))

model.add(Activation('softmax'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)

model.compile(loss='mean_squared_error', optimizer=sgd)  #指優(yōu)化方法sgd

model.compile(loss='binary_crossentropy', optimizer='sgd')

7. Preprocessing包:keras.preprocessing

數(shù)據(jù)預(yù)處理模塊,包括序列數(shù)據(jù)的處理、文本數(shù)據(jù)的處理和圖像數(shù)據(jù)的處理等。對(duì)于圖像數(shù)據(jù)的處理,keras提供了ImageDataGenerator函數(shù),實(shí)現(xiàn)數(shù)據(jù)集擴(kuò)增,對(duì)圖像做一些彈性變換,比如水平翻轉(zhuǎn),垂直翻轉(zhuǎn),旋轉(zhuǎn)等。

8. metrics包:keras.metrics

與sklearn中metrics包基本相同,主要包含一些如binary_accuracy、mae、mse等的評(píng)價(jià)方法。

predict = model.predict_classes(test_x)       #輸出預(yù)測(cè)結(jié)果

keras.metrics.binary_accuracy(test_y, predict)  #計(jì)算預(yù)測(cè)精度


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多