分配Tensor的某些条目,如Theano的set_subtensor

时间:2016-08-17 20:42:48

标签: tensorflow

我可以只为张量中的某些条目赋值吗?当我计算NxP特征矩阵feats的互相关矩阵时,我遇到了这个问题,其中N是观测值,P是维数。有些列是常量,因此标准偏差为零,我不想在std之间为这些常量列设置。这是我做的:

fmean, fvar = tf.nn.moments(feats, axes = [0], keep_dims = False) fstd = tf.sqrt(fvar) feats = feats - fmean sel = (fstd != 0) feats[:, sel] = feats[:, sel]/ fstd[sel] corr = tf.matmul(tf.transpose(feats), feats)

但是,我收到了这个错误:TypeError: 'Tensor' object does not support item assignment。这个问题有解决方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使feats成为tf.Variable并使用tf.scatter_update有选择地更新位置。

由于scatter_update需要更新线性索引列表,因此您需要将[:, sel]隐式2D规范转换为明确的1D索引列表,这有点尴尬。这是从2D here

构建1D索引的示例

在解决此类问题用例方面做了一些工作#206