Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

triplet_loss问题,求教,急 #6

Open
xiaomingdaren123 opened this issue Jan 10, 2019 · 3 comments
Open

triplet_loss问题,求教,急 #6

xiaomingdaren123 opened this issue Jan 10, 2019 · 3 comments

Comments

@xiaomingdaren123
Copy link

首先非常感谢您提供的代码,有两个问题希望您能提供帮助
1、在我用batch_hard_triplet_loss方法训练手写数字网络时,我发现如果我的网络不加BN层,训练一会之后loss就会固定在margin的大小不在下降,并且acc(acc使用KNN求得)变成了0,我查看了一下_pairwise_distances,发现距离矩阵也差不多都变成了?这是什么原因造成的呢,必须要加bn层吗?
2、我将batch_hard_triplet_loss用在其他分类任务当中,网络采用VGG网络以及自己设计的简单网络,我发现就算我加了BN层,两个网络也会出现上述情况,我只用了三元组损失并没有使用其他损失,不知道这是什么原因?跟网络的大小或者分类任务的难易有关吗?
谢谢,希望您能回答。

@lawlite19
Copy link
Owner

  1. loss固定在margin大小说明embeddings聚在了一点,没有区分开,尝试降低learning rate 试试;
  2. 另外如果类别很多(这里手写数字之后10个类别应该无碍),输入数据需要进行采样,查看这里

@xiaomingdaren123
Copy link
Author

default
default
dinstance
首先,感谢您的回答
第一张图是我的网络结构,网络结构并不复杂,是一个7分类的问题,学习率已经设置为0.0001,采用Adam优化,但是还是会出现图二的训练情况,我将网络的最后一层求出的distance距离输出看了一下,发现acc等于0的时候我的dis矩阵所有元素基本都开始接近于0了,不知道是什么原因造成的?

@sugar2019
Copy link

@xiaomingdaren123 请问您的问题解决了吗?我的batch_hard也遇到了相同的问题,修改网络权重初始值和调节学习率都没有效果。结果自己重新训练的时候就出现了只有第一个step的loss有值,后面就全部都是inf了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants