python - 如何从张量流中的向量构造成对差异的平方?
问题描述
我在TensorFlow中有一个N维的一维向量,
如何构造成对平方差的总和?
例子
输入向量
[1,2,3]
输出
6
计算为
(1-2)^2+(1-3)^2+(2-3)^2.
如果我将输入作为 N 维向量 l,则输出应该是 sigma_{i,j}((l_i-l_j)^2)。
添加的问题:如果我有一个二维矩阵并且想对矩阵的每一行执行相同的过程,然后对所有行的结果进行平均,我该怎么做?非常感谢!
解决方案
对于成对差异,减去input
和转置input
并只取上三角部分,如:
pair_diff = tf.matrix_band_part(a[...,None] -
tf.transpose(a[...,None]), 0, -1)
然后,您可以对差异进行平方和求和。
代码:
a = tf.constant([1,2,3])
pair_diff = tf.matrix_band_part(a[...,None] -
tf.transpose(a[...,None]), 0, -1)
output = tf.reduce_sum(tf.square(pair_diff))
with tf.Session() as sess:
print(sess.run(output))
# 6
推荐阅读
- spring-boot - Spring Webflux Stacktrace(Spring Boot 2.1.x -> 2.2.x)问题
- javascript - JS中对象的键值对与递归的所有可能组合
- php - 如何传递类别 ID 以形成帖子
- regex - 在 Perl 中的某个特定匹配项下方编辑/匹配字符串 n 行?
- haskell - 块缩进会导致错误吗?
- html - Sticky footer with background image
- python - 如何从scala中的avro文件中读取元数据
- html - How do I stack two rows on top of each other using Bootstrap?
- sparql - Virtuoso SPARQL Bug 与 BIND
- c# - 如何在 Azure Function 中定义“外部”StorageAccount?