我正在尝试使用Keras并将LSTM层作为第一层来构建顺序模型。 train_x
的形状为(21000,2),我使用的批量大小为10
当我尝试
model = Sequential()
model.add(LSTM(128, activation='relu', input_shape=(
train_x.shape[1:]), return_sequences=True))
我说一个错误
输入0与lstm_1层不兼容:预期ndim = 3,找到ndim = 2
然后,我尝试更改input_shape
并将其设置为input_shape=(train_x.shape)
,但又收到另一个错误消息
检查输入时出错:预期lstm_1_input具有3维,但数组的形状为(21000,2)
我在做什么错了?
答案 0 :(得分:0)
Keras LSTM层期望输入3
的颜色像(batch_size, seq_length, input_dims)
一样暗淡,但您将其分配错误。试试这个
input_dims = train_x.shape[1]
seq_length = #decide an integer
model = Sequential()
model.add(LSTM(128, activation='relu', input_shape=(seq_length, input_dims), return_sequences=True))
您还需要将数据重塑为三个暗角,其中新的暗角将代表序列,如
我使用玩具数据集演示了一个示例,此处的数据和标签最初使用以下脚本来构成((150, 4), (150,))
形状:
seq_length = 10
dataX = []
dataY = []
for i in range(0, 150 - seq_length, 1):
dataX.append(data[i:i+seq_length])
dataY.append(labels[i+seq_length-1])
import numpy as np
dataX = np.reshape(dataX, (-1, seq_length, 4))
dataY = np.reshape(dataY, (-1, 1))
# dataX.shape, dataY.shape
输出:((140, 10, 4), (140, 1))
现在您可以安全地将其输入模型了。
注意:我为many-to-one
模型准备了数据集,但是您可以适当地使用它。