Closed l2009312042 closed 1 year ago
你好,我想这个问题和 beta 的初始化定义无关。左边来自博客的公式我不确定是否正确,仅从右边论文原文公式分析。
公式 (15) 中 y_k^t 表示的是softmax输出的概率,而代码中计算的是对 log-softmax 输出的梯度,又因为有
可知公式 (15) 与当前代码是一致的。
今早想到是logsoftmax和softmax的差异,想过来关闭一下,没想到作者已经回复了。 代码是关于logsoftmax求导的 ,公式是对softmax, 有这个差异 ,问题关闭 ,感谢。
如果都是关于softmax或者都是关于logsoftmax,初值是有影响的,在于alpha*beta这项,中间那个ykt 是否乘了2次。
在gpu_ctc_kernels.h 这个文件中,计算的关于softmax的梯度,代码如下
不同的beta初值,其梯度是有差异的,下图是反向传播的推导公式, 左边来自博客 右边来自原始论文 我们这边使用的右边的初值方式,感觉应该是 grads[grads_offset] = exp(accum[j] - 2*probs[grads_offset] - log_partition); 这里的实现是否有问题,还请帮确认一下?