Как реализовать структуру пропуска соединения между слоями LSTM - PullRequest
1 голос
/ 20 марта 2020

Я недавно узнал, что Re sNet пропускает соединение, и обнаружил, что эта структура сети может значительно улучшиться во время обучения, и это также применимо в сверточных сетях, таких как U- net. Тем не менее, я не знаю, как я могу реализовать аналогичную структуру с сетью автокодера LSTM. похоже, я попал в ловушку из-за проблем с измерениями ... Я использую метод keras для реализации, но я продолжал получать ошибки Итак, вот код сети:

# lstm autoencoder recreate sequence
from numpy import array
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers import Dense
from keras.layers import RepeatVector
from keras.layers import TimeDistributed
from keras.utils import plot_model
# from keras import regularizers
from keras.regularizers import l1
from keras.optimizers import Adam
import keras.backend as K
model = Sequential()
model.add(LSTM(512, activation='selu', input_shape=(n_in,1),return_sequences=True))
model.add(LSTM(256, activation='selu',return_sequences=True)) 
model.add(LSTM(20, activation='selu'))  
model.add(RepeatVector(n_in))
model.add(LSTM(20, activation='selu',return_sequences=True)) 
model.add(LSTM(256, activation='selu',return_sequences=True)) 
model.add(LSTM(512, activation='selu', return_sequences=True))
model.add(TimeDistributed(Dense(1)))
# model.add
plot_model(model=model, show_shapes=True)

Так же, как пропустить схему подключения в re snet или unet, я пытаюсь изменить сеть следующим образом: network with out blue lines is the original network

Выход уровня lstm кодера также объединяет (concat или add?) Выход первого уровня в качестве входа уровня lstm декодера. Как показывает pi c, отвечающие ядру слои имеют симметрию. Возможна ли такая идея подключения? Но я новичок в keras API и структуре пропускаемых соединений, я не знаю, как это реализовать.

...