Keras:如何将 2-D 数据(时间、特征向量)整形为 3D
Keras: How to shape 2-D data (time, feature vector) into 3D
我有一个长度为8474的训练数据,每个元素都是离散时间的5维特征向量。我正在尝试 运行 Keras 中的 LSTM:
x_training, x_testing = x_data[:8475], x_data[8475:]
y_training, y_testing = y_data[:8475], y_data[8475:]
primary = Sequential()
primary.add(LSTM(4,input_shape=(5,)))
primary.add(LSTM(4, activation='sigmoid'))
primary.add(Dense(1))
primary.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
primary.fit(x_training, y_training, batch_size=20, epochs=10, shuffle=False)
score, accuracy = primary.evaluate(x_testing, y_testing, batch_size=20, verbose=0)
并且:
ValueError: Input 0 is incompatible with layer lstm_4: expected ndim=3, found ndim=2
我知道我必须使用设置(nb_samples、nb_included_previous_days、功能)将这个 8475 X 5 数据转换为 3D 数据,但我不明白:有什么区别训练数据的时间步长和长度?我还漏掉了什么吗?
What is the difference between the timestep and length of training data? Am I missing something else?
时间步长是模型中 RNN/LSTM 个细胞的数量,这取决于您的序列长度。
首先要使用 LSTM,您需要将训练数据转换为 3D 格式。假设您正在处理一些时间序列问题,并且为了预测训练数据中的每个瞬间,您认为 previous/adjacent 10 个训练瞬间很重要。在这种情况下,您的每个训练时刻都将具有 [10, num of feature in each training sample(5 in this case)]
的形状。所以我想你几乎不需要修改就可以创建新的训练数据,其中每个时刻都是所需训练样本的序列矩阵。
训练数据的形状将为 [number of training samples(8074), seq_length(10), num_features(5)]
。
将 LSTM 单元格中的输入形状更改为 [sequence_length, num_features]
,即 (10,5)。
这只是我对概念的有限理解,希望能奏效。
我有一个长度为8474的训练数据,每个元素都是离散时间的5维特征向量。我正在尝试 运行 Keras 中的 LSTM:
x_training, x_testing = x_data[:8475], x_data[8475:]
y_training, y_testing = y_data[:8475], y_data[8475:]
primary = Sequential()
primary.add(LSTM(4,input_shape=(5,)))
primary.add(LSTM(4, activation='sigmoid'))
primary.add(Dense(1))
primary.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
primary.fit(x_training, y_training, batch_size=20, epochs=10, shuffle=False)
score, accuracy = primary.evaluate(x_testing, y_testing, batch_size=20, verbose=0)
并且:
ValueError: Input 0 is incompatible with layer lstm_4: expected ndim=3, found ndim=2
我知道我必须使用设置(nb_samples、nb_included_previous_days、功能)将这个 8475 X 5 数据转换为 3D 数据,但我不明白:有什么区别训练数据的时间步长和长度?我还漏掉了什么吗?
What is the difference between the timestep and length of training data? Am I missing something else?
时间步长是模型中 RNN/LSTM 个细胞的数量,这取决于您的序列长度。
首先要使用 LSTM,您需要将训练数据转换为 3D 格式。假设您正在处理一些时间序列问题,并且为了预测训练数据中的每个瞬间,您认为 previous/adjacent 10 个训练瞬间很重要。在这种情况下,您的每个训练时刻都将具有 [10, num of feature in each training sample(5 in this case)]
的形状。所以我想你几乎不需要修改就可以创建新的训练数据,其中每个时刻都是所需训练样本的序列矩阵。
训练数据的形状将为 [number of training samples(8074), seq_length(10), num_features(5)]
。
将 LSTM 单元格中的输入形状更改为 [sequence_length, num_features]
,即 (10,5)。
这只是我对概念的有限理解,希望能奏效。