CNN模型搭建

def train_model(train_x, train_y, test_x, test_y, val_x, val_y):

    model = Sequential()
    # 第一个卷积层,32个卷积核,大小5x5,卷积模式SAME,激活函数relu,输入张量的大小
    model.add(Conv2D(filters= 32, kernel_size=(5,5), padding='Same', activation='relu',input_shape=(224, 224, 3))) #图片大小224*224,通道数为3
    model.add(Conv2D(filters= 32, kernel_size=(5,5), padding='Same', activation='relu'))
    # 池化层,池化核大小2x2
    model.add(MaxPool2D(pool_size=(2,2)))
    # 随机丢弃四分之一的网络连接,防止过拟合
    model.add(Dropout(0.25))
    model.add(Conv2D(filters= 64, kernel_size=(3,3), padding='Same', activation='relu'))
    model.add(Conv2D(filters= 64, kernel_size=(3,3), padding='Same', activation='relu'))
    model.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))
    model.add(Dropout(0.25))
    # 全连接层,展开操作,
    model.add(Flatten())
    # 添加隐藏层神经元的数量和激活函数
    model.add(Dense(256, activation='relu'))
    model.add(Dropout(0.25))
    # 输出层
    model.add(Dense(2, activation='sigmoid'))

    # 设置优化器
    # lr :学习效率, decay :lr的衰减值
    optimizer = adam(lr = 0.001, decay=0.0)

    # 编译模型
    # loss:损失函数,metrics:对应性能评估函数
    model.compile(optimizer=optimizer, loss = 'categorical_crossentropy', metrics=['accuracy'])

    model.fit(train_x, train_y, batch_size=10 ,epochs= 15, validation_data = (val_x, val_y), verbose =1)

猜你喜欢

转载自blog.csdn.net/Stybill_LV_/article/details/110860086