We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
第一组不同:
在这个算子的CPU实现当中:
https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/phi/kernels/cpu/sigmoid_cross_entropy_with_logits_kernel.cc#L62 有这么一段代码,其中涉及到了两个eps,分别是1e-5和1e-6,如下图
eps
而在GPU实现当中:
https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/phi/kernels/gpu/sigmoid_cross_entropy_with_logits_kernel.cu 同样的计算分支里面,只有一个eps出现,值为1e-5,如下图
第二组不同:
在GPU的实现里面,在normalize功能之前,就已经有了一次根据eps的过滤,在这里。但是对应的CPU实现中,则没有这段逻辑。即,CPU中,仅在normalize功能内部,有一次根据eps的过滤。但是GPU在整个计算过程中,有两轮。
此外,单测里面,完全没有提到上面代码中的eps,没有出现1e-5也没有出现1e-6。
https://github.com/PaddlePaddle/Paddle/blob/develop/test/legacy_test/test_sigmoid_cross_entropy_with_logits_op.py
想的问题是:CPU和GPU的实现,预期是一样的吗?看这里面的逻辑,normalize里面的那个过滤,是要根据eps来统计非零元的个数,然后用这个统计值去做一次归一化。但是这里的eps不同,就会导致统计结果不同,最终的计算结果也会不同啊。而一上来的正常sigmoid计算,即normalize的前序操作,用不用eps来过滤,也会导致计算结果的不同吧。这是符合预期的吗?
The text was updated successfully, but these errors were encountered:
应该逻辑是一样的吧。CPU部分的实现,对个数的统计也可以上移到这行的:
Paddle/paddle/phi/kernels/cpu/sigmoid_cross_entropy_with_logits_kernel.cc
Line 45 in 5c4f665
另外,好像 normalize==True 的 code path 并没有真正用过,因为在 python 端暴露出来的 API 里隐藏了这个参数。
Sorry, something went wrong.
wangguan1995
No branches or pull requests
请提出你的问题 Please ask your question
第一组不同:
在这个算子的CPU实现当中:
而在GPU实现当中:
第二组不同:
在GPU的实现里面,在normalize功能之前,就已经有了一次根据
eps
的过滤,在这里。但是对应的CPU实现中,则没有这段逻辑。即,CPU中,仅在normalize功能内部,有一次根据eps
的过滤。但是GPU在整个计算过程中,有两轮。此外,单测里面,完全没有提到上面代码中的
eps
,没有出现1e-5也没有出现1e-6。想的问题是:CPU和GPU的实现,预期是一样的吗?看这里面的逻辑,normalize里面的那个过滤,是要根据
eps
来统计非零元的个数,然后用这个统计值去做一次归一化。但是这里的eps
不同,就会导致统计结果不同,最终的计算结果也会不同啊。而一上来的正常sigmoid计算,即normalize的前序操作,用不用eps
来过滤,也会导致计算结果的不同吧。这是符合预期的吗?The text was updated successfully, but these errors were encountered: