检查目标时的LSTM错误:预期具有2维,但数组具有3D形状

时间:2019-11-21 16:04:04

标签: python keras lstm

我正在从事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)。

我知道这只是形状问题,但是我该如何解决呢?我需要重塑什么?

0 个答案:

没有答案