我知道np.eye
会生成单位矩阵。我的身份矩阵是
在线性代数中,大小为n的恒等矩阵(有时有时被称为
unit matrix
)是n × n
方阵,主对角线上有一个,其他地方为零。
我知道我们可以使用Numpy
在np.identity(3)
中创建它。
但是,我想知道如何在python中拥有一个身份张量。
我想在张量乘法中使用恒等张量。如下所示:
其中G = Er ×1 U1 ×2 U2 ...×M
UM
是变换张量,而Er ∈
R
r×r×...×r
是一个身份张量(对角元素为1,所有其他条目均为0)。我需要具有用于生成identity tensor
的代码。
谢谢。
答案 0 :(得分:1)
使用np.identity
代替tf.eye
:
tf.eye(2)
# [[1., 0.],
# [0., 1.]]
答案 1 :(得分:1)
可以使用一个函数来完成该函数,如果所有索引都相等,则该函数返回1,但是必须对其进行矢量化处理才能在np.fromfunction中使用
np.fromfunction(np.vectorize(lambda i,j,k: int(i==j==k)), (3,3,3))
输出:
array([[[1, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 1, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 1]]])
答案 2 :(得分:0)
像这样吗?
def nd_id(n, d):
out = np.zeros( (n,) * d )
out[ [np.arange(n)] * d ] = 1
return out
测试
nd_id(3,3)
Out[]:
array([[[ 1., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]],
[[ 0., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 0.]],
[[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 1.]]])