Как отправить несколько векторов в SimpleRNN? - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть 'n' нет.векторов размером «м» каждый.Мне нужно отправить их в SimpleRNN из keras.Векторы должны быть отправлены таким образом, чтобы каждый нейрон RNN брал вектор (например: вектор1 к нейрону1, вектор2т нейрону2 и т. Д.) Вместе со скрытым состоянием предыдущего входного вектора.

Я попытался объединить их, но это искажает природу ввода.

input1 = Dense(20, activation = "relu")(input1)<br> input2 = Dense(20, activation = "relu")(input2)

Мне нужно отправить эти векторы (input1 и input2) в RNN,

1 Ответ

0 голосов
/ 24 декабря 2018

Вы можете использовать tf.stack в Tensorflow или keras.backend.stack в Керасе.Этот оператор:

Устанавливает список тензоров ранга 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)
...