深度學習4 卷積神經網kaggle貓狗分類(3)

2021-09-25 12:49:15 字數 2230 閱讀 5214

上接分類2.

from keras import optimizers

model.compile(loss='binary_crossentropy',

optimizer=optimizers.rmsprop(lr=1e-4),

metrics=['acc'])

要用sigmoid做二分類的問題,還是老生常談的rmsprop優化器,二元交叉熵作為損失函式。

同樣,我們的下一步就是來做資料的處理。

from keras.preprocessing.image import imagedatagenerator

train_datagen = imagedatagenerator(rescale=1./255)

test_datagen = imagedatagenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(

train_dir,

target_size=(150, 150),

batch_size=20,

class_mode='binary')

validation_generator = test_datagen.flow_from_directory(

validation_dir,

target_size=(150, 150),

batch_size=20,

class_mode='binary')

這一段**的主要作用就是把處理為適合學習的張量模式,keras自帶的模組有乙個generator類可以幫助我們方便的完成這個步驟。首先,匯入這個模組之後將所有影象乘以1/255,是為了將畫素值固定在0到1的區間,然後很清楚的看到了將訓練集和驗證集調整為150*150的尺寸,批量為20,標籤從上面看就應該使用binary。

generator的含義是生成器,這個生成的物件可以用for in語句來一起使用。

接下來要做的工作就是利用生成器的加工後資料完成模型的擬合了。

history = model.fit_generator(

train_generator,

steps_per_epoch=100,

epochs=30,

validation_data=validation_generator,

validation_steps=50)

其中 steps_per_epoch=100意思就是訓練過程中2000個資料,批量大小為20,就需要100次,下面的50也是同理。

最後一步就是直觀的把圖畫出來。

可以看到訓練的結果不盡如人意,精度也就70左右,還面領著過擬合的問題。餘下的後面再分析。

深度學習(二 卷積神經網路)

主要層結構 卷積層 池化層 全連線層。神經元個數 乙個卷積層的輸出是20 20 32,則神經元的個數為 20 20 32 12800 濾波器視窗大小 3 3,輸入的資料體深度10,則每個神經元有 3 3 10 900引數 總的引數 12800 900 11520000個引數 引數共享 32個濾波器,...

deeplearning系列(六)卷積神經網路

在上一節中實現了乙個簡單的深度神經網路模型,模型的輸入層和第乙個隱藏層包含神經元的數量分別是 28 28和200。神經元的數量相對較少,因此,採用了全連線的設計。然而,在實際視覺應用中,輸入通常是更大尺度的rgb影象,比如96 96 3,若在第乙個隱藏層中學習特徵的數量也是200的話,需要學習引數的...

深度學習筆記整理(三) 卷積神經網路

由負責對比度提取的g層,負責圖形特徵提取的s細胞層和抗變形的c細胞層交替排列組成。基於人類視覺皮層感受野的結構得到的模型,由輸入層 卷積層 池化層 全連線層 輸出層組成,接下來分別具體介紹不同層。卷積的本質 如果全部都是全連線層,引數太多,無法調整,無法實現,因此改用卷積核,共享引數,減少參數量。卷...