我正在实现这个函数的分析形式
其中k(x,y)是RBF核k(x,y) = exp(-||x-y||^2 / (2h))
我的功能原型是
def A(X, Y, grad_log_px,Kxy):
pass
而X
,Y
是NxD
矩阵,其中N
是批量大小,D
是一个维度。所以X
是一批x
,在上面的等式中,N
是我用autograd
计算的NxD
矩阵。在
Kxy
是NxN
矩阵,其中每个条目(i,j)
是RBF核K(X[i],Y[j])
这里的挑战在于,在上面的等式中,y
只是一个维数为D
的向量。我有点想传入y
的一批。(所以要传递Y
大小的矩阵NxD
)
这个公式可以通过批量大小循环使用,但是我很难以更简洁的方式实现
下面是我尝试的循环解决方案:
^{pr2}$在方程中:grad_{x}
和{D
考虑到我正确地推断了各种术语的所有维度,这里有一个方法。但首先是维度的摘要(屏幕截图,因为使用数学类型设置更容易解释;请验证它们是否正确):
另请注意第二项的双导数,它给出:
其中下标表示样本,上标表示特征。在
所以我们可以通过使用^{} (类似地^{} )和array broadcasting来创建这两个术语:
结果如下:
^{pr2}$相关问题 更多 >
编程相关推荐