首页 > 解决方案 > 检查输入时Tensorflow抛出值错误(lstm_1)

问题描述

model.fit 产生异常:

ValueError:检查输入时出错:预期 lstm_1_input 具有 3 个维度,但得到的数组具有形状 (60752, 29)

这是模型结构:

 train_x, valid_x = arr[:split, :], arr[split:, :]

train_y, valid_y = target[:split], target[split:]


train_x = train_x.reshape(train_x.shape[0], -1)
train_y = train_y.reshape(train_y.shape[0], -1)
valid_x = valid_x.reshape(valid_x.shape[0], -1)
valid_y = valid_y.reshape(valid_y.shape[0], -1)

print(train_x.shape)

input_params = train_x.shape[1]
print(input_params)

model = Sequential()
#start
model.add(LSTM(100, return_sequences=True, input_shape=(input_params, 1)))
model.add(LeakyReLU(alpha=2))
model.add(LSTM(100, return_sequences=True))
model.add(LeakyReLU(alpha=2))
model.add(LSTM(100))
model.add(LeakyReLU(alpha=2))
model.add(Dense(2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

`

这些是模型的参数:

lstm_1 (LSTM)                (None, 29, 100)           40800     

_________________________________________________________________
leaky_re_lu_1 (LeakyReLU)    (None, 29, 100)           0         
_________________________________________________________________
lstm_2 (LSTM)                (None, 29, 100)           80400     
_________________________________________________________________
leaky_re_lu_2 (LeakyReLU)    (None, 29, 100)           0         
_________________________________________________________________
lstm_3 (LSTM)                (None, 100)               80400     
_________________________________________________________________
leaky_re_lu_3 (LeakyReLU)    (None, 100)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 2)                 202       
_________________________________________________________________
dense_2 (Dense)              (None, 1)                 3         
=================================================================
Total params: 201,805
Trainable params: 201,805
Non-trainable params: 0

任何人都可以帮我解决这个问题吗?

标签: pythontensorflowkeras

解决方案


如果您希望您的输入只有 1 个通道,那么要么

[1] 重塑x

train_x = train_x.reshape(train_x.shape[0], -1)
train_y = train_y.reshape(train_y.shape[0], -1)
valid_x = valid_x.reshape(valid_x.shape[0], -1)
valid_y = valid_y.reshape(valid_y.shape[0], -1)

train_x = np.expand_dims(train_x, -1)
valid_x = np.expand_dims(valid_x, -1)

或 [2] 添加一个Reshape图层

model = Sequential()
model.add(keras.layers.Reshape((-1, 1)))
#start

应该这样做。


推荐阅读