python - 使用两个张量向量创建 N x M 张量矩阵,并为每个 (n,m) 对应用一个函数
问题描述
我有两个形状的张量 X 和 Z,(100,)
我想创建一个张量 X x Z,这将导致形状为(100, 100)
.
对于这个矩阵中的每个对元素,我想应用一些我已经定义的函数,即 fn(x,z) 用于矩阵中的每个可能组合。
我是 TensorFlow 的新手,我习惯于按顺序思考,在处理 numpy 数组时,每个向量上有两个 for 循环。
我怎样才能在 TensorFlow 中做到这一点?非常感谢。
解决方案
对于一般问题
您可以创建一个自定义层来解决这个问题。
import tensorflow as tf
from tensorflow.keras.layers import Layer
def fn(x, y):
return x + y
class PairMatrix(Layer):
def __init__(self, func=None):
super(PairMatrix, self).__init__()
self.func = func
def call(self, inputs, **kwargs):
X, Y = tf.meshgrid(inputs[0], inputs[1])
return self.func(X, Y)
x = tf.constant([1, 2, 3])
y = tf.constant([1, 2, 3])
z = PairMatrix(func=fn).apply([x, y])
这应该创建一个将函数作为参数的层。调用时,该函数将应用于输入 x 和 y 的构造网格。
在上面的简单测试用例中,产生的输出是:
z = tf.Tensor([[2 3 4]
[3 4 5]
[4 5 6]], shape=(3, 3), dtype=int32)
关于你的评论
如果只是您感兴趣的协方差,您可以使用tfp.stats.covariance
推荐阅读
- javascript - 如何找到数组中相似对象的平均值并将它们输出到一个对象中?
- python - 在 ContextManager 中捕获异常?
- c# - 使用 OData 和自定义查询选项获取路线
- python - 如何获取每个值
- 并使用python标记
- uml - 在用例中,为什么参与者(或表示)在系统的系统边界之外?
- jquery - 选中复选框时使用 jquery 显示/隐藏 div
- java - Java:写一个字符串n次
- mysql - Nodejs/express 从客户端查询 MySQL 数据的最佳方式
- image - 颤动中文本上的纹理(图像)
- java - 使用 FileReader 时如何写入文件路径?