【发布时间】:2023-03-28 03:30:01
【问题描述】:
我有一个这样的张量:
tf_docs = tf.constant([[0, 2, 1],
[1, 2, 2],
[2, 1, 3],
[5, 2, 2]], dtype=tf.int32)
我需要将每一行乘以其余行,元素明智,然后总结结果。
当第一行完成后,我们将处理第二行和其余行......
所以结果会是这样:它将是4*4,因为我们有 4 行
result_tf =[[0, 6, 5, 6 ],
[6, 0, 10, 13],
[5, 10, 3, 18],
[6, 13, 18, 0]]
让我解释一下result_tf中的每个元素(矩阵是对称的。
第一行:
0*1 + 2*2 + 1*2 = 6
0*2 + 2*1 + 1*3 = 5
0*5 + 2*2 + 1*2 = 6
第二行:
1*2 + 2*1 + 2*3 = 10
1*5 + 2*2 + 2*2 = 13
第三行:
2*5 + 1*2 + 3*2 = 18
这些是我如何形成矩阵的上侧。
那么诊断中的值是:
(0,0) 在任何列中都没有co-occurred 所以0
(1,1) 在任何列中都没有co-occurred 所以0
(2,2) 在第二列有co-occurred 2 时间,在第三列有1 time 所以3
(3,3) 没有同时出现在任何列中,所以0
我觉得这需要更多的创造力来解决,而不是了解技术。 (从字面上看,如果您知道共现的概念,我正在计算同一矩阵上的共现)
我做了什么:
我可以使用 for 循环轻松做到这一点。但是我需要完成 tensorflow 操作。我找不到类似这个问题的任何东西。 我也在考虑使用 collect 每次都获取指定的行并将它们连接起来。但是这种方式不是动态的,我的行和列都比这大,所以这个解决方案不可行
【问题讨论】:
标签: python tensorflow