Используя более 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 размерами или меньше.