我正在尝试实现一个深度网络,用于在Caffe中进行三重丢失。当我为锚,正,负图像随机选择三个样本时,它几乎产生零损失。因此,我尝试了以下策略:
If I have 15,000 training images,
1. extract features of 15,000 images with the current weights.
2. calculate the triplet losses with all possible triplet combinations.
3. use the hard samples with n largest losses, and update the network n times.
4. iterate the above steps every k iterations to get new hard samples.第一步很快,但我认为第二步非常耗时,效率也很低。因此,我想知道是否有其他有效的硬数据采样策略。
谢谢。
发布于 2017-12-04 11:34:35
在实践中,如果你的数据集很大,从整个数据集中采样硬三元组是不可行的。事实上,你可以只为你的训练数据集中的一小部分选择硬三元组,这将会节省很多时间。在训练网络后,使用为K次迭代生成的硬三元组。您向网络提供来自数据集的下一批图像,并生成新的硬三元组。
这样,计算成本是可以接受的,并且网络随着训练过程的进行而逐渐改善。
有关更多参考信息,请参阅article here。(第5.1节)
https://stackoverflow.com/questions/42605479
复制相似问题