Используя более 26 индексов в tf.einsum?

Можно ли использовать более 26 строчных букв в качестве индексов в tf.einsum?

Numpy позволяет также использовать заглавные буквы, т.е. np.einsum('zA,AB->zB',M1,M2) в то время как tf.einsum возвращает ошибку.

Это было бы очень полезно для контрактных тензорных сетей.

1 ответ

Это не возможно в настоящее время.

TensorFlow проверяет уравнение, переданное einsum используя следующее регулярное выражение:

match = re.match('([a-z,]+)(->[a-z]*)?', equation)
if not match:
  raise ValueError(
      'Indices have incorrect format: %s' % equation
  )

Любой персонаж не в классе [a-z] заставит функцию вызвать ошибку. С TensorFlow's einsum функция не поддерживает эллипсы ... и все оси должны быть явно помечены, это означает, что могут работать только тензоры с 26 размерами или меньше.

Другие вопросы по тегам