Keras LSTM 中的“y_train”应该是什么?

数据挖掘 机器学习 Python 神经网络 喀拉斯 lstm
2022-02-22 06:08:09

我在这里参考 Keras 网站上给出的示例

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?

3个回答

'y_train'并且'y_val'应该是您试图预测的任何内容。它们可以是值、类,也可以是序列。您尝试预测的形式将影响您在 Keras 中构建 RNN 的方式:Keras中的多对一和多对多 LSTM 示例

'data_dim'是数据集中特征的数量。如果要预测天气,特征可能是“压力”、“温度”、“降水”等'data_dim' = 3

'num_classes'是结果变量可以假设的类数。如果结果变量是'type of animal',并且结果变量可以假设的类是'dog', 'cat', 'bird', 那么'num_classes' = 3.

这种回答我的问题。

Y_out 没有必要与输入序列具有相同的形状。但是,您必须为您给出的每个输入进行预测例如,假设您有一个包含 2 个样本的数据,每个样本基本上是一个具有 4 个时间步长的序列,即 [2,3,4,5],[3,5,7,9 ] 上述问题将为每个序列有两个输出,输出可以是下一个值或下一个值系列,无论你想要什么,上面都可以认为是 1 个具有 8 个时间步长的样本,即 [2,3,4,5 ,3,5,7,9] 在这种情况下,我们有 1 个输出可以是任何东西(下一个值或倍数值)维度基本上表示输入数据的特征,换句话说,在一个时间步长的给定观察中,你有什么got classes 表示 Y out 可以属于的不同类别。