如何将多个向量发送到 SimpleRNN?
How to send multiple vectors to a SimpleRNN?
我有 'n' 没有。每个 'm' 大小的矢量。我需要将它们发送到 keras 的 SimpleRNN。应该发送向量,使得 RNN 的每个神经元都采用一个向量(例如:vector1 到 neuron1,vector2 t neuron2 等)以及先前输入向量的隐藏状态。
我试过将它们连接起来,但这会扭曲输入的性质。
input1 = Dense(20, activation = "relu")(input1)<br>
input2 = Dense(20, activation = "relu")(input2)
我需要将这些向量(input1 和 input2)发送到 RNN。
您可以在 Tensorflow 中使用 tf.stack
或在 Keras 中使用 keras.backend.stack
。这个运算符:
Stacks a list of rank-R tensors into one rank-(R+1) tensor
根据您的代码,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)
我有 'n' 没有。每个 'm' 大小的矢量。我需要将它们发送到 keras 的 SimpleRNN。应该发送向量,使得 RNN 的每个神经元都采用一个向量(例如:vector1 到 neuron1,vector2 t neuron2 等)以及先前输入向量的隐藏状态。
我试过将它们连接起来,但这会扭曲输入的性质。
input1 = Dense(20, activation = "relu")(input1)<br>
input2 = Dense(20, activation = "relu")(input2)
我需要将这些向量(input1 和 input2)发送到 RNN。
您可以在 Tensorflow 中使用 tf.stack
或在 Keras 中使用 keras.backend.stack
。这个运算符:
Stacks a list of rank-R tensors into one rank-(R+1) tensor
根据您的代码,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)