VGG的网络结构如图,16和19的网络结构的差异是每个layer的卷积核的数目、卷积的次数不同。
代码如下,这里使用了mnist数据集训练,注意每次maxpooling后,图像的分辨率是减半的,所以4次pooling之后,分辨率就是1了,第五次maxpooling就会出错。所以maxpooling之后,可以zeropadding一下;或者直接取消第五次pooling。
# from keras.models import
from keras.layers import *
from keras.models import Input, load_model, Sequential
from keras import Model
from keras.datasets import mnist
from keras.utils import to_categorical
from keras.losses import categorical_crossentropy
import keras.optimizers
import numpy as np
def vgg(input_shape, num_cls, filters_num, conv_nums):
# print(input_shape)
inputs = Input(shape=input_shape)
x = inputs
for i in range(len(conv_nums)):
for j in range(conv_nums[i]):
x = Conv2D(filters=filters_num[i], kernel_size&#