0

我试图在这个数据集中实现连体网络。正如我在标题中所写,无论我如何更改代码,验证准确度在 6-7 个 epoch 内将达到 0.9,但测试准确度或损失并没有提高。我应该怎么办?

生成我的网络的代码:

def gen():
   i = Input(shape = (100, 100, 1))
   mod = Conv2D(32, kernel_size = (3, 3), activation= 'relu')(i)
   mod = MaxPool2D(pool_size=(3, 3))(mod)
   mod = Conv2D(64, kernel_size = (3, 3), activation= 'relu')(mod)
   mod = MaxPool2D(pool_size=(3, 3))(mod)
   mod = BatchNormalization()(mod)
   mod = Conv2D(128, kernel_size = (3, 3), activation= 'relu')(mod)
   mod = MaxPool2D(pool_size=(3, 3))(mod)
   mod = Flatten()(mod)
   mod = Dense(256, activation= 'relu')(mod)
   return (mod, i)
(left_side, left_input) = gen()
(right_side, right_input) = gen()
L1_layer = lambda tensors: K.abs(tensors[0] - tensors[1])
L1_distance = L1_layer([left_side, right_side])
prediction = Dense(1, activation='sigmoid')(L1_distance)
net = Model([left_input, right_input], prediction)

负极和正极对交替排列。我正在训练 8000 张图像。我尝试了 40000 张图像,但仍然得到相同的结果我更改了层数、每层中的单元数、数据集的大小,将彩色图像转换为灰度,以便我可以将更多图像放入我的 ram 中进行训练,更改了学习率等,但结果是一样的。该模型训练良好,但验证准确率始终在 0.5 左右。我应该怎么办?

4

0 回答 0