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)