# -*- coding: utf-8 -*-
"""
Created on Mon Aug 2 10:16:40 2021
@author: Yang Hongyun
卷积神将网络的计算公式为:
卷积中的特征图大小计算方式有两种,分别是‘VALID’和‘SAME’,卷积和池化都适用,除不尽的结果都向上取整。
1、如果计算方式采用:padding='valid'---默认方式
N=(W-F)/S+1, 其中W为输入,F为卷积核尺寸,S为stride大小
如Input=(224,224),kernel_size=3,stride=2,
则N=(224-3)/2+1=111
2、如果计算方式采用'SAME',卷积后的特征图大小跟卷积核大小无关,只跟卷积所用的步长有关,当卷积步长是1时,卷积前后特征图大小保持不变
N=W/S。 默认步长stride=1
"""
import tensorflow
from keras.datasets import mnist #数据集
from keras.layers import Dense,Dropout,Flatten,Conv2D,MaxPool2D,Input #神经网络层导入
from keras.models import Sequential,Model #模型类型:Sequential序列模型和Model函数模型
inputs=Input(shape=(224,224,3))
x=Conv2D(filters=32,kernel_size=3,strides=2,padding='same',activation='relu')(inputs)
x=MaxPool2D(pool_size=(2,2))(x)
x=Dropout(0.25)(x)
x=Conv2D(filters=64,kernel_size=(3,3),activation='relu')(x)
x=MaxPool2D(pool_size=(2,2))(x)
x=Dropout(0.25)(x)
x=Flatten()(x)
x=Dense(128,activation='relu')(x)
x=Dropout(0.45)(x)
outputs=Dense(10,activation='softmax')(x)
model=Model(input=inputs,output=outputs)
print(model.summary())
输出结果如下:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_5 (InputLayer) (None, 224, 224, 3) 0
_________________________________________________________________
conv2d_5 (Conv2D) (None, 112, 112, 32) 896
_________________________________________________________________
max_pooling2d_5 (MaxPooling2 (None, 56, 56, 32) 0
_________________________________________________________________
dropout_9 (Dropout) (None, 56, 56, 32) 0
_________________________________________________________________
conv2d_6 (Conv2D) (None, 54, 54, 64) 18496
_________________________________________________________________
max_pooling2d_6 (MaxPooling2 (None, 27, 27, 64) 0
_________________________________________________________________
dropout_10 (Dropout) (None, 27, 27, 64) 0
_________________________________________________________________
flatten_5 (Flatten) (None, 46656) 0
_________________________________________________________________
dense_9 (Dense) (None, 128) 5972096
_________________________________________________________________
dropout_11 (Dropout) (None, 128) 0
_________________________________________________________________
dense_10 (Dense) (None, 10) 1290
=================================================================
Total params: 5,992,778
Trainable params: 5,992,778
Non-trainable params: 0
_________________________________________________________________