Keras初探(一)

嘗試寫一下Keras的一些東西刊驴,算是必要的時候能備忘一下吧疮薇!希望大家多提提意見胸墙,畢竟我文筆太差,不太會寫東西按咒,留言私信都好迟隅。
以下大部分內(nèi)容來自Keras的教程,有興趣的同學(xué)可以看看原文励七,鏈接如下:
https://elitedatascience.com/keras-tutorial-deep-learning-in-python

一智袭、安裝Keras

Keras并不能直接用于構(gòu)建模型,它需要后端支持掠抬。
Keras 可以基于兩個Backend吼野,一個是 Theano,一個是 Tensorflow两波。如果我們選擇Theano作為Keras的Backend瞳步, 那么Keras就用 Theano 在底層搭建你需要的神經(jīng)網(wǎng)絡(luò);同樣腰奋,如果選擇 Tensorflow 单起,Keras 就使用 Tensorflow 在底層搭建神經(jīng)網(wǎng)絡(luò)。
所以我們需要先安裝tensorflow氛堕,其實安裝tensorflow還是蠻簡單的馏臭,這里不多說了野蝇。
安裝Keras其實就是一句話嘛讼稚!

sudo pip3 install keras

要修改后端就修改~/.keras/keras.json文件中的backend。

{
    "image_dim_ordering": "tf",
    "epsilon": 1e-07,
    "floatx": "float32",
    "backend": "theano"
}

那么開始嘍绕沈!

二锐想、預(yù)置知識

我們需要學(xué)習(xí)一些機器學(xué)習(xí)和python的基礎(chǔ)知識,下面給兩個鏈接乍狐,有興趣的同學(xué)可以先去看看赠摇。
Understanding of essential machine learning concepts
Python programming skills
其實根據(jù)我的經(jīng)驗,一遍動手做,一遍查文檔學(xué)得會比較快藕帜。

三烫罩、超簡單的Keras例子

這個例子共分為5個步驟:

1、加載數(shù)據(jù)
2洽故、定義模型
3贝攒、編譯模型
4、訓(xùn)練模型
5时甚、評估模型

我們一步步來隘弊。

3.1 實驗數(shù)據(jù)

我們的研究對象是UCI上面的一個數(shù)據(jù)集。
Pima Indians onset of diabetes dataset

  • Dataset File
  • Dataset Details
    我們把數(shù)據(jù)下載下來之后保存為
    pima-indians-diabetes.csv
    我們先加載一下要用到的包荒适。
from keras.models import Sequential
from keras.layers import Dense
import numpy as np 
np.random.seed(2018)

接著我們加載實驗數(shù)據(jù)梨熙,數(shù)據(jù)分為9列,其中第九列是0或1刀诬,表示患病與否咽扇。
我們使用numpy的loadtxt加載數(shù)據(jù),具體參見之前的教程舅列。這里注意一下切片操作肌割,X = dataset[:,0:8],是不含第9列的帐要,即取到[8]之前(0-7列)把敞。而Y = dataset[:,8]取得就是第九列。

#load prima indians dataset
dataset = np.loadtxt("pima-indians-diabetes.csv", delimiter=",")
#split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]

3.2定義模型

我們來定義一個非常簡單的模型榨惠。這個模型是一些layers一個接一個連接在一起奋早。先來確定一下輸入inputs。我們把input_dim設(shè)置為8赠橙,一共八個參數(shù)嘛耽装。后面的工作很簡單,因為在Sequential model中dense會默認設(shè)置除第一層外的各層的inputs期揪,畢竟是全連接嘛掉奄!

# create model
model = Sequential()
model.add(Dense(12,input_dim = 8,activation = 'relu'))
model.add(Dense(10,activation = 'relu'))
model.add(Dense(8,activation = 'relu'))
model.add(Dense(1,activation = 'sigmoid'))

我們定義了四層layer,除最后一層外我們都采用relu激活函數(shù)凤薛,這樣收斂較快(sigmod函數(shù)兩端都很平姓建,梯度太小了)。

3.3編譯模型

Keras編譯模型非常簡單缤苫,只需要一句話速兔。

#Compile model
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])

這里我們設(shè)置優(yōu)化器為adam。

3.4訓(xùn)練模型

訓(xùn)練模型使用fit函數(shù)活玲。

#Fit the model
model.fit(X,Y,epochs=150,batch_size=10)

我們把輪數(shù)設(shè)為150涣狗,batch_size為每次處理record數(shù)量谍婉,內(nèi)存大可以多設(shè)置些。

3.5評估模型

簡便起見镀钓,這里我們?nèi)匀皇褂肵穗熬,Y作為評估數(shù)據(jù),實際操作事可以利用sklearn的數(shù)據(jù)集劃分丁溅。

#evaluate the model
scores = model.evaluate(X,Y)
print("\n%s:%.2f%%" % (model.metrics_names[1],scores[1]*100))

四死陆、完整代碼

連注釋在內(nèi)一共20多行代碼,可謂非常簡單了唧瘾。希望這個簡單的例子可以幫助大家入門措译。

from keras.models import Sequential
from keras.layers import Dense
import numpy as np 
np.random.seed(2018)

#load prima indians dataset
dataset = np.loadtxt("pima-indians-diabetes.csv", delimiter=",")
#split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]

# create model
model = Sequential()
model.add(Dense(12,input_dim = 8,activation = 'relu'))
model.add(Dense(10,activation = 'relu'))
model.add(Dense(8,activation = 'relu'))
model.add(Dense(1,activation = 'sigmoid'))

#Compile model
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])

#Fit the model
model.fit(X,Y,epochs=150,batch_size=10)
#evaluate the model
scores = model.evaluate(X,Y)
print("\n%s:%.2f%%" % (model.metrics_names[1],scores[1]*100))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市饰序,隨后出現(xiàn)的幾起案子领虹,更是在濱河造成了極大的恐慌,老刑警劉巖求豫,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塌衰,死亡現(xiàn)場離奇詭異,居然都是意外死亡蝠嘉,警方通過查閱死者的電腦和手機最疆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚤告,“玉大人努酸,你說我怎么就攤上這事《徘。” “怎么了获诈?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長心褐。 經(jīng)常有香客問我舔涎,道長,這世上最難降的妖魔是什么逗爹? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任亡嫌,我火速辦了婚禮,結(jié)果婚禮上掘而,老公的妹妹穿的比我還像新娘挟冠。我一直安慰自己,他們只是感情好镣屹,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布圃郊。 她就那樣靜靜地躺著价涝,像睡著了一般女蜈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天伪窖,我揣著相機與錄音逸寓,去河邊找鬼。 笑死覆山,一個胖子當著我的面吹牛竹伸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播簇宽,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼勋篓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了魏割?” 一聲冷哼從身側(cè)響起譬嚣,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钞它,沒想到半個月后拜银,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡遭垛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年尼桶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锯仪。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡泵督,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庶喜,到底是詐尸還是另有隱情幌蚊,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布溃卡,位于F島的核電站溢豆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瘸羡。R本人自食惡果不足惜漩仙,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望犹赖。 院中可真熱鬧队他,春花似錦、人聲如沸峻村。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粘昨。三九已至垢啼,卻和暖如春窜锯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背芭析。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工锚扎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人馁启。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓驾孔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惯疙。 傳聞我的和親對象是個殘疾皇子翠勉,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容