gpt4 book ai didi

python - 向用功能 API 编写的 keras RNN 进行输入

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:53 25 4
gpt4 key购买 nike

我在使用用功能 API 编写的 keras RNN 进行屏蔽时遇到一些问题。这个想法是用形状 (batch_size, timesteps, 100) 掩盖一个零填充的张量,并将其输入到 SimpleRNN 中。现在我有以下内容:

input = keras.layers.Input(shape=(None, 100))

mask_layer = keras.layers.Masking(mask_value=0.)
mask = mask_layer(input)

rnn = keras.layers.SimpleRNN(20)
x = rnn(input, mask=mask)

但是,这不起作用,因为它会引发以下 InvalidArgumentError:

InvalidArgumentError: Dimension 1 in both shapes must be equal, but are 20 and 2000. Shapes are [?,20] and [?,2000]. for 'Select' (op: 'Select') with input shapes: [?,2000], [?,20], [?,20].

通过将输入的形状更改为 (None, 1) - 每个元素都是单个整数的顺序输入,而不是 n 维嵌入 - 我已经让这段代码正常工作了。我也有使用 Sequential API 的相同想法,但我不能这样做,因为我的最终模型将有多个输入和输出。我也不想强制输入的形状为 (None, 1),因为我想在预处理期间交换不同的嵌入模型(Word2Vec 等),这意味着我的输入将从一开始就嵌入向量。

在使用 keras 的函数式 API 时,有人可以帮助我将掩码与 RNN 结合使用吗?

最佳答案

根据Masking and Padding with Keras ,你不需要在RNN层上手动设置mask,在下面的代码中RNN层将自动接收mask。

import keras

input_layer = keras.layers.Input(shape=(None, 100))

masked_layer = keras.layers.Masking(mask_value=0.)(input_layer)

rnn_layer = keras.layers.SimpleRNN(20)(masked_layer)

关于python - 向用功能 API 编写的 keras RNN 进行输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59907559/

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