在Keras和TensorFlow中实现孪生网络

在Keras和TensorFlow中实现孪生网络' can be condensed to '在Keras和TensorFlow中实现孪生网络'.

Markus Spiske在Unsplash上的照片

通过示例代码学习目标检测等技术

神经网络在人工智能/机器学习领域非常出色且广受欢迎,但它们需要大量的数据进行训练。对于诸如目标检测、签名验证、语音验证和处方药识别等任务,由于过多的数据要求,常规神经网络技术将会更加耗时和昂贵。在这些类型的工作中,孪生网络可以非常强大,因为它所需的数据比常规神经网络少得多。此外,不平衡的数据集也可以表现出良好的性能。

本教程将为您提供孪生网络的高级概述,并提供一个与之一起使用的完整示例。我在这里使用了时尚MNIST数据集,但这种类似的结构对于许多其他用例都很好。

什么是孪生网络?

孪生网络包含一个或多个相同的网络,这些相同的网络具有相同的参数和权重。如果一个网络的权重更新,另一个网络的权重也会更新。它们必须是相同的。最后一层通常是一个嵌入层,用于计算输出之间的距离。

您将输入一对输入。每个网络将计算输入的特征,并使用两个图像之间的距离找到两个输入之间的相似性。因此,只有两个类别。图像要么相似,要么不相似。

当您在一个示例上工作时,这个概念将更加清晰。通过实践学习总是最好的想法。

必要的导入和函数定义

让我们从必要的导入开始。如果需要,我们可以导入更多内容。

import osimport tensorflow.keras.backend as Kimport matplotlib.pyplot as pltimport numpy as npimport tensorflow as tffrom tensorflow.keras.models import Modelfrom tensorflow.keras.layers import Inputfrom tensorflow.keras.layers import Conv2Dfrom tensorflow.keras.layers import Densefrom tensorflow.keras.layers import…