我正在尝试使用暹罗神经网络来检查两个图像是否相似 . 作为参考,我开始使用标准示例here,虽然我按照某些帖子中的建议更改了 contrastive_losscompute_accuracy 中的返回值,但它们似乎运行良好(我将准确度提高到0.98并将损失减少到0.01) .

现在我想使用卷积基础VGG和我自己的数据集(大小为200x200和3个通道)并将最后一层设置为可训练的(尽管我尝试使用整个网络训练)我所做的是here .

我的模型如下:

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_2 (InputLayer)            (None, 200, 200, 3)  0                                            
__________________________________________________________________________________________________
input_3 (InputLayer)            (None, 200, 200, 3)  0                                            
__________________________________________________________________________________________________
vgg16 (Model)                   (None, 6, 6, 512)    14714688    input_2[0][0]                    
                                                                 input_3[0][0]                    
__________________________________________________________________________________________________
lambda_1 (Lambda)               (None, 1)            0           vgg16[1][0]                      
                                                                 vgg16[2][0]                      
==================================================================================================
Total params: 14,714,688
Trainable params: 7,079,424
Non-trainable params: 7,635,264

当我开始训练程序时,每个时期的损失和准确值总是0.5 .

Train on 2000 samples, validate on 800 samples
Epoch 1/10
2000/2000 [==============================] - 2561s 1s/step - loss: 0.5005 - acc: 0.4998 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 2/10
2000/2000 [==============================] - 2563s 1s/step - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 3/10
1999/2000 [============================>.] - ETA: 0s - loss: 0.4997 - acc: 0.5003Epoch 4/10
2000/2000 [==============================] - 2553s 1s/step - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 5/10
2000/2000 [==============================] - 2554s 1s/step - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 6/10
2000/2000 [==============================] - 2562s 1s/step - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 7/10
 763/2000 [==========>...................] - ETA: 19:54 - loss: 0.4980 - acc: 0.5020

如果我在训练后使用模型预测,所有输出都为0,形状为 (2000, 1, 6, 512) ,用于训练数据

关于我做错了什么的任何建议?

谢谢