neural-network - 如何在 Keras 中为循环神经网络 (RNN) 使用嵌入层

标签 neural-network embedding keras recurrent-neural-network

我对神经网络和 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 张量 reshape 自己并使用嵌入层?我想在模型 = 顺序()之后我必须添加类似的内容:
model.add(Embedding(?????))

可能答案很简单,我只是对嵌入层的文档感到困惑。

最佳答案

据我所知,嵌入层似乎或多或少地用于降维,如 word embedding .所以从这个意义上说,它似乎不适用于一般的 reshape 工具。

基本上,如果您将单词映射到整数,例如 {car: 1, mouse: 2 ... zebra: 9999},那么您的输入文本将是由整数 id 表示的单词向量,例如 [1, 2, 9999 .. .],这意味着[汽车,老鼠,斑马......]。但是将单词映射到具有词汇长度的实数向量似乎是有效的,因此如果您的文本有 1000 个唯一单词,您会将每个单词映射到长度为 1000 的实数向量。我不确定,但我认为它主要代表了一个词的含义与所有其他词的相似程度的权衡,但我不确定这是正确的,是否还有其他嵌入词的方法。

关于neural-network - 如何在 Keras 中为循环神经网络 (RNN) 使用嵌入层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35089956/

相关文章:

c - 需要返回什么 HTTP header 以便 Web 浏览器使用建议的文件名? (文件从 CGI 中下载)

python - 使用 noise_shape 的 Keras Dropout

python - 如何在 Keras 中使用 deconv2d 获得与原始输入大小相同的层?

python - Keras Functional API 在每个 API 中更改层名称

c++ - 神经网络中的 Q 学习不是 'learning'

machine-learning - 如何检查经过训练的神经网络

nlp - 手套嵌入中的标记和词汇意味着什么?

c# - 我可以在 DLL 中嵌入其他文件吗?

python - 神经网络(无隐藏层)与逻辑回归?

python - Python 中的简单神经网络不显示测试图像的标签