#GoogLeNet模型,参数为mnist数据集
#注意:非比赛数据集,此处仅为实现GoogLeNet模型
import tensorflow as tf
from tensorflow.keras.layers import Input,Dropout,Flatten,Conv2D,MaxPooling2D,Dense,\
ZeroPadding2D,BatchNormalization,concatenate,AveragePooling2D
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras import regularizers
(X_train,Y_train),(X_test,Y_test) = tf.keras.datasets.mnist.load_data()
X_test1 = X_test
Y_test1 = Y_test
print(X_train.shape[0])
#1表示单色,在TensorFlow下,该通道默认channels_last即(28,28,1),在theano下默认为channels_first,即为(1,28,28)
X_train = X_train.reshape(X_train.shape[0],28,28,1).astype('float32')/255.0
X_test = X_test.reshape(X_test.shape[0],28,28,1).astype('float32')/255.0
Y_train = tf.keras.utils.to_categorical(Y_train, num_classes=10)
Y_test = tf.keras.utils.to_categorical(Y_test, num_classes=10)
#参数设置
Lrn2D_Norm = True
Weight_Decay = 0.0005
DROPOUT = 0.4
DATA_FORMAT = 'channels_last'
#定义conv2D_lrn2d()函数,方便搭建GoogLeNet时直接调用
def conv2D_lrn2d(x,filters,kernel_size,strides=(1,1),padding='same',
activation='relu',kernel_regularizer=None,bias_regularizer=None,
lrn2d_norm=Lrn2D_Norm, #局部响应归一化
weight_decay=Weight_Decay #权重衰减系数
):
#是否对权重和偏置施加正则化
if weight_decay:
kernel_regularizer = regularizers.l2(weight_decay)
bias_regularizer = regularizers.l2(weight_decay)
else:
kernel_regularizer = None
bias_regularizer = None
#搭建卷积层,对输入数据x进行卷积
x = Conv2D(filters=filters,kernel_size=kernel_size,
strides=strides,padding=padding,
activation=activation,
kernel_regularizer=kernel_regular
TensorFlow2.0实现GoogLeNet模型
利用TensorFlow2.0实现了GoogLeNet模型,并在测试集上达到了98.36%的准确率。
摘要由CSDN通过智能技术生成