Небольшой пример:
model = keras.Sequential([
keras.layers.Flatten(input_shape=(400, 400, 3)),
keras.layers.Conv2D(32,kernel_size=3,strides=(1,1),activation='relu', padding='same'),
keras.layers.Conv2D(32,kernel_size=3,strides=(2,2),activation='relu', padding='same'),
keras.layers.Conv2D(64,kernel_size=3,strides=(1,1),activation='relu', padding='same'),
keras.layers.Conv2D(64,kernel_size=3,strides=(2,2),activation='relu', padding='same'),
keras.layers.Conv2D(128,kernel_size=3,strides=(1,1),activation='relu', padding='same'),
keras.layers.Conv2D(128,kernel_size=3,strides=(2,2),activation='relu', padding='same'),
keras.layers.Conv2D(256,kernel_size=3,strides=(1,1),activation='relu', padding='same'),
keras.layers.Conv2D(256,kernel_size=3,strides=(2,2),activation='relu', padding='same'),
keras.layers.GlobalAveragePooling2D(),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
Или вы можете использовать предтренировочную модель от keras.applications
:
from keras.applications.resnet50 import ResNet50
base_model = ResNet50(weights='imagenet',include_top=False,input_shape=(400,400,3))
x=base_model.output
x=GlobalAveragePooling2D()(x)
x=Dense(10,activation='softmax')(x)
model=Model(base_model.input,x)