Tutorial教程:生成triplet训练基于triplet loss的深度模型
我相信很多想使用triplet loss的人被triplet的生成难倒了。当然,如果你的机器足够好,网络上的很多代码就可以满足你了,github上有很多用于手写数字识别的代码,他们都很好用,譬如说:
https://github.com/charlesLucky/keras-triplet-loss-mnist
但是,里面只是怎么计算loss,没有怎么生成triplet,他的triplet就是每次从batch里面随即挑,好在mnist只有十个class,怎么挑选都很好挑到足够的positive 和 negetive. 对于很大的dataset,class又很多,你又要怎么生成呢?
FaceNet源代码有给出一些:
https://github.com/davidsandberg/facenet
可是TF1 的代码,看也看不大明白啊,所以我们来看看TF2怎么生成!
首先我们需要看看tf.data.Dataset.interleave()
interleave()是Dataset的类方法,所以interleave是作用在一个Dataset上的。