如何填充tensorflow中某些索引之间的值?

时间:2018-03-07 12:07:27

标签: tensorflow

二维张量如:

[[0,0,1,0,1,0],
 [0,1,0,0,0,1]]

我希望在每行的两个1之间填充1,例如:

[[0,0,1,1,1,0],
  [0,1,1,1,1,1]]

我应该怎么处理tensorflow?thx。

1 个答案:

答案 0 :(得分:0)

一些想法给你。 有两种方法可以使用天真的tf-python操作或使用cpp编写自己的方法:

1

使用tf.cast将矩阵转换为bool,然后得到一个bool张量,然后找到带有tf.where的非零元素的索引,现在你得到一个形状为[?,2]的指示符张量,对于这个张量的每一行(使用tf.map),使用tf.range来构建indices,其中元素应该用一个填充,最后你得到另一个indictor tensor,使用tf.SparseTensor构造函数来构建想要的你想要的。

2

为你自己在cpp中编写一个op然后将它加载到tensorflow运行时,这可能是一个更好的解决方案,但需要一点cpp的知识,你可以去官方网站看看如何编写自定义操作,你可以直接操纵底层的Eigen::Tensor,这样就很容易做你想做的事情

希望可以帮到你