Comments (13)
这个loss的计算方式是cosin相似度,而不是欧式距离,代码中变量命名方式可能存在误导。如果是使用欧式距离的话,确实应该是问题中提到写法,而使用cosine相似度的话,写法正好是相反的。对于欧式距离,anchor与negative距离越大越好,对于cosine相似度,anchor与negative相似越小越好
from paddleclas.
这个loss的计算方式是cosin相似度,而不是欧式距离,代码中变量命名方式可能存在误导。如果是使用欧式距离的话,确实应该是问题中提到写法,而使用cosine相似度的话,写法正好是相反的。对于欧式距离,anchor与negative距离越大越好,对于cosine相似度,anchor与negative相似越小越好
感谢您的回复!
我的疑问是(absolut_loss_an = dist_an - self.an_value) < 0时anchor与negative相似度dist_an更小,loss是否也该更小?但是为何此时要将absolut_loss_an置于更大的值1而不是0?
from paddleclas.
对于cosine相似度,anchor与negative相似越小越好,所以距离越小的loss应该越大
from paddleclas.
对于cosine相似度,anchor与negative相似越小越好,所以距离越小的loss应该越大
你好,可能我的疑问没有清楚的被表达。
我的理解也是anchor与negative相似越小越好,且此处计算使用的dist_an代表anchor与negative相似度。
absolut_loss_an = dist_an - self.an_value
absolut_loss_an = paddle.where(absolut_loss_an > 0,
absolut_loss_an,
paddle.ones_like(absolut_loss_an))
对于以上代码我的理解是:
absolut_loss_an<0即是代表anchor与negative相似越小,相似越小则loss的值越小,loss值越小则应该将代码中的ones_like替换为zeros_like。
请问我的理解中是否有误?
@RainFrost1 @changdazhou
from paddleclas.
对于cosine相似度,anchor与negative相似越小越好,但是注意这里的dist_an越大代表越相似,从你的描述看来好像是认为dist_an越小则anchor与negative越相似,可能是这里理解反了。
对于你的理解:
absolut_loss_an<0即是代表anchor与negative相似越小,相似越小则loss的值应该越大才对,所以用paddle.ones_like
from paddleclas.
对于cosine相似度,anchor与negative相似越小越好,但是注意这里的dist_an越大代表越相似,从你的描述看来好像是认为dist_an越小则anchor与negative越相似,可能是这里理解反了。 对于你的理解: absolut_loss_an<0即是代表anchor与negative相似越小,相似越小则loss的值应该越大才对,所以用paddle.ones_like
你好,对于negative应该相似越低越好,那么为何absolut_loss_an越低(负样本越不相似越好)loss的值越大呢?效果越好loss不应该越小么
@changdazhou
from paddleclas.
不好意思,前面可能说错了,主要还是得看这段代码:
absolut_loss_an = paddle.where(absolut_loss_an > 0,
absolut_loss_an,
absolut_loss_an这里是越大代表的越相似没问题吧,所以后面把相似的设置为了1。
from paddleclas.
不好意思,前面可能说错了,主要还是得看这段代码: absolut_loss_an = paddle.where(absolut_loss_an > 0, absolut_loss_an, absolut_loss_an这里是越大代表的越相似没问题吧,所以后面把相似的设置为了1。
absolut_loss_an = dist_an - self.an_value
absolut_loss_an = paddle.where(absolut_loss_an > 0,absolut_loss_an,paddle.ones_like(absolut_loss_an))
此处absolut_loss_an应该是anchor与negative相似度的loss。
当absolut_loss_an > 0时,an相似度高于an_value取absolut_loss_an本身;
当absolut_loss_an <= 0时,an相似度低于an_value表示anchor与negative越不相似,a/n越不相似效果越好,此时的loss值absolut_loss_an是否设为0更合适?
@changdazhou
from paddleclas.
刚刚我们确认了一下,这里的作用不是为了增加负样本的loss,而是去筛选出相似度很低的样本作为负样本,增加相似度低的样本的loss权重,以让模型对于负样本会提升更多的关注度
from paddleclas.
刚刚我们确认了一下,这里的作用不是为了增加负样本的loss,而是去筛选出相似度很低的样本作为负样本,增加相似度低的样本的loss权重,以让模型对于负样本会提升更多的关注度
感谢您的耐心回复!
经过这一步筛选后,负样本中相似度小于an_value部分(absolut_loss_an <= 0)的loss固定为1,1一定会大于负样本中相似度大于an_value部分(absolut_loss_an > 0)的loss,那么这样会将模型向anchor与negative的相似度为an_value引导,而不是anchor与negative的相似度尽可能小?我的理解(absolut_loss_an > 0)部分的关注度需要大于(absolut_loss_an <= 0)部分
另外如果有此处筛选可以提升负样本关注度的相关论文可以麻烦分享一下么?
再次感谢 @changdazhou
from paddleclas.
absolut_loss_an > 0说明该负样本的相似度较高。作为负样本,我们更应该关注那些相似度较低的样本
另外,不好意思,相关论文我们没办法提供哈,可以去网上搜一下
from paddleclas.
absolut_loss_an > 0说明该负样本的相似度较高。作为负样本,我们更应该关注那些相似度较低的样本 另外,不好意思,相关论文我们没办法提供哈,可以去网上搜一下
相似度高的negative才是难以判别的样本,不是更应该优化相似度高的negative?怎么会去更关注相似度低的negative?negative的相似度需要尽可能小 @changdazhou
from paddleclas.
这里是为了让相似度低的负样本距离更远,相似度高的正样本距离更近,可以看下这个文档的loss部分,TripletAngularMarginLoss是基于Triplet loss的百度自研损失函数,所以没有论文可供参考。
from paddleclas.
Related Issues (20)
- 我运行的是PP-ShitV2(PP-ShiTu PC端 demo 快速体验),我想修改代码,使输出结果可以显示三个种类可能性,请问如何修改代码 HOT 1
- ImportError: cannot import name 'ClsPredictor' from 'deploy.python.predict_cls' HOT 1
- gpu下预测的结果都是正常的,但切换到cpu下预测,结果全是nan HOT 3
- 为什么使用官方提供的索引库和模型 ppclas的主体识别效果却很差 HOT 1
- 怎样使用小数据对paddleclas的主体检测模型进行更新 HOT 1
- PPShitu中的特征向量提取时的图片归一化处理中,mean,std值,怎么来的? HOT 1
- PPShitu特征提取后,为何2张图很相似的图,特征向量的距离值很大(distance: [0.27994147])? HOT 1
- When do you plan to release recognition models? HOT 1
- 怎样理解特征抽取模型训练中的recall@1和mAP HOT 1
- Android 32位支持 HOT 1
- paddlecls特征提取模型微调 HOT 2
- GeneralRecognitionV2_PPLCNetV2_base.yaml微调特征提取模型报错 HOT 3
- GeneralRecognitionV2_PPLCNetV2_base.yaml微调 HOT 2
- softmax_triplet_with_center_infer.tar 下载链接不存在 HOT 3
- PP—ShiTuV2 RPC训练数据问题确认 HOT 10
- 小白求助,怎么设置分辨率?
- my fault
- 请问PP-Shitu可以做掌纹掌静脉识别吗 HOT 2
- 单卡训练报错ValueError: paddle.distributed initialize error, environment variable FLAGS_selected_gpus is needed, but not set. HOT 1
- PaddleClas/docs/en/PULC /PULC_person_attribute python tools/infer.py error HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from paddleclas.