为了使用TensorFlow框架得到这个公式,我需要计算Frobenius范数:
其中w
是具有50行和100列的矩阵。
我试着写些东西,但我不知道如何填写axis
参数。
tf.pow(
tf.norm(x, ord='fro', axis=?), 2
)
根据TensorFlow docs,我必须使用一个2元组(或一个2-列表),因为它决定了在张量中计算矩阵范数的轴,但我只需要一个普通的Frobenius范数。例如,在SciPy
中,我可以在不指定任何轴的情况下执行此操作。
那么,我应该用什么作为axis
来模拟SciPy
函数?
因此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]
都可以做到。我刚刚测试了一下,[-2,-1]有效。
与张量的维数无关
应该会成功的。
相关问题 更多 >
编程相关推荐