簡單一個CNN模型:
# -*- coding: utf-8 -*-
from model import *
from data import *#導入這兩個文件中的所有函數
from keras.callbacks import TensorBoard,ModelCheckpoint
from keras.utils.vis_utils import plot_model #保存模型圖
from keras.utils import plot_model
import cv2
import os
from keras.models import load_model
#os.environ["CUDA_VISIBLE_DEVICES"] = "0"
import keras
inputs=keras.Input(shape=(229,229,3),name='input111')
x=keras.layers.Conv2D(32,kernel_size=(3,3),strides=(2,2),padding='valid',name='Conv2D1')(inputs)
x=keras.layers.BatchNormalization(name='BN1')(x)
x=keras.layers.MaxPool2D(pool_size=(2,2),strides=(2,2),padding='valid',name='MaxPool1')(x)
x=keras.layers.Conv2D(64,kernel_size=(3,3),strides=(2,2),padding='valid',name='Conv2D2')(x)
x=keras.layers.BatchNormalization(name='BN2')(x)
x=keras.layers.MaxPool2D(pool_size=(2,2),strides=(2,2),padding='valid',name='MaxPool2')(x)
x=keras.layers.Conv2D(128,kernel_size=(3,3),strides=(2,2),padding='valid',name='Conv2D3')(x)
x=keras.layers.BatchNormalization(name='BN3')(x)
outputs=keras.layers.MaxPool2D(pool_size=(2,2),strides=(2,2),padding='valid',name='MaxPool3333')(x)
# model=keras.Model(inputs=inputs,outputs=outputs)
# model.summary()
activation = keras.layers.Activation('sigmoid', name='Classification')(x)
model = keras.Model(inputs=inputs, outputs=activation)
print(model.output_shape)
model.summary()
打印信息:
重點關注參數計算:
Total params: 94,144
Trainable params: 93,696
Non-trainable params: 448 主要是BN層均值方差兩個參數,一個卷積覈對應一次BN。
順便講一下BN,若一張5*5的圖片經過卷積核3*3的卷積之後得到一張3*3的特徵圖。特徵圖就會包含了9個特徵值,這9個特徵值就是我們上面所提到的樣本。假設我們的batch-size設爲m,那麼就會有m*9個特徵值傳到BN層裏面作爲樣本來訓練參數γ和β。
輸出:
1.這裏的K,在卷積網絡中可以看作是卷積核個數,如網絡中第n層有64個卷積核,就需要計算64次。
需要注意,在正向傳播時,會使用γ與β使得BN層輸出與輸入一樣。
2.在反向傳播時利用γ與β求得梯度從而改變訓練權值(變量)。
3.通過不斷迭代直到訓練結束,求得關於不同層的γ與β。
4.不斷遍歷訓練集中的圖片,取出每個batch_size中的γ與β,最後統計每層BN的γ與β各自的和除以圖片數量得到平均直,並對其
做無偏估計直作爲每一層的E[x]與Var[x]。
5.在預測的正向傳播時,對測試數據求取γ與β,並使用該層的E[x]與Var[x],通過圖中11:所表示的公式計算BN層輸出。
注意,在預測時,BN層的輸出已經被改變,所以BN層在預測的作用體現在此處。
參考:
https://blog.csdn.net/SPESEG/article/details/104465703#comments_12209996
https://blog.csdn.net/weixin_37985288/article/details/93318486