gpt4 book ai didi

machine-learning - 仅在 Keras 中对某些输入进行 BatchNormalization

转载 作者:行者123 更新时间:2023-11-30 08:53:54 24 4
gpt4 key购买 nike

我的 LSTM 网络有 5 个输入。第一个输入的典型值为 1000 到 3000。其余输入的值为 -1 到 1。

我想插入 BatchNormalization 作为第一层。但输入 2-5 已经在 -1 和 1 之间,并且第一个输入比第一个输入大得多。也就是说,我想仅对第一个输入应用批量归一化,并保留输入 2-5 不变。然后第一个(标准化)输入和 2-5 个输入应传递到 LSTM 层。

      +----+   +---+
1 -->| BN |-->| |
+----+ | L |
2 ----------->| S |
3 ----------->| T |
4 ----------->| M |
5 ----------->| |
+---+

如何在 Keras 中完成?

我认为我可以为第一个输入使用 BatchNormalization 裸层创建模型,然后将其与其余层连接起来。但我不确定也不知道到底如何做到这一点。

最佳答案

尝试以下定义:

from keras.layers.merge import concatenate

input_tensor = Input(shape=(timesteps, 5))

# now let's split tensors
split_1 = Lambda(lambda x: x[:, :, :1])(input_tensor)
split_2 = Lambda(lambda x: x[:, :, 1:])(input_tensor)

split_1 = BatchNormalization()(split_1)

# now let's concatenate them again
follow = concatenate([split_1, split_2])

但正如 Daniel 在评论中提到的 - 最好对数据进行标准化以处理此类不一致 - 使用 BatchNormalization 可能会导致性能更差。

关于machine-learning - 仅在 Keras 中对某些输入进行 BatchNormalization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47137980/

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