首页 > 试题广场 >

位置编码计算器

[编程题]位置编码计算器
  • 热度指数:299 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
实现Transformers的Positional Encoding层。
使用Transformer架构中指定的正弦和余弦函数计算序列长度(位置)和模型维度(`d_model`)的定位编码。如果`position`为0,或`d_model`小于或等于0,则函数应返回-1。输出应为类型为'float16'的numpy数组。

输入描述:
在一行上输入两个整数,分别表示序列长度(位置)和模型维度(`d_model`),两个数之间用空格分隔。


输出描述:
输出一个numpy数组,表示位置编码。返回时指定dtype为np.float16
示例1

输入

2 8

输出

[[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0], [0.84130859375, 0.099853515625, 0.01000213623046875, 0.0010004043579101562, 0.54052734375, 0.9951171875, 1.0, 1.0]]

备注:
1.对应的输入、输出已给出,您只用实现核心功能函数即可。
2.支持numpy、scipy、pandas、scikit-learn库。

头像 牛客题解官
发表于 2025-02-06 10:41:28
位置编码是Transformer模型中用于处理序列数据的一种技术,它通过将输入序列中的每个位置映射到一个固定长度的向量,从而为模型提供位置信息。其具体步骤如下: 1. 初始化位置编码矩阵 创建一个与输入序列长度相同的矩阵,用于存储每个位置的编码向量。 2. 计算位置编码 对于输入序列中的每个位 展开全文