用小批量实现坐标下降

时间:2016-02-16 06:57:03

标签: tensorflow

我正在尝试使用TensorFlow从Karol Gregor和Yann Lecun实现this paper的学习坐标下降算法(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上,我发现这个快速修复的前向/后向传播非常非常慢。

0 个答案:

没有答案