很简单,我想要做的是以下
A = np.ones((3,3)) #arbitrary matrix
B = np.ones((2,2)) #arbitrary matrix
A[1:,1:] = A[1:,1:] + B
除了在Tensorflow中(矩阵可以是任意复杂的张量表达式)。 A
和B
都不是Tensorflow变量,而只是一个普通的张量。
到目前为止我收集的内容:张量是不可变的,因此我无法分配给子矩阵。 tf.scatter_nd
是子赋值的当前选项,但似乎不支持子矩阵,只支持切片。
应该有效的方法,但可能并不理想:
A+U.dot(B).U.T
其中U
是堆叠的零和单位矩阵。我不确定这实际上是否有利。 A
拆分成子矩阵,然后将它们重叠在一起。可能是效率最高的,但听起来像代码会令人费解。理想情况下,我希望对逐渐变小的矩阵执行N次操作N次,从而产生一个较大的最终结果,但这是切线的。
我现在会使用其中一个黑客,但我希望有人可以告诉我这个惯用的版本是什么!