Keras 3D目标预测
Keras 3D target prediction
我需要一个模型来输出形状为 (3,2)
的回归目标,其中 3
是事件数,每个事件都有 X and Y
坐标。输入数据可以跨越 1 个或多个时间步长。这是我的模型的一个例子,当输入有一个时间步长时。
model = Sequential()
model.add(Embedding(vocab_size + 1, embedding, input_length=1))
model.add(LSTM(hidden, recurrent_dropout=0.1, return_sequences=True))
model.add(Flatten())
model.add(RepeatVector(3))
model.add(LSTM(2, return_sequences=True))
模型编译并运行,但它在 3 个事件中为 X, Y
生成相同的值。我认为这是因为 RepeatVector
层。我还能如何确保我的输出是 (None, 3, 2)
?
首先提示:如果一个 "sentence" 应该生成 3 个事件,我认为你不应该使用 input_length=1
,而应该使用 input_length=lengthOfTheSentences
。
LSTM
层处理长度为 1 的序列并不是优势。
您说 RepeatVector
导致了 3 次相同的结果是正确的。
现在,根据 "how is your model supposed to detect those events",不同的方法可能会更好。
- 这些句子是"a sequence where the events may be found 'along'"吗?
- 这些句子是"an idea that determines the events statically"吗?
按照第二种方法,我会说你可以像这样使用第一个 LSTM:
LSTM(hidden, return_sequence=False)
其中 hidden 必须为 6。(您可以使用更多的隐藏层 return_sequences=True
,但重要的是最后一个具有与 6 兼容的输出量)。
然后您以事件的形式重塑结果:
Reshape((3,2))
示例:
model = Sequential()
model.add(Embedding(vocab_size + 1, embedding, input_length=sentenceLength))
model.add(LSTM(hidden1, recurrent_dropout=0.1, return_sequences=True))
model.add(LSTM(hidden2, recurrent_dropout=0.1, return_sequences=True))
model.add(LSTM(hidden3, recurrent_dropout=0.1, return_sequences=True))
model.add(LSTM(6, recurrent_dropout=0.1, return_sequences=False))
model.add(Reshape((3,2)))
我需要一个模型来输出形状为 (3,2)
的回归目标,其中 3
是事件数,每个事件都有 X and Y
坐标。输入数据可以跨越 1 个或多个时间步长。这是我的模型的一个例子,当输入有一个时间步长时。
model = Sequential()
model.add(Embedding(vocab_size + 1, embedding, input_length=1))
model.add(LSTM(hidden, recurrent_dropout=0.1, return_sequences=True))
model.add(Flatten())
model.add(RepeatVector(3))
model.add(LSTM(2, return_sequences=True))
模型编译并运行,但它在 3 个事件中为 X, Y
生成相同的值。我认为这是因为 RepeatVector
层。我还能如何确保我的输出是 (None, 3, 2)
?
首先提示:如果一个 "sentence" 应该生成 3 个事件,我认为你不应该使用 input_length=1
,而应该使用 input_length=lengthOfTheSentences
。
LSTM
层处理长度为 1 的序列并不是优势。
您说 RepeatVector
导致了 3 次相同的结果是正确的。
现在,根据 "how is your model supposed to detect those events",不同的方法可能会更好。
- 这些句子是"a sequence where the events may be found 'along'"吗?
- 这些句子是"an idea that determines the events statically"吗?
按照第二种方法,我会说你可以像这样使用第一个 LSTM:
LSTM(hidden, return_sequence=False)
其中 hidden 必须为 6。(您可以使用更多的隐藏层 return_sequences=True
,但重要的是最后一个具有与 6 兼容的输出量)。
然后您以事件的形式重塑结果:
Reshape((3,2))
示例:
model = Sequential()
model.add(Embedding(vocab_size + 1, embedding, input_length=sentenceLength))
model.add(LSTM(hidden1, recurrent_dropout=0.1, return_sequences=True))
model.add(LSTM(hidden2, recurrent_dropout=0.1, return_sequences=True))
model.add(LSTM(hidden3, recurrent_dropout=0.1, return_sequences=True))
model.add(LSTM(6, recurrent_dropout=0.1, return_sequences=False))
model.add(Reshape((3,2)))