gpt4 book ai didi

nlp - Keras SimpleRNN 输入形状和掩蔽

转载 作者:行者123 更新时间:2023-12-02 06:21:08 25 4
gpt4 key购买 nike

Keras 新手警报!!!

我有一些与 Keras 中的循环层相关的问题(通过 theano)

  1. 关于时间步长,输入应该如何格式化(例如,我想要一个具有 3 个时间步长的层,1 个 future 时间步长,1 个过去时间步长,1 个当前时间步长)我看到一些 answers API 建议填充并使用嵌入层或使用时间窗口(本例中为 3)来塑造输入,无论如何我都无法了解 API 的情况,而且 SimpleRNN 示例很少而且似乎并不多同意。
  2. 输入时间窗口格式如何与 mask 层配合使用?
  3. 一些相关答案建议使用嵌入层执行屏蔽。无论如何,掩蔽与嵌入层有什么关系,嵌入层基本上不是 1-hot 词嵌入吗? (我的应用程序将使用音素或字符作为输入)

最佳答案

我可以开始回答,但这个问题非常广泛,所以我很感激有关改进我的答案的建议。

  1. Keras SimpleRNN 需要大小为(num_training_examples、num_timesteps、num_features)的输入。

例如,假设我有每小时经过十字路口的汽车数量的计数序列(小例子只是为了说明):

X = np.array([[10, 14, 2, 5], [12, 15, 1, 4], [13, 10, 0, 0]])

旁白:请注意,我进行了四个小时的观察,最后两个小时没有汽车驶过。这是一个对输入进行零填充的示例,这意味着通过在较短序列的末尾添加 0 以匹配最长序列的长度,使所有序列的长度相同。

Keras 期望以下输入形状:(X.shape[0], X.shape 1, 1),这意味着我可以这样做:

X_train = np.reshape(X, (X.shape[0], X.shape[1], 1))

然后我可以将其输入 RNN:

model = Sequential()
model.add(SimpleRNN(units=10, activation='relu', input_shape = (X.shape[1], X.shape[2])))

您可以添加更多层,或添加正则化等,具体取决于任务的性质。

对于您的特定应用程序,我认为您需要将输入重新调整为每行 3 个元素(上一个时间步、当前步、下一个步)。

  1. 我对 mask 层了解不多,但是here is a good place to start .

  2. 据我所知,嵌入与屏蔽无关,但您可以屏蔽嵌入。

希望这提供了一个良好的起点!

关于nlp - Keras SimpleRNN 输入形状和掩蔽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39117878/

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