Tensorflow中的Siamese网络——改变Sigmoid激活截止



我已经从PyImageSearch.com教程中构建了暹罗网络:https://pyimagesearch.com/2020/11/30/siamese-networks-with-keras-tensorflow-and-deep-learning/

我正在增强CNN来检测图像是否相同(而不是像教程中那样相同的数字)。这只需要在utils.py中的make_pairs()函数中增加一行代码:

old line:       pairImages.append([currentImage, posImage])
new line:       pairImages.append([currentImage, currentImage])

我认为这对网络来说很容易快速学习100%的准确率,因为图像是相同的。然而,在10个epoch内,它的准确率不能超过~95%。

我认为问题出在输出层。欧几里得距离传递给包含sigmoid函数的Dense输出层。正类是相同的图像,所以这两个图像之间的欧氏距离是0。我在想,如果我能把s形激活从0.5改变到接近1.0,它就会加快学习速度。相同的图像的欧氏距离应该是0,所以我想这应该行得通。

我的问题是:

  1. 如何将sigmoid函数的截止值从默认值0.5更改为
  2. 改变s形截止会有预期的效果吗?

尝试使用整流线性单元(ReLU)激活而不是sigmoid。

最新更新