gpt4 book ai didi

python - 当 LSTM 层的输入数量大于或小于该层中 LSTM 单元的数量时,Keras 会做什么?

转载 作者:行者123 更新时间:2023-12-04 01:35:45 25 4
gpt4 key购买 nike

请看下面的 python 代码,我在代码中我认为需要强调信息的地方添加了注释。

import keras
import numpy

def build_model():
model = keras.models.Sequential()
model.add(keras.layers.LSTM(3, input_shape = (3, 1), activation = 'elu'))# Number of LSTM cells in this layer = 3.
return model

def build_data():
inputs = [1, 2, 3, 4, 5, 6, 7, 8, 9]
outputs = [10, 11, 12, 13, 14, 15, 16, 17, 18]
inputs = numpy.array(inputs)
outputs = numpy.array(outputs)
inputs = inputs.reshape(3, 3, 1)# Number of samples = 3, Number of input vectors in each sample = 3, size of each input vector = 3.
outputs = outputs.reshape(3, 3)# Number of target samples = 3, Number of outputs per target sample = 3.
return inputs, outputs

def train():
model = build_model()
model.summary()
model.compile(optimizer= 'adam', loss='mean_absolute_error', metrics=['accuracy'])
x, y = build_data()
model.fit(x, y, batch_size = 1, epochs = 4000)
model.save("LSTM_testModel")

def apply():
model = keras.models.load_model("LSTM_testModel")
input = [[[7], [8], [9]]]
input = numpy.array(input)
print(model.predict(input))

def main():
train()

main()

我的理解是,对于每个输入样本,有 3 个输入向量。每个输入向量进入一个 LSTM 单元。即对于样本 1,输入向量 1 进入 LSTM 单元 1,输入向量 2 进入 LSTM 单元 2,依此类推。

查看互联网上的教程,我发现 LSTM 单元的数量远大于输入向量的数量,例如300 个 LSTM 单元。

例如,假设每个样本有 3 个输入向量,哪些输入会进入剩余的 297 个 LSTM 单元?

我尝试将模型编译为具有 2 个 LSTM 单元并且它仍然接受每个样本的 3 个输入向量,尽管我必须更改训练数据中的目标输出以适应这个(更改维度)。那么每个样本的第三个输入向量发生了什么……被忽略了吗?

Image taken from: http://karpathy.github.io/2015/05/21/rnn-effectiveness/

我相信上图显示每个输入向量(任意场景的)都映射到特定的 RNN 单元。我可能误解了它。上图取自以下网址:http://karpathy.github.io/2015/05/21/rnn-effectiveness/

最佳答案

我将尝试回答您的一些问题,然后整合评论中提供的信息以确保完整性,为您和社区带来好处 .

正如 Matias 在评论中提到的,无论 Number of Inputs 是多于还是少于 Number of Units/Neurons,它都会像这样连接一个全连接网络,如下所示。

LSTM Fully Connected Network

为了理解 RNN/LSTM 的内部工作原理,我们假设我们有

输入特征数 => 3 => F1、F2 和 F3

时间步数 => 2 => 0 和 1

隐藏层数 => 1

每个隐藏层中的神经元数=> 5

然后内部实际发生的事情可以在下面的屏幕截图中表示:

Understanding RNN/LSTM

enter image description here

您还询问了有关将单词分配给 LSTM Cell 的问题。不确定您指的是哪个链接以及它是否正确但简单来说(此屏幕截图中的单词实际上将被嵌入向量替换),您可以理解 LSTM 如何处理文本,如图所示在下面的屏幕截图中:

enter image description here

更多信息请引用OverLordGoldDragon的精彩解释和 Daniel Moller .

希望这对您有所帮助。快乐学习!

关于python - 当 LSTM 层的输入数量大于或小于该层中 LSTM 单元的数量时,Keras 会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59672827/

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