目录
1. Lenet
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPool2D
from tensorflow.keras import Model
class LeNet5(Model):
def __init__(self):
super(LeNet5, self).__init__()
self.c1 = Conv2D (filters =6, kernel_size = (5,5),
activation = 'sigmoid')
self.p1 = MaxPool2D (pool_size = (2,2), strides = 2)
self.c2 = Conv2D (filters =16, kernel_size = (5,5),
activation = 'sigmoid')
self.p2 = MaxPool2D (pool_size = (2,2), strides = 2)
self.flatten = Flatten()
self.f1 = Dense(120, activation ='sigmoid')
self.f2 = Dense(84, activation ='sigmoid')
self.f3 = Dense(10, activation ='softmax')
def call(self, x):
x = self.c1(x)
x = self.p1(x)
x = self.c2(x)
x = self.p2(x)
x = self.flatten(x)
x = self.f1(x)
x = self.f2(x)
y = self.f3(x)
return y
2. Alexnet
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPool2D, BatchNormalization, Activation, Dropout
from tensorflow.keras import Model
class AlexNet8(Model):
def __init__(self):
super(AlexNet8, self).__init__()
self.c1 = Conv2D(filters =96, kernel_size = (3,3) )
self.b1 = BatchNormalization()
self.a1 = Activation('relu')
self.p1 = MaxPool2D(pool_size = (3,3), stride = 2)
self.c2 = Conv2D(filters =256, kernel_size = (3,3) )
self.b2 = BatchNormalization()
self.a2 = Activation('relu')
self.p2 = MaxPool2D(pool_size = (3,3), stride = 2)
self.c3 = Conv2D(filters =384, kernel_size = (3,3), padding ='same',
activation = 'relu' )
self.c4 = Conv2D(filters =384, kernel_size = (3,3), padding ='same',
activation = 'relu' )
self.c5 = Conv2D(filters =256, kernel_size = (3,3), padding ='same',
activation = 'relu' )
self.p3 = MaxPool2D(pool_size = (3,3), stride = 2)
self.flatten = Flatten()
self.f1 = Dense(2048, activation = 'relu')
self.d1 = Dropout(0.5)
self.f2 = Dense(2048, activation = 'relu')
self.d2 = Dropout(0.5)
self.f3 = Dense(10, activation = 'softmax')
def call(self, x):
x = self.c1(x)
x = self.b1(x)
x = self.a1(x)
x = self.p1(x)
x = self.c2(x)
x = self.b2(x)
x = self.a2(x)
x = self.p2(x)
x = self.c3(x)
x = self.c4(x)
x = self.c5(x)
x = self.p3(x)
x = self.flatten(x)
x = self.f1(x)
x = self.d1(x)
x = self.f2(x)
x = self.d2(x)
y = self.f3(x)
return y
3.VGG16
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPool2D, BatchNormalization, Activation, Dropout
from tensorflow.keras import Model
class VGG(Model):
def __init__(self):
self.c1 = Conv2D(filters =64, kernel_size = (3,3),padding = 'same' )
self.b1 = BatchNormalization()
self.a1 = Activation('relu')
self.c2 = Conv2D(filters = 64, kernel_size =(3,3), padding = 'same')
self.b2 = BatchNormalization()
self.a2 = Activation('relu')
self.p2 = MaxPool2D(kernel_size = (2,2),strides = 2)
self.d2 = Dropout(0.2)
self.c3 = Conv2D(filters =128, kernel_size = (3,3),padding = 'same' )
self.b3 = BatchNormalization()
self.a3 = Activation('relu')
self.c4 = Conv2D(filters = 128, kernel_size =(3,3), padding = 'same')
self.b4 = BatchNormalization()
self.a4 = Activation('relu')
self.p4 = MaxPool2D(kernel_size = (2,2),strides = 2)
self.d4 = Dropout(0.2)
self.c5 = Conv2D(filters =256, kernel_size = (3,3),padding = 'same' )
self.b5 = BatchNormalization()
self.a5 = Activation('relu')
self.c6 = Conv2D(filters = 256, kernel_size = (3,3),padding = 'same' )
self.b6 = BatchNormalization()
self.a6 = Activation('relu')
self.c7 = Conv2D(filters = 256, kernel_size =(3,3), padding = 'same')
self.b7 = BatchNormalization()
self.a7 = Activation('relu')
self.p7 = MaxPool2D(kernel_size = (2,2),strides = 2)
self.d7 = Dropout(0.2)
self.c8 = Conv2D(filters =512, kernel_size = (3,3),padding = 'same' )
self.b8 = BatchNormalization()
self.a8 = Activation('relu')
self.c9 = Conv2D(filters = 512, kernel_size = (3,3),padding = 'same' )
self.b9 = BatchNormalization()
self.a9 = Activation('relu')
self.c10 = Conv2D(filters = 256, kernel_size =(3,3), padding = 'same')
self.b10 = BatchNormalization()
self.a10 = Activation('relu')
self.p10 = MaxPool2D(kernel_size = (2,2),strides = 2)
self.d10 = Dropout(0.2)
self.c11 = Conv2D(filters = 512, kernel_size = (3,3),padding = 'same' )
self.b11 = BatchNormalization()
self.a11 = Activation('relu')
self.c12 = Conv2D(filters = 512, kernel_size = (3,3),padding = 'same' )
self.b12 = BatchNormalization()
self.a12 = Activation('relu')
self.c13 = Conv2D(filters = 512, kernel_size =(3,3), padding = 'same')
self.b13 = BatchNormalization()
self.a13 = Activation('relu')
self.p13 = MaxPool2D(kernel_size = (2,2),strides = 2)
self.d13 = Dropout(0.2)
self.f14 = Dense(512, activation = 'relu')
self.d14 = Dropout(0.2)
self.f15 = Dense(512, activation = 'relu')
self.d15 = Dropout(0.2)
self.f16 = Dense(10, activation = 'softmax')
def call(self,x ):
x = self.c1(x)
x = self.b1(x)
x = self.a1(x)
x = self.c2(x)
x = self.b2(x)
x = self.a2(x)
x = self.p2(x)
x = self.d2(x)
x = self.c3(x)
x = self.b3(x)
x = self.a3(x)
x = self.c4(x)
x = self.b4(x)
x = self.a4(x)
x = self.p4(x)
x = self.d4(x)
x = self.c5(x)
x = self.b5(x)
x = self.a5(x)
x = self.c6(x)
x = self.b6(x)
x = self.a6(x)
x = self.c7(x)
x = self.b7(x)
x = self.a7(x)
x = self.p7(x)
x = self.d7(x)
x = self.c8(x)
x = self.b8(x)
x = self.a8(x)
x = self.c9(x)
x = self.b9(x)
x = self.a9(x)
x = self.c10(x)
x = self.b10(x)
x = self.a10(x)
x = self.p10(x)
x = self.d10(x)
x = self.c11(x)
x = self.b11(x)
x = self.a11(x)
x = self.c12(x)
x = self.b12(x)
x = self.a12(x)
x = self.c13(x)
x = self.b13(x)
x = self.a13(x)
x = self.p13(x)
x = self.d13(x)
x = self.f14(x)
x = self.d14(x)
x = self.f15(x)
x = self.d15(x)
y = self.f16(x)