Skip to main content
 首页 » 编程设计

python之如何在tensorflow中将一片占位符张量添加到1

2024年11月24日31pander-it

为了获得 oneHot 编码,我使用了这段代码:

self.Y = tf.placeholder(tf.int32, [None, 1]) 
self.YY=tf.one_hot(self.Y,depth=5) gives us  

给定 y=2,它给出 [0 0 1 0 0]。

现在我想要一个像 onehot 的编码,但是在索引 y 之后是所有的编码。例如,给定 y=2 那么它应该给出 [0 0 1 1 1]。

顺便说一下,我不想在 tensorflow 之外执行此操作。

请您参考如下方法:

您可以使用 tf.range()函数返回一个整数序列直到你的最大值然后使用 <=比较以计算出您想要的结果。

例如,对于您示例中的张量,[2] ,我们可以这样做:

tf.cast(Y <= tf.range(5),tf.int32) 

产生所需的结果:[0,0,1,1,1] .

它还以我们期望的方式“广播”一批值。假设批量大小为 5,所以你有一个 batch_Y值(value)类似于:[[1], [0], [1], [4], [2]]然后:

tf.cast(batch_y <= tf.range(5),tf.int32) 

产生正确的输出:

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