4-2 Siamese 网络

Siamese 网络( Siamese network)

你经常看到这样的卷积网络,输入图片${x^{(1)}}$ ,然后通过一些列卷积,池化和全连接层,最终得到这样的特征向量,有时这个会被送进 softmax 单元来做分类,但是在这里不这样做,我们关注的是最终输出的向量,假设它是128维,它是由网络深层的全连接层计算出来的,给这 128 个数命个名字,把它叫做$f({x^{(1)}})$,你可以把$f({x^{(1)}})$ 看作是输入图像$f({x^{(1)}})$ 的编码。

将$f({x^{(1)}})$,$f({x^{(2)}})$ 代表两个输入图片,喂给有同样参数的同样的神经网络,然后得到一个不同的 128 维的向量。最后如果你相信这些编码很好地代表了这两个图片,你要做的就是定义d,将$f({x^{(1)}})$,$f({x^{(2)}})$,的距离定义为这两幅图片的编码之差的范数,$d({x^{(1)}},{x^{(2)}}) = \left\| {f({x^{(1)}}) - f({x^{(2)}})} \right\|_2^2$。对于两个不同的输入,运行相同的卷积神经网络,然后比较它们,这一般叫做 Siamese网络架构。这个系统叫做 DeepFace。

神经网络的参数定义了一个编码函数$f({x^{(i)}})$,如果给定输入图像$f({x^{(i)}})$, 这个网络会输出$f({x^{(i)}})$ 的 128 维的编码。你要做的就是学习参数,使得如果两个图片$f({x^{(i)}})$, $f({x^{(j)}})$, 是同一个人,那么你得到的两个编码的距离就小。相反,如果$f({x^{(i)}})$, $f({x^{(j)}})$ 是不同的人,那么你会想让它们之间的编码距离大一点。

如果你改变这个网络所有层的参数,你会得到不同的编码结果,你要做的就是用反向传播来改变这些所有的参数,以确保满足这些条件。

转载于:https://www.cnblogs.com/xiaojianliu/articles/9938388.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值