Je connais np.eye
qui génère une matrice d'identité. Je veux dire la matrice d'identité comme
En algèbre linéaire, la matrice identité, ou parfois appelée de manière ambiguë
matrice unitaire
, de taille n est la matrice carréen × n
avec des uns sur la diagonale principale et des zéros ailleurs.
Et je sais que nous pouvons le créer dans Numpy
avec np.identity (3)
.
Mais j'aimerais savoir comment puis-je avoir un Tensor d'identité en python.
Je voudrais utiliser le tenseur d'identité dans la multiplication des tenseurs. Comme ci-dessous:
où G = Er × 1 U1 × 2 U2 ... × M
UM
est un tenseur de transformation, et Er ∈
R
r × r × ... × r
est un tenseur d'identité (les éléments diagonaux sont 1, et toutes les autres entrées sont 0). J'ai besoin du code pour générer le tenseur d'identité
.
Merci d'avance.
3 Réponses :
Au lieu de np.identity
, utilisez tf.eye
:
tf.eye(2) # [[1., 0.], # [0., 1.]]
Quelque chose comme ça?
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.]]])
Test
def nd_id(n, d): out = np.zeros( (n,) * d ) out[ tuple([np.arange(n)] * d) ] = 1 return out
Merci de votre aide. Je veux savoir comment puis-je calculer la covariance des tenseurs en python? est-ce la même chose avec les matrices?
Poser une autre question
Cela peut être fait avec une fonction qui en renvoie un si tous les indices sont égaux, mais elle doit être vectorisée pour être utilisée dans np.fromfunction
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]]])
Sortie:
np.fromfunction(np.vectorize(lambda i,j,k: int(i==j==k)), (3,3,3))
Quelle est la forme souhaitée?