张量的矩阵范数

2024-05-20 00:55:15 发布

您现在位置:Python中文网/ 问答频道 /正文

为了使用TensorFlow框架得到这个公式,我需要计算Frobenius范数:

Formula

其中w是具有50行和100列的矩阵。

我试着写些东西,但我不知道如何填写axis参数。

tf.pow(
    tf.norm(x, ord='fro', axis=?), 2
)

根据TensorFlow docs,我必须使用一个2元组(或一个2-列表),因为它决定了在张量中计算矩阵范数的轴,但我只需要一个普通的Frobenius范数。例如,在SciPy中,我可以在不指定任何轴的情况下执行此操作。

那么,我应该用什么作为axis来模拟SciPy函数?


Tags: 框架范数normdocs参数tftensorflow矩阵
3条回答

因此Frobenius范数是nxm矩阵的和,但是tf.norm允许批量处理多个向量和矩阵。

为了更好地理解,假设你有一个3阶张量:

t = [[[2], [4], [6]], [[8], [10], [12]], [[14], [16], [18]]]

它可以看作是多个矩阵在一个方向上对齐,但函数本身无法确定是哪一个。它可以是以下矩阵的一批:

[2, 4, 6] , [8 ,10, 12], [14, 16, 18]

或者

[2 8 14], [4, 10, 16], [6, 12, 18]

所以基本上axis告诉你在用Frobenius范数求和时要考虑的方向。

在您的例子中,任何[1,2][-2,-1]都可以做到。

Negative indices are supported. Example: If you are passing a tensor that can be either a matrix or a batch of matrices at runtime, pass axis=[-2,-1] instead of axis=None to make sure that matrix norms are computed.

我刚刚测试了一下,[-2,-1]有效。

与张量的维数无关

tf.sqrt(tf.reduce_sum(tf.square(w)))

应该会成功的。

相关问题 更多 >