使用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
答案 0 :(得分:1)
我不知道张量流很好,但是可能是因为sines
和cosines
是Tensor
对象,尚未(尚未)评估,而np.concatenate
是一个NumPy函数需要常规(即已评估)数组?