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

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

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!