VGG16,肯定正确的

1.导入库

import pickle
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential,Model
from keras.layers import Dropout, Dense, Conv2D, Flatten, MaxPooling2D, Input, Activation
from keras.callbacks import ModelCheckpoint
from keras import utils  # 归一化变量
from sklearn.model_selection import train_test_split

2.程序

两个3x3的卷积,感受野等同于5x5

三个 3x3,感受野等同于7x7

weight_decay = 0.005
inpt = Input(shape=(224,224,3))



x = Conv2D(64, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(inpt)
x = Conv2D(64, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)

x = Conv2D(128, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = Conv2D(128, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)

x = Conv2D(256, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = Conv2D(256, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = Conv2D(256, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)

x = Conv2D(512, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = Conv2D(512, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = Conv2D(512, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)

x = Conv2D(512, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = Conv2D(512, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = Conv2D(512, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)

x = Flatten()(x)
x = Dense(4096, activation='relu')(x)
x = Dropout(0.5)(x)
x = Dense(4096, activation='relu')(x)
x = Dropout(0.5)(x)
x = Dense(1000, activation='softmax')(x)
model = Model(inputs=inpt, outputs=x)
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])

3.额,其实不太喜欢这样的结构

自己修改一下,删几个层,就能用到自己的分类上了

优化器改成adam了

weight_decay = 0.005
inpt = Input(shape=(60, 60, 8))


x = Conv2D(64, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(inpt)
x = Conv2D(64, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)

x = Conv2D(128, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = Conv2D(128, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)

x = Conv2D(256, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = Conv2D(256, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
# x = Conv2D(256, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)

x = Conv2D(512, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = Conv2D(512, (3, 3), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)


x = Flatten()(x)
x = Dense(1024, activation='relu')(x)
x = Dropout(0.5)(x)
x = Dense(14, activation='softmax')(x)


model = Model(inputs=inpt, outputs=x)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

猜你喜欢

转载自blog.csdn.net/weixin_47289438/article/details/112159037
今日推荐