Tensorflow 用小批量实现坐标下降

Tensorflow 用小批量实现坐标下降,tensorflow,Tensorflow,我正在尝试用TensorFlow实现Karol Gregor和Yann Lecun的学习坐标下降算法(LCoD)。该算法显示了如何在最小批量大小为1的情况下执行正向传递(和反向传播)。我想把它扩展到更大的小批量 在每一步中,(贪婪)坐标下降选择|Z-h(Z)最大分量的索引,其中Z是稀疏代码(N x C),而h()是近端操作符,例如软阈值函数C是字典中的组件/原子数。在本文中,N=1,但我想将其推广到N>=1 在算法5的更新步骤中: for all j in [1, C]: B_j = B_j +

我正在尝试用TensorFlow实现Karol Gregor和Yann Lecun的学习坐标下降算法(LCoD)。该算法显示了如何在最小批量大小为1的情况下执行正向传递(和反向传播)。我想把它扩展到更大的小批量

在每一步中,(贪婪)坐标下降选择
|Z-h(Z)
最大分量的索引,其中
Z
是稀疏代码(
N x C
),而
h()
是近端操作符,例如软阈值函数
C
是字典中的组件/原子数。在本文中,
N=1
,但我想将其推广到
N>=1

在算法5的更新步骤中:

for all j in [1, C]: B_j = B_j + S_jk e(t)
k
是上面最大分量的索引。此步骤不容易执行,因为小批量中的每个示例的索引
k
都不同(同样,这不是
N=1
的问题,而是
N>1
的问题)


快速修复方法是将小批量拆分为
N
行,将每行独立地输入LCoD算法,然后将所有
N
行连接回一个完整大小的矩阵。然而,我想知道是否有更优雅的解决方案。在CPU/GPU上,我发现这个快速修复的正向/反向传播非常非常慢。

您最终实现了它吗?