如何解决TensorFlow中张量拼接的形状不匹配错误?
解决方案
核心问题
你的测试输入中,side_input的形状是(2,)(一维张量),但模型期望的是(None,2)(二维批量张量),而BERT输出的是(1,512)(二维批量张量),二者秩(维度数)不一致,导致ConcatOp报错。
修复步骤
直接调整测试输入的side_input形状,给它加上批量维度:
- 把测试代码里的
tf.reshape([0.3, 0.3], (2))替换成:
或者用tf.reshape([0.3, 0.3], (1, 2))tf.expand_dims更直观:tf.expand_dims([0.3, 0.3], axis=0)
原理说明
模型定义时,side_input的(None,2)中,None代表批量维度,意味着输入必须是「批量数×2」的二维张量。测试时你传入的是单个样本的2个特征,需要显式添加批量维度(批量数=1),让side_input形状变为(1,2),和BERT输出的(1,512)保持相同的秩,这样就能在特征维度(axis=1)正常拼接。
内容的提问来源于stack exchange,提问作者Morgan
相关产品推荐
相关产品推荐

