【发布时间】:2016-05-07 12:13:03
【问题描述】:
我对神经网络和 Keras 库还很陌生,我想知道如何使用 here 所述的嵌入层将我的输入数据从 2D 张量屏蔽为 RNN 的 3D 张量.
假设我的时间序列数据如下(随着时间的增加):
X_train = [
[1.0,2.0,3.0,4.0],
[2.0,5.0,6.0,7.0],
[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0],
...
] # with a length of 1000
现在,假设我想为 RNN 提供最后 2 个特征向量,以便预测时间 t+1 的特征向量。
目前(没有嵌入层),我正在自己创建所需的形状为 (nb_samples, timesteps, input_dim) 的 3D 张量(如本例中的here)。
与我的示例相关,最终的 3D 张量将如下所示:
X_train_2 = [
[[1.0,2.0,3.0,4.0],
[2.0,5.0,6.0,7.0]],
[[2.0,5.0,6.0,7.0],
[3.0,8.0,9.0,10.0]],
[[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0]],
etc...
]
和Y_train:
Y_train = [
[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0],
etc...
]
我的模型如下所示(改编为上面的简化示例):
num_of_vectors = 2
vect_dimension = 4
model = Sequential()
model.add(SimpleRNN(hidden_neurons, return_sequences=False, input_shape=(num_of_vectors, vect_dimension)))
model.add(Dense(vect_dimension))
model.add(Activation("linear"))
model.compile(loss="mean_squared_error", optimizer="rmsprop")
model.fit(X_train, Y_train, batch_size=50, nb_epoch=10, validation_split=0.15)
最后,我的问题是,我怎样才能避免将那些 2D 张量转换为 3D 张量重塑自己并改用嵌入层?我想在 model =equential() 之后我必须添加类似的内容:
model.add(Embedding(?????))
可能答案很简单,我只是被嵌入层的文档弄糊涂了。
【问题讨论】:
标签: neural-network embedding keras recurrent-neural-network