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

如何拼接[None,192]与[1,128]张量以得到[None,328]的神经网络输出

问题原因

Concatenate层的拼接规则是:所有输入张量除了拼接轴之外的其他维度必须完全相等。你当前的两个输入张量形状分别为(None, 192)和(1, 128),第一维一个是动态batch维度、一个是固定值1,不符合拼接要求,因此触发报错。

解决方案

你需要先把形状为(1,128)的常量张量b,沿着第一维复制和输入a的batch大小相等的次数,得到形状为(None, 128)的张量后再做拼接。以下是TensorFlow/Keras环境下的实现代码:

import tensorflow as tf
from tensorflow.keras.layers import Concatenate, Lambda

# 你已定义的常量张量b,形状为(1,128)
b = tf.constant(value=..., shape=(1, 128))

# 自定义Lambda层实现b的动态复制,匹配a的batch维度
def expand_b(inputs):
    input_a, input_b = inputs
    batch_size = tf.shape(input_a)[0]
    # 沿第一维复制batch_size次,第二维保持不变
    return tf.tile(input_b, [batch_size, 1])

b_expanded = Lambda(expand_b)([a, b])

# 执行拼接,输出形状为(None, 320)
c = Concatenate(axis=-1, name='DQN_Input')([a, b_expanded])

注:如果需要输出形状为(None,328),请检查你的张量维度是否书写错误:192+128=320,若要得到320以外的结果,需要对应调整a或b的特征维度长度。


内容的提问来源于stack exchange,提问作者prakash gawas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:06:04