You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为einsum运算添加batch维度?TensorFlow实现验证

带Batch维度的Einstein求和表达式验证

你的Einstein求和表达式修改是正确的,完全符合需求。

逻辑说明

原无batch维度时,表达式'ijh, jhu -> ihu'的核心是对两个张量的j维度做求和收缩,最终保留i(目标节点)、h(注意力头)、u(特征维度)。

添加batch维度后:

  • 输入张量的batch维度b是两个张量的首个维度,仅作为独立批次标识,不参与任何维度收缩
  • 表达式'bijh, bjhu -> bihu'中,b在输入和输出中都保留,其余维度的收缩逻辑和原表达式完全一致:对j维度求和,最终得到(batch_size, n_nodes, n_heads, n_units)的输出,完全匹配需求。

修改后的完整代码示例

import tensorflow as tf

tf.random.set_seed(0)

# 添加batch维度,示例batch_size=3
tensor = tf.random.uniform(shape=(3, 2, 2, 2))  # Shape: (batch_size, n_nodes, n_nodes, n_heads)
tensor1 = tf.random.uniform(shape=(3, 2, 2, 2)) # Shape: (batch_size, n_nodes, n_heads, n_units)

print("输入tensor形状:", tensor.shape)
print("输入tensor1形状:", tensor1.shape)
print("-" * 50)

einsum_tensor = tf.einsum('bijh, bjhu -> bihu', tensor, tensor1)

print("输出einsum_tensor形状:", einsum_tensor.shape)
print(einsum_tensor)

运行后会输出形状为(3, 2, 2, 2)的结果,符合预期。

内容的提问来源于stack exchange,提问作者Ali Khalili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:25:04