gpt4 book ai didi

python - 如何使用 keras/tensorflow 根据不同向量中的索引求和值?

转载 作者:行者123 更新时间:2023-11-30 09:43:39 27 4
gpt4 key购买 nike

我是新来的,我有一个关于 Keras/Tensorflow 中张量索引的问题要问:

我有一个长度为N的向量,其中包含词汇表中单词的索引(索引可能重复)。该向量表示一个句子,例如 (40, 25, 99, 26, 34, 99, 100, 100...)我还有另一个向量,或者实际上是一个矩阵(因为它是一批示例),长度相同 N,其中原始向量中的每个单词都分配了一个权重 W_i >。我想总结整个句子中特定单词的权重,以便获得从单词索引到句子中该单词的权重总和的映射,并且我想以矢量化的方式进行。例如,假设句子为 (1, 2, 3, 4, 5, 3),权重为 (0, 1, 0.5, 0.1, 0.6, 0.5) code>,我希望结果是一些映射:

1->0
2->1
3->1
4->0.1
5->0.6

如何实现类似的目标而不需要迭代每个元素?我正在沿着稀疏张量的方向思考一些事情(因为可能的词汇量非常大),但我不知道如何有效地实现它。有人可以帮忙吗?我基本上想实现一个指针生成器网络,并且在计算复制输入单词而不是生成输入单词的概率时需要这部分。

最佳答案

您需要tf.bincount() ,它计算整数数组中每个值的出现次数。一个例子:

import tensorflow as tf
import numpy as np

indices_tf = tf.placeholder(shape=(None,None),dtype=tf.int32)
weights_tf = tf.placeholder(shape=(None,None),dtype=tf.float32)

# The returned index counts from 0
result = tf.bincount(indices_tf,weights_tf)

indices_data = np.array([1, 2, 3, 4, 5, 3])
weights_data = np.array([0, 1, 0.5, 0.1, 0.6, 0.5])

with tf.Session() as sess:
print(sess.run(result, feed_dict={indices_tf:[indices_data],weights_tf:[weights_data]}))
print(sess.run(result, feed_dict={indices_tf: [indices_data]*2, weights_tf: [weights_data]*2}))

# print
[0. 0. 1. 1. 0.1 0.6]
[0. 0. 2. 2. 0.2 1.2]

关于python - 如何使用 keras/tensorflow 根据不同向量中的索引求和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55622294/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com