Нулевые массивы не могут быть объединены, но мои массивы не являются нульмерными - PullRequest
1 голос
/ 08 июля 2019

Я сталкиваюсь с ошибкой при использовании np.concatenate. Код, который я использую:

def get_angles(pos, i, d_model):
    angle_rates = 1 / np.power(10000, (2 * (i // 2)) / np.float32(d_model))
    return pos * angle_rates


def positional_encoding(position, d_model):
    angle_rads = get_angles(np.arange(position)[:, np.newaxis],
                            np.arange(d_model)[np.newaxis, :],
                            d_model)

    sines = tf.math.sin(angle_rads[:, 0::2])
    cosines = tf.math.cos(angle_rads[:, 1::2])

    pos_encoding = np.concatenate([sines, cosines], axis=-1)
    pos_encoding = pos_encoding[np.newaxis, ...]

    return tf.cast(pos_encoding, dtype=tf.float32)

Строка кода, вызывающая проблемы, - это часть np.concatenate в функции positional_encoding. Когда программа попадает в эту часть, она выплевывает

ValueError: zero-dimensional arrays cannot be concatenated

но когда я проверяю размеры для sines и cosines, каждый из них имеет размеры (50, 25).

Есть ли что-то, чего мне не хватает при выполнении этих операций?

Спасибо.

Редактировать

position = 50

d_model = 512

1 Ответ

1 голос
/ 08 июля 2019

Я не знаю, хорошо ли тензорный поток, но может быть так, потому что sines и cosines являются Tensor объектами, которые (еще) не были оценены, а np.concatenate является функцией NumPy, которая ожидает регулярного (то есть оцененного)) массивы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...