如何将 np.add.at 语句转换为 tensorflow?
np.add.at(dW, self.x.ravel(), dout.reshape(-1, self.D))
编辑
self.dW.shape 为(V, D), self.D.shape 为(N, D) self.x.size 为N
请您参考如下方法:
对于 np.add.at,您可能想查看 tf.SparseTensor ,它通过值列表和索引列表表示张量(更适合稀疏数据,因此得名)。
所以对于你的例子:
np.add.at(dW, self.x.ravel(), dout.reshape(-1, self.D))
那将是(假设 dW、x 和 dout 是张量):
tf.sparse_add(dW, tf.SparseTensor(x, tf.reshape(dout, [-1])))
这是假设 x 的形状是 [n, nDims](即 x 是 n 个索引的“列表”,每个维度 nDims),dout 的形状为 [n]。
