여러 rnn 셀이있는 레이어를 만들 수 있습니까? [논문에 관한 질문]

Nov 20 2020

구현하려고합니다 https://dl.acm.org/doi/pdf/10.1145/3269206.3271794 .

구조:

말했듯이 :

특히 각 개별 반복 인코더에서 학습 한 임베딩 벡터를 새로운 결정적인 임베딩 벡터에 통합하여 서로 다른 ⟨α, β⟩ 구성을 가진 다양한 시계열 패턴을 공동으로 고려합니다.

내 이해를 위해 여러 개의 개별 rnn 셀을 사용하여 서로 다른 시계열을 처리 한 다음 모든 숨겨진 상태를 함께 연결하여 2d conv 추출 기능을 사용할 수있는 3D 입력을 형성합니다.

하지만 같은 레이어에 여러 개의 rnn 셀을 만드는 방법이 없다는 것을 알지 못했습니다. 오해가 있습니까 ?? 그렇지 않다면 가이드 나 예를 들어 주시겠습니까?

답변

hH1sG0n3 Nov 20 2020 at 18:28

이 모델 아키텍처에 정확히 익숙하지는 않지만 설명하신 방식대로 작동하지 않는다고 생각합니다.

간단한 훑어보기에서 모델의 단순화 된 개요는

  1. 데이터 투입: $X$ 여러 시계열
  2. RNN : 각 시계열 전달 $x$ 순환 신경망을 통해 숨겨진 상태를 파악합니다.
  3. 공동 임베딩 : 각각의 숨겨진 상태 연결 $x$ 임베딩에 시리즈 $X$ 채널
  4. Convnet

하지만 같은 레이어에 여러 개의 rnn 셀을 만드는 방법이 없다는 것을 알지 못했습니다. 오해가 있습니까 ?? 그렇지 않다면 가이드 나 예를 들어 주시겠습니까?

기본적으로 모든 rnn에는 시간 단계 수와 동일한 수의 셀이 있습니다. 예를 들어 NLP에서 셀 수는 문장의 단어 수와 같으며 trainset의 각 문장은 길이가 같아야합니다.

이 문서의 개념을 더 잘 이해하기 위해 시퀀스 모델에 익숙해지는 것이 좋습니다.

Mithril Nov 25 2020 at 15:46

funcational api를 사용하여 문제를 해결하십시오.

구조는 다음을 좋아합니다.


import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

data = pd.DataFrame(np.random.uniform(size=(1000,3)), columns=['Sales', 'SalesDiff7', 'SalesAggMean7'])

multi_inputs = []
multi_outputs = []
window_size = my_window.input_width

for i in range(data.shape[1]):
    ti = keras.Input(shape=(window_size, 1), name=f't{i}')
    tlstm = layers.LSTM(32)(ti)
    multi_inputs.append(ti)
    multi_outputs.append(tlstm)
    
r = tf.stack(multi_outputs, axis=-2) 
.....
result = keras.layers.Dense(units=1)(fc)

model = Model(
    inputs=multi_inputs,
    outputs=result,
)