keras的基本用法(四)——Fine Tuning神經(jīng)網(wǎng)絡

文章作者:Tyan
博客:noahsnail.com | CSDN | 簡書

本文主要介紹Keras的一些基本用法,主要涉及已有網(wǎng)絡的fine tuning谴餐,以ResNet50為例。

  • Demo
#!/usr/bin/env python
# _*_ coding: utf-8 _*_

from keras.models import Model
from keras.layers import Dense
from keras.applications.resnet50 import ResNet50
from keras.preprocessing.image import ImageDataGenerator


# 訓練的batch_size
batch_size = 16
# 訓練的epoch
epochs = 100

# 圖像Generator汁展,用來構建輸入數(shù)據(jù)
train_datagen = ImageDataGenerator(
        width_shift_range=0.1,
        height_shift_range=0.1,
        zoom_range=0.2,
        horizontal_flip=True)

# 從文件中讀取數(shù)據(jù)厌殉,目錄結構應為train下面是各個類別的子目錄,每個子目錄中為對應類別的圖像
train_generator = train_datagen.flow_from_directory('./train', target_size = (224, 224), batch_size = batch_size)

# 訓練圖像的數(shù)量
image_numbers = train_generator.samples

# 輸出類別信息
print train_generator.class_indices

# 生成測試數(shù)據(jù)
test_datagen = ImageDataGenerator()
validation_generator = test_datagen.flow_from_directory('./validation', target_size = (224, 224), batch_size = batch_size)

# 使用ResNet的結構公罕,不包括最后一層,且加載ImageNet的預訓練參數(shù)
base_model = ResNet50(weights = 'imagenet', include_top = False, pooling = 'avg')

# 構建網(wǎng)絡的最后一層铲汪,3是自己的數(shù)據(jù)的類別
predictions = Dense(3, activation='softmax')(base_model.output)

# 定義整個模型
model = Model(inputs=base_model.input, outputs=predictions)

# 編譯模型,loss為交叉熵損失
model.compile(optimizer='rmsprop', loss='categorical_crossentropy')

# 訓練模型
model.fit_generator(train_generator,steps_per_epoch = image_numbers // batch_size, epochs = epochs, validation_data = validation_generator, validation_steps = batch_size)

# 保存訓練得到的模型
model.save_weights('weights.h5')
  • 部分結果
{'Type_3': 2, 'Type_2': 1, 'Type_1': 0}
Found 761 images belonging to 3 classes.
Epoch 1/40
 1/16 [>.............................] - ETA: 119s - loss: 1.33922017-06-07 10:18:48.246289: I tensorflow/core/common_runtime/gpu/pool_allocator.cc:247] PoolAllocator: After 2521 get requests, put_count=2161 evicted_count=1000 eviction_rate=0.462749 and unsatisfied allocation rate=0.579135
2017-06-07 10:18:48.246348: I tensorflow/core/common_runtime/gpu/pool_allocator.cc:259] Raising pool_size_limit_ from 100 to 110
16/16 [==============================] - 120s - loss: 2.3753 - val_loss: 10.8293
Epoch 2/40
 1/16 [>.............................] - ETA: 5s - loss: 1.00542017-06-07 10:20:40.464589: I tensorflow/core/common_runtime/gpu/pool_allocator.cc:247] PoolAllocator: After 2270 get requests, put_count=2642 evicted_count=1000 eviction_rate=0.378501 and unsatisfied allocation rate=0.286784
2017-06-07 10:20:40.464643: I tensorflow/core/common_runtime/gpu/pool_allocator.cc:259] Raising pool_size_limit_ from 256 to 281
16/16 [==============================] - 83s - loss: 1.7988 - val_loss: 11.5219
Epoch 3/40
16/16 [==============================] - 81s - loss: 1.6640 - val_loss: 11.0043
Epoch 4/40
 3/16 [====>.........................] - ETA: 4s - loss: 1.87452017-06-07 10:23:26.725923: I tensorflow/core/common_runtime/gpu/pool_allocator.cc:247] PoolAllocator: After 11057 get requests, put_count=11071 evicted_count=1000 eviction_rate=0.0903261 and unsatisfied allocation rate=0.0945103
2017-06-07 10:23:26.725986: I tensorflow/core/common_runtime/gpu/pool_allocator.cc:259] Raising pool_size_limit_ from 655 to 720
16/16 [==============================] - 83s - loss: 1.7237 - val_loss: 11.7738
Epoch 5/40
16/16 [==============================] - 83s - loss: 1.6304 - val_loss: 10.6538
Epoch 6/40
16/16 [==============================] - 80s - loss: 1.2182 - val_loss: 4.5027
Epoch 7/40
16/16 [==============================] - 83s - loss: 1.3179 - val_loss: 11.5891
Epoch 8/40
16/16 [==============================] - 82s - loss: 1.1806 - val_loss: 10.5800
Epoch 9/40
16/16 [==============================] - 81s - loss: 1.1935 - val_loss: 11.1477
Epoch 10/40
16/16 [==============================] - 80s - loss: 1.1727 - val_loss: 7.0913
Epoch 11/40
16/16 [==============================] - 83s - loss: 1.2058 - val_loss: 6.4474
Epoch 12/40
16/16 [==============================] - 82s - loss: 1.2702 - val_loss: 7.7678
Epoch 13/40
16/16 [==============================] - 84s - loss: 1.2060 - val_loss: 7.9961
Epoch 14/40
16/16 [==============================] - 83s - loss: 1.0768 - val_loss: 11.2121
Epoch 15/40
16/16 [==============================] - 80s - loss: 1.1401 - val_loss: 13.2052
Epoch 16/40
16/16 [==============================] - 83s - loss: 1.1961 - val_loss: 13.0330
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末齿梁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子士飒,更是在濱河造成了極大的恐慌,老刑警劉巖扰藕,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芳撒,死亡現(xiàn)場離奇詭異,居然都是意外死亡笔刹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門萌壳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來日月,“玉大人,你說我怎么就攤上這事爱咬。” “怎么了燎斩?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵蜂绎,是天一觀的道長。 經(jīng)常有香客問我师枣,道長,這世上最難降的妖魔是什么劳殖? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任拨脉,我火速辦了婚禮,結果婚禮上玫膀,老公的妹妹穿的比我還像新娘。我一直安慰自己箕昭,他們只是感情好解阅,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著货抄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪积暖。 梳的紋絲不亂的頭發(fā)上怪与,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音分别,去河邊找鬼。 笑死错览,一個胖子當著我的面吹牛煌往,可吹牛的內(nèi)容都是我干的倾哺。 我是一名探鬼主播刽脖,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼曲管,長吁一口氣:“原來是場噩夢啊……” “哼却邓!你這毒婦竟也來了院水?” 一聲冷哼從身側響起简十,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤撬腾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胰默,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漓踢,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年奴迅,在試婚紗的時候發(fā)現(xiàn)自己被綠了薯酝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片半沽。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡者填,死狀恐怖做葵,靈堂內(nèi)的尸體忽然破棺而出占哟,到底是詐尸還是另有隱情酿矢,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布蜜暑,位于F島的核電站策肝,受9級特大地震影響肛捍,放射性物質(zhì)發(fā)生泄漏之众。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一缀蹄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缺前,春花似錦、人聲如沸诡延。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惹恃。三九已至棺牧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颊乘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工浙值, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留檩小,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓规求,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瓦戚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

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