模型的batch_size与层的batch_size不一致,该怎么办呢?

在同一个模型中,有两个相同batch_size但不同的输入,分别进入不同的层,为什么经过多头注意力层的输出batch_size会是其输入的batch_size,而不是根据模型设置的batch_size呢?(注意力层的batch_size=None,也没有显式设置过,就算设置为固定值,其输出还是整个输入的batch_size)
我想要让经过这一层输出的batch_size和整个模型的保持一致,应该怎么办呢,求各位指点指点哇。

train_x_att_input = Input(shape=(train_x_att.shape[1], train_x_att.shape[2]))
    multi_head_attition_layer = tf.keras.layers.MultiHeadAttention(num_heads=num_heads, key_dim=key_dim,
                                                                   output_shape=num_heads * key_dim, batch_size=None)
    concat_att = multi_head_attition_layer(train_x_att, train_x_att)   # train_x_att.shape=(177,14,15)
    print(concat_att.shape)  # 输出(177,14,14) 为什么不是(None,14,14)

在tensorflow中,如果一个层没有指定输入的batch_size,则该层的输出将自动采用输入张量的batch_size,这意味着如果你的输入张量的batch_size为None,则输出也将是None。因此,在你的情况下,由于输入张量的batch_size为None,所以输出也是None。

要让经过该层输出的batch_size与整个模型的batch_size保持一致,你可以在定义输入张量时明确指定batch_size的大小,而不是使用None。例如,你可以这样定义输入张量:

train_x_att_input = Input(shape=(train_x_att.shape[1], train_x_att.shape[2]), batch_size=batch_size)