我正在从事LSTM项目。
让我有100个输入数据。我的输入层使用等于10的倾斜窗口。
这是我的LSTM模型:
inputs = tf.keras.Input(shape=(10,100))
LSTM_1 = layers.LSTM(100, stateful=False, return_sequences=True)(inputs)
FC_1 = layers.Dense(100)(LSTM_1)
LSTM_2 = layers.LSTM(100, stateful=False, return_sequences=False)(FC_1)
label = layers.Dense(5, activation='softmax')(LSTM_2)
这是模型摘要。
Layer (type) Output Shape Param #
=================================================================
input (InputLayer) (None, 10, 100) 0
_________________________________________________________________
lstm_1 (LSTM) (None, 10, 100) 80400
_________________________________________________________________
dense (Dense) (None, 10, 100) 10100
_________________________________________________________________
lstm_2 (LSTM) (None, 100) 80400
_________________________________________________________________
label (Dense) (None, 5) 1111
=================================================================
Total params: 172,011
Trainable params: 172,011
Non-trainable params: 0
_________________________________________________________________
None
下面是加载数据的代码。
h5_x = 'X.h5'
h5_Y = 'Y.h5'
x_data = HDF5Matrix(h5_x, start=0, end=data_length)
x_data = np.reshape(x_data,(data_length, 5))
y_label = HDF5Matrix(h5_Y, start=0, end=data_length)
y_label = np.reshape(y_label,(data_length, 5))
假设我有一个函数,可将数据拆分为10个序列并将其输入模型。
我的问题是,当我将 return_sequences 设置为 True 时,我的代码可以很好地为模型提供序列10个切片,但输出层的形状为(无,10、5),我不希望这样。
因此,当我将其设置为 False 时,输出层的形状为(无,5),但是我收到错误消息:检查目标时出错:预期具有2维,但数组的形状为(x,x,x)。
我知道这只是形状问题,但是我该如何解决呢?我需要重塑什么?