tensorflow中的变约化和数

tensorflow中的变约化和数,tensorflow,Tensorflow,考虑以下情况: token_ids = [17, 189, 981, 1000, 11, 42, 109, 26, 3377, 261] word_ids = [0, 0, 0, 0, 1, 1, 1, 2, 2, 2] 其中,我需要计算每个word\u id减少的token\u id的总和,如下所示: output = [ (emb[17] + emb[189] + emb[981] + emb [1000]), (emb[11] + emb[42] + em

考虑以下情况:

token_ids = [17, 189, 981, 1000, 11, 42, 109, 26, 3377, 261]  
word_ids = [0, 0, 0, 0, 1, 1, 1, 2, 2, 2] 
其中,我需要计算每个
word\u id
减少的
token\u id的总和,如下所示:

output = [ (emb[17] + emb[189] + emb[981] + emb [1000]),  
           (emb[11] + emb[42] + emb[109]),
           (emb[26] + emb[3377] + emb[261]) ] 
其中
emb
是任何嵌入矩阵

我可以使用for循环在python中编写以下代码:

prev = 0
sum_all = []
sum = 0
for i in range(len(word_ids)):
    if word_ids[i] == prev:
        sum += emb[token_ids[i]]
    else:
        sum_all += [sum]
        sum = emb[token_ids[i]]
        prev = word_ids[i]
    if i == len(word_ids):
        sum_all += [sum]
return sum_all
但是我想在tensorflow中高效地完成它(如果可能的话,矢量化)。有谁能给我一些建议吗?

你需要计算张量段的和

将tensorflow导入为tf
令牌id=tf.常量([1718998119000,11,42109,263377261],tf.int32)
word_id=tf.常量([0,0,0,0,1,1,1,2,2],tf.int32)
emb_矩阵=tf.one(形状=(4000,3))
emb=tf.nn.嵌入查找(emb\u矩阵,令牌\u ID)
结果=tf.段和(emb,单词ID)
使用tf.Session()作为sess:
打印(sess.run(结果))
[[4. 4. 4.]
[3. 3. 3.]
[3. 3. 3.]]