keras.layers.recurrent.Recurrent(return_sequences=False, return_state=False, go_backwards=False, stateful=False, unroll=False, implementation=0)
재발 계층의 추상화 기본 클래스(abstract base class) 입니다.
유효한 계층이 아니니 모델에 사용하지는 마세요! 대신에 자녀 클래스인 LSTM
, GRU
, SimpleRNN
을 사용하세요.
모든 자녀 재발 계층(LSTM
, GRU
, SimpleRNN
) 역시 아래 정리된 규격을 따르고 키워드 인수를 받아들입니다.
예제
# as the first layer in a Sequential model
model = Sequential()
model.add(LSTM(32, input_shape=(10, 64)))
# now model.output_shape == (None, 32)
# note: `None` is the batch dimension.
# for subsequent layers, no need to specify the input size:
model.add(LSTM(16))
# to stack recurrent layers, you must use return_sequences=True
# on any recurrent layer that feeds into another recurrent layer.
# note that you only need to specify the input size on the first layer.
model = Sequential()
model.add(LSTM(64, input_dim=64, input_length=10, return_sequences=True))
model.add(LSTM(32, return_sequences=True))
model.add(LSTM(10))
인수
[(input_dim, output_dim), (output_dim, output_dim), (output_dim,)]
.input_shape
은 모델의 첫번 째 계층으로 쓰일 때 필요합니다.Dense
계층의 앞에 Flatten
계층을 연결하고자 할 때 필요합니다(없다면, Dense
출력의 형태는 계산되지 않습니다). 만약 재발 계층이 모델의 첫번 째 계층이 아니라면 input_shape
인수를 통해 첫번 째 계층에서 입력의 길이를 지정해 주어야 함에 주의하세요.입력 형태
다음과 같은 형태의 3차원 텐서 입니다: (batch_size, timesteps, input_dim)
.
선택적으로 다음과 같은 형태의 2차원 텐서도 가능합니다: (batch_size, output_dim)
.
출력 형태
return_state
인 경우: 텐서의 리스트이며 첫번 째 텐서가 출력되고 나머지 텐서가 마지막 상태가 되며 각각 다음 형태를 가집니다: (batch_size, units)
.return_sequences
인 경우: 다음과 같은 형태의 3차원 텐서 입니다: (batch_size, timesteps, units)
.(batch_size, units)
.마스킹(masking)
이 계층은 다양한 갯수의 시간단계의 입력 데이터에 대한 마스킹을 지원합니다. 데이터에 마스크를 적용하려면 임베딩 계층의 mask_zero
파라미터를 True
로 설정하여 사용하세요.
RNNs의 상태보존성 사용에 대한 주의 사항
RNN 계층은 ‘상태보존적(stateful)'으로 설정할 수 있으며, batch의 샘플의 계산된 상태가 다음 batch의 샘플의 초기 상태로 재사용될 수 있음을 의미 합니다. 이 것은 서로 다른 이어지는 batch가 서로 일대일 대응이 됨을 가정합니다.
상태보존성을 가능하게 하려면:
stateful=True
를 지정하세요.batch_input_shape=(...)
을 넘겨줍니다.batch_shape=(...)
을 넘겨줍니다. 이 것이 batch 크기를 포함한 입력 형태로,(32, 10, 100)
과 같은 정수의 튜플이어야 합니다.fit()
을 호출할 때는 shuffle=False
을 지정하세요.모델의 상태를 리셋하려면 전체 모델이나 특정 계층에서 .reset_states()
을 호출하세요.
RNNs의 초기 상태 지정에 대한 주의 사항
RNN 계층은 키워드 인수 initial_state
와 함께 호출하여 기호적으로 초기 상태를 지정할 수 있습니다. initial_state
값은 RNN 계층의 초기 상태를 표현하는 텐서 혹은 텐서의 리스트여야 합니다.
RNN 계층은 키워드 인수 states
와 함께 reset_states
을 호출하여 수치적으로 초기 상태를 지정할 수 있습니다. states
값은 RNN 계층의 초기 상태를 표현하는 numpy 배열 혹은 numpy 배열의 리스트여야 합니다.
keras.layers.recurrent.SimpleRNN(units, activation='tanh', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0)
출력이 다시 입력으로 주어지는 완전히 연결된(Fully-connected) RNN 입니다.
인수
a(x) = x
).kernel
가중치 행렬을 위한 초기화기입니다(초기화기를 참조).recurrent_kernel
가중치 행렬을 위한 초기화기이며, 재발 상태의 선형 변환에 쓰입니다(초기화기를 참조).kernel
가중치 행렬에 적용되는 정규화기 함수입니다(정규화기를 참조).recurrent_kernel
가중치 행렬에 적용되는 정규화기 함수입니다(정규화기를 참조).kernel
가중치 행렬에 적용되는 제한 함수입니다(제한을 참조).recurrent_kernel
가중치 행렬에 적용되는 제한 함수입니다(제한을 참조).참고
keras.layers.recurrent.GRU(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0)
Gated Recurrent Unit 의 약자 입니다. Cho et al. 2014 논문을 참고하세요.
인수
a(x) = x
).kernel
가중치 행렬을 위한 초기화기이며, 입력의 선형 변환에 쓰입니다(초기화기를 참조).recurrent_kernel
가중치 행렬을 위한 초기화기이며, 재발 상태의 선형 변환에 쓰입니다(초기화기를 참조).kernel
가중치 행렬에 적용되는 정규화기 함수입니다(정규화기를 참조).recurrent_kernel
가중치 행렬에 적용되는 정규화기 함수입니다(정규화기를 참조).kernel
가중치 행렬에 적용되는 제한 함수입니다(제한을 참조).recurrent_kernel
가중치 행렬에 적용되는 제한 함수입니다(제한을 참조).