如何将多个向量发送到SimpleRNN?

时间:2018-12-24 11:08:53

标签: keras recurrent-neural-network rnn keras-layer

我没有。每个大小为“ m”的向量。我需要将它们发送到keras的SimpleRNN。应该发送矢量,以使RNN的每个神经元都带有一个矢量(例如,矢量1到神经元1,矢量2 t神经元2等)以及先前输入矢量的隐藏状态。

我尝试将它们串联起来,但这扭曲了输入的性质。

input1 = Dense(20, activation = "relu")(input1)
input2 = Dense(20, activation = "relu")(input2)

我需要将这些向量(input1和input2)发送到RNN。

1 个答案:

答案 0 :(得分:0)

您可以在Tensorflow中使用tf.stack或在Keras中使用keras.backend.stack。该运算符:

  

将等级R张量的列表堆叠到一个等级R(R + 1)张量中

根据您的代码,Dense layers可以通过以下方式堆叠:

import tensorflow as tf

inps1 = tf.keras.layers.Input(shape=(30,))
inps2 = tf.keras.layers.Input(shape=(30,))
dense1 = tf.keras.layers.Dense(20, activation='relu')(inps1)
dense2 = tf.keras.layers.Dense(20, activation='relu')(inps2)

dense = tf.keras.layers.Lambda(lambda x: tf.stack([x[0], x[1]], axis=1), output_shape=(None, 2, 20))([dense1, dense2])

rnn = tf.keras.layers.SimpleRNN(100)(dense)