Keras LSTM应该是什么'y_train'?

问题描述 投票:0回答:2

我参考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
2个回答
0
投票

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

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


-1
投票

This回答我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.