上接分類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細胞層交替排列組成。基於人類視覺皮層感受野的結構得到的模型,由輸入層 卷積層 池化層 全連線層 輸出層組成,接下來分別具體介紹不同層。卷積的本質 如果全部都是全連線層,引數太多,無法調整,無法實現,因此改用卷積核,共享引數,減少參數量。卷...