目录
模型介绍请参看:博文
keras搭建深度学习模型的若干方法:博文
出处:Google AI
迁移学习
首先还是看看标准答案
import tensorflow as tf
from tensorflow import keras
base_model = keras.applications.InceptionResNetV2(weights='imagenet')
base_model.summary()
这个summary()是相当的长了。
自编代码
定义卷积单元
def conv2d_cell(x, nbfilter, filtersz, strides=1, pad='same', act=True, name=None):
x = Conv2D(nbfilter, filtersz, strides, padding=pad, use_bias=False, data_format='channels_last', name=name+'conv2d')(x) #use_bias
x = BatchNormalization(axis=3, scale=False, name=name+'conv2dbn')(x) #axis
if act:
x = Activation('relu', name=name+'conv2dact')(x)
return x
Stem模块
def stem_block(x, name=None):
x = conv2d_cell(x, 32, 3, 2, 'valid', True, name=name+'conv1')
x = conv2d_cell(x, 32, 3, 1, 'valid', True, name=name+'conv2')
x = conv2d_cell(x, 64, 3, 1, 'same', True, name=name+'conv3')
x_11 = MaxPooling2D(3, strides=2, padding='valid', name=name+'_branch11_maxpool')(x)
x_12 = conv2d_cell(x, 64, 3, 2, 'valid', True, name=name+'_branch12')
x = Concatenate(axis =3, name=name+'concat_1')([x_11, x_12])
x_21 = conv2d_cell(x, 64, 1, 1, 'same', True, name=name+'_branch211')
x_21 = conv2d_cell(x_21, 64, [1,7], 1, 'same', True, name=name+'_branch212')
x_21 = conv2d_cell(x_21, 64, [7,1], 1, 'same', True, name=name+'_branch213')
x_21 = conv2d_cell(x_21, 96, 3, 1, 'valid', True, name=name+'_branch214')
x_22 = conv2d_cell(x, 64,