code mô hình VGG16 bằng class với image shape là tham số truyền vào
Dưới đây là đoạn mã của mô hình VGG16 bằng class, trong đó image shape là tham số truyền vào:
from keras.models import Model
from keras.layers import Input, Conv2D, MaxPooling2D, Flatten, Dense
class VGG16:
def __init__(self, input_shape):
self.input_shape = input_shape
def build(self):
inputs = Input(shape=self.input_shape)
# Block 1
x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv1')(inputs)
x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv2')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block1_pool')(x)
# Block 2
x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv1')(x)
x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv2')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block2_pool')(x)
# Block 3
x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv1')(x)
x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv2')(x)
x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv3')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block3_pool')(x)
# Block 4
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv1')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv2')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv3')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block4_pool')(x)
# Block 5
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv1')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv2')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv3')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block5_pool')(x)
# Classification block
x = Flatten(name='flatten')(x)
x = Dense(4096, activation='relu', name='fc1')(x)
x = Dense(4096, activation='relu', name='fc2')(x)
outputs = Dense(1000, activation='softmax', name='predictions')(x)
# Create model
model = Model(inputs, outputs, name='vgg16')
return model
Để sử dụng, chỉ cần khởi tạo class và gọi phương thức build
:
vgg16 = VGG16((224, 224, 3))
model = vgg16.build()
model.summary()
Xem thể nào, không khó lắm phải không? Đừng quên, giải đáp thêm mọi thắc mắc về mô hình học sâu hay công nghệ AI, trituenhantao.io sẽ cung cấp cho bạn nguồn kiến thức vô tận!