如何在拥有两组X_train与y_train时拟合拼接后的CNN模型
双输入拼接CNN模型的拟合方法
首先先修正你代码里的一个关键问题:二分类任务中,最后一层的激活函数用错了。softmax是用于多分类的,单输出节点下应该用sigmoid,不然BinaryCrossentropy损失计算会完全失效,修改后的输出层代码:
merged_out = Dense(units=1, activation='sigmoid')(merged_out)
接下来是模型拟合的核心操作:
因为你的拼接模型有两个输入分支,所以调用fit时需要传入包含两个训练输入的列表,而标签用同一个y_train即可(毕竟两个分支的输入是同一图像的不同处理版本,对应标签一致)。
具体拟合代码示例
假设:
X_train_a是给model_a的原始训练图像数据X_train_b是给model_b的、经过特定处理后的同批训练图像数据
拟合代码如下:
# 训练模型 history = merged_model.fit( [X_train_a, X_train_b], # 按模型输入顺序传入两个分支的训练数据 y_train, batch_size=32, # 根据你的GPU显存调整 epochs=20, validation_split=0.2, # 自动划分验证集,也可以手动传validation_data shuffle=True )
验证集的传入方式
如果用手动划分的验证集,格式和训练集一致:
# 假设X_val_a、X_val_b是验证集的两个输入,y_val是验证集标签 history = merged_model.fit( [X_train_a, X_train_b], y_train, batch_size=32, epochs=20, validation_data=([X_val_a, X_val_b], y_val), shuffle=True )
内容的提问来源于stack exchange,提问作者Meriem Chahinez Ben
相关产品推荐
相关产品推荐

