python - Keras LSTM 中的“y_train”应该是什么?
问题描述
我在这里参考 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?
解决方案
由于您的参数return_sequences = True
,您的 LSTM 将被提供形状的 numpy 数组[batch_size, time_steps, input_features]
并执行“多对多”映射。 Data_dim
只是模型作为输入的不同特征的数量。你的y_train
意志定格[[1000, 10]]
理解您提供的代码摘录的关键是设置参数return_sequences = True
使 LSTM 层能够将值序列传播到网络中的上游层。请注意,在 10-way softmax 之前的最后一个 LSTM 层没有设置return_sequences = True
. 这是因为密集层无法处理输入序列 - 因此,time_steps
维度被折叠并且密集层接收输入向量,它可以毫无问题地处理它。
推荐阅读
- javascript - 在页面卸载或刷新时将js值传递给php而不重定向和运行js函数
- python - 清理数据集的最佳方法
- c# - C# 中的 Swift MT940 解析器
- javascript - TypeError: undefined is not an object in react native
- vue.js - v-显示多个指定路线上的元素
- java - 更新记录时如何使用replace方法?
- r - R中的多元混合Copula - 尺寸大于6
- android-kernel - /data/ 上的以下类型必须与“core_data_file_type”属性相关联:netmgrd_data_file
- python-3.x - 如何选择数据框中的列以在 python 中创建新的数据框?
- python - 这是在 Python 中进行多处理的最快方法吗