Как сгенерировать тензор идентичности с python? - PullRequest
0 голосов
/ 04 февраля 2019

Я знаю о np.eye, который генерирует единичную матрицу.Я имею в виду единичную матрицу как

. В линейной алгебре единичная матрица, или иногда неоднозначно называемая unit matrix, размера n представляет собой квадратную матрицу n × n с единицами на главной диагонали и нулями.в другом месте.

И я знаю, что мы можем создать его в Numpy с np.identity(3).

Но я хотел бы знать, как я могу иметь личностьТензор в питоне.

Я бы хотел использовать тензор тождественности при умножении тензоров.Как показано ниже:

, где G = Er ×1 U1 ×2 U2 ...×M UM - тензор преобразования, а Er ∈ R r×r×...×r - тождественный тензор (диагональные элементы равны 1, а все остальные записи равны 0).Мне нужен код для генерации identity tensor.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Как то так?

def nd_id(n, d):
    out = np.zeros( (n,) * d )
    out[ tuple([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.]]])
0 голосов
/ 04 февраля 2019

Вместо np.identity используйте tf.eye:

tf.eye(2)
# [[1., 0.],
#  [0., 1.]]
...