【问题标题】:What should be 'y_train' in Keras LSTM?Keras LSTM 中的“y_train”应该是什么?
【发布时间】:2019-02-07 00:42:49
【问题描述】:

我参考Keras网站here给出的例子:

from keras.models import Sequential
from keras.layers import LSTM, Dense
import numpy as np

data_dim = 16
timesteps = 8
num_classes = 10

# expected input data shape: (batch_size, timesteps, data_dim)
model = Sequential()
model.add(LSTM(32, return_sequences=True,
           input_shape=(timesteps, data_dim)))  # returns a sequence of vectors of dimension 32
model.add(LSTM(32, return_sequences=True))  # returns a sequence of vectors of dimension 32
model.add(LSTM(32))  # return a single vector of dimension 32
model.add(Dense(10, activation='softmax'))

model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])

# Generate dummy training data
x_train = np.random.random((1000, timesteps, data_dim))
y_train = np.random.random((1000, num_classes))

# Generate dummy validation data
x_val = np.random.random((100, timesteps, data_dim))
y_val = np.random.random((100, num_classes))

model.fit(x_train, y_train, batch_size=64, epochs=5, validation_data=(x_val, y_val))

对于现实世界的示例,y_train 和 y_val 应该是什么?由于它们来自同一个序列,它们应该分别与 x_train 和 x_val 相同吗?

另外,我应该如何理解 data_dim 和 num_classes?

【问题讨论】:

    标签: python machine-learning neural-network keras lstm


    【解决方案1】:

    由于您的参数 return_sequences = True,您的 LSTM 将被提供形状为 [batch_size, time_steps, input_features] 的 numpy 数组并执行“多对多”映射。 Data_dim 只是模型作为输入的不同特征的数量。你的y_train 将变成[[1000, 10]]

    理解您提供的代码摘录的关键是设置参数return_sequences = True 使 LSTM 层能够将值的序列传播到网络中的上游层。请注意,在 10-way softmax 之前的最后一个 LSTM 层没有设置return_sequences = True。这是因为密集层无法处理输入序列 - 因此,time_steps 维度被折叠,密集层接收输入向量,它可以毫无问题地处理它。

    【讨论】:

    • 好的...假设我有一个序列:1 2 3 4 5 4 3 2 1,x_train 和 y_train 应该是什么?
    【解决方案2】:

    This 有点回答我的问题。

    【讨论】:

      猜你喜欢
      • 2020-02-24
      • 2022-01-14
      • 2019-09-22
      • 1970-01-01
      • 2018-11-12
      • 2018-04-21
      • 2019-09-23
      • 2020-11-27
      • 2019-09-07
      相关资源
      最近更新 更多