张量加权掩蔽

2024-04-20 11:58:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下任务:有两个向量 [v_1, ..., v_n][w_1, ..., w_n]构建新的载体[v_1] * w_1 + ... + [v_n] * w_n。你知道吗

对于v = [0.5, 0.1, 0.7]w = [2, 3, 0]的exmaple,结果将是

[0.5, 0.5, 0.1, 0.1, 0.1]。你知道吗

在使用vanilla python的情况下,解决方案是

v, w = [...], [...]
res = []
for i in range(len(v)):
    res += [v[i]] * w[i]

有没有可能在张量流函数中建立这样的代码?它似乎是tf.boolean_mask的一个扩展,带有附加的参数,如weightsrepeats。你知道吗


Tags: 函数代码inforlentf情况range
1条回答
网友
1楼 · 发布于 2024-04-20 11:58:57

下面是一个使用tf.sequence_mask的简单解决方案:

import tensorflow as tf

v = tf.constant([0.5, 0.1, 0.7])
w = tf.constant([2, 3, 0])

m = tf.sequence_mask(w)
v2 = tf.tile(v[:, None], [1, tf.shape(m)[1]])
res = tf.boolean_mask(v2, m)

sess = tf.InteractiveSession()
print(res.eval())
# array([0.5, 0.5, 0.1, 0.1, 0.1], dtype=float32)

相关问题 更多 >