-
Notifications
You must be signed in to change notification settings - Fork 5.7k
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
【PaddlePaddle Hackathon 2】59、为 Paddle 添加稀疏算子divide #40272
Comments
您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看官网API文档、常见问题、历史Issue、AI社区来寻求解答。祝您生活愉快~ Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the API,FAQ,Github Issue and AI community to get the answer.Have a nice day! |
@zkh2016 您好,我看到torch目前只支持sparse tensor对scalar进行除法,
不知此处任务要求实现的逐元素除法在两个对应元素都为0的时候怎么处理 |
可以参考paddle.divide,out = paddle.divide(x, y),当y中有0的时候,对应位置返回inf。C++端可以参考DivideKernel和DivideFunctor的处理。 |
@zkh2016 经过测试,x不为0而y为0的位置会得到inf,和dense tensor没有区别,问题是两个稀疏tensor对应都为0的位置,如果按dense的算法除出来是nan,但是稀疏tensor压缩了0元素,不会对x, y都为0的位置进行运算,所以还原成dense tensor后本应为nan的位置会还原成0,无法实现这样的返回,例如
请问这里怎么处理,还是说这种两个稀疏tensor对应位置为0的除法是没有意义的,忽略即可 |
这里应该是要保持elementwise除法的原本定义,sparse的除法应该把0考虑进去,[1, 0] / [1, 0] 这个应该等于[1, nan]。 |
问题1:这样的话在大规模稀疏tensor下要在结果中对每个xy都为0的位置存入nan,是否丧失了稀疏tensor压缩存储空间,提高运算效率的初衷 |
sparse不应该改变基础的计算规则,计算结果应该和dense的一致,既然是逐元素除法就应该把每个元素都考虑进去的。有些sparse计算结果会变成dense的,这个正常。
全部转成dense是一种比较容易实现的方法,但是需要多次格式转换,可以思考下只把y转换成dense进行计算是否效率会更高一些。 |
好滴 我研究研究 |
(此 ISSUE 为 PaddlePaddle Hackathon 第二期活动的任务 ISSUE,更多详见 【PaddlePaddle Hackathon 第二期】任务总览)
【任务说明】
【提交内容】
【技术要求】
【参考内容】
【答疑交流】
The text was updated successfully, but these errors were encountered: