gpt4 book ai didi

python - 在 Keras 中定义新 Lambda 层时出现 reshape 错误

转载 作者:行者123 更新时间:2023-12-01 07:35:58 32 4
gpt4 key购买 nike

我试图在 Keras 中实现乘法层,但收到多个与 Reshape 相关的错误。虽然现在都解决了,但我仍然怀疑为什么会这样。这是我实现的代码块:

out2 = Dense(540, kernel_initializer='glorot_normal', activation='linear')(out2)
out2 = LeakyReLU(alpha=.2)(out2)
out2 = Reshape((9, 4, 15))(out2)
out2 = Lambda(lambda x: K.dot(K.permute_dimensions(x, (0, 2, 1, 3)), K.permute_dimensions(x, (0, 2, 3, 1))), output_shape=(4,9,9))(out2)
out2 = Dense(324, kernel_initializer='glorot_normal', activation='linear')(out2)
# K.dot should be of size (-1, 4, 9, 9), so I set output 324, and later on, reshape the ata
out2 = LeakyReLU(alpha=.2)(out2)
out2 = Reshape((-1, 4, 9, 9))(out2)
out2 = Permute((0, 2, 3, 1))(out2)

现在效果很好。但我做了三件事让我感到不舒服:

  1. 我曾经使用 out2 = Reshape((-1, 9, 4, 15))(out2) 而不是 out2 = Reshape((9, 4, 15 ))(out2) 我遇到了错误

    ValueError:维度必须为 5,但对于输入形状为:[?,?,9,4,15]、[4] 的“lambda_1/transpose”(op:“Transpose”),维度为 4。

显然,我没有考虑批量大小维度。

  • 现在我尝试将行 out2 = Reshape((-1, 4, 9, 9))(out2) 更正为 out2 = Reshape((4, 9) , 9))(out2) 使用相同的概念,但是随后,它会抛出错误

    ValueError:新数组的总大小必须保持不变

  • 我不明白这种不一致。

  • 最后,我想知道删除 output_shape=(4,9,9) 是否会对代码造成任何错误。
  • 最佳答案

    关于批量大小的问题,Keras 会自动处理。层代表要应用于批处理的函数,这只是一个约定,而 Keras 的任务是将此类函数应用于模型所输入的每个批处理。因此,基本上,在定义图层时应该忽略批量大小。

    此外,Dense 层无法按您的预期工作。它应用于输入的最后一个维度。如果您想将此时的数据作为常规 MLP 处理,您可以在 Dense 之前使用 Flatten(),就像使用以常规完全结尾的 CNN 一样连接层(当然您可以随后 reshape 它)。

    总而言之,你可以这样做:

    out2 = Dense(540, kernel_initializer='glorot_normal', activation='linear')(out2)
    out2 = LeakyReLU(alpha=.2)(out2)
    out2 = Reshape((9, 4, 15))(out2)
    out2 = Lambda(lambda x: K.dot(K.permute_dimensions(x, (0, 2, 1, 3)), K.permute_dimensions(x, (0, 2, 3, 1))), output_shape=(4,9,9))(out2)
    out2 = Flatten()(out2)
    out2 = Dense(324, kernel_initializer='glorot_normal', activation='linear')(out2)
    out2 = LeakyReLU(alpha=.2)(out2)
    out2 = Reshape((4, 9, 9))(out2)

    关于python - 在 Keras 中定义新 Lambda 层时出现 reshape 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56990472/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com