Caojinshan852 2023-04-07 15:25 采纳率: 78.6%
浏览 37
已结题

模型的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)

  • 写回答

1条回答 默认 最新

  • 桃宝护卫队 2023-04-07 15:32
    关注

    在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)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月7日
  • 已采纳回答 4月7日
  • 创建了问题 4月7日

悬赏问题

  • ¥20 三爪夹具,在重物的影响下,三爪受力怎么分析?能把三个爪当成螺栓吗?
  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联
  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目