diff --git a/sources/layers/wrappers.md b/sources/layers/wrappers.md index 64893e73..4fe406c2 100644 --- a/sources/layers/wrappers.md +++ b/sources/layers/wrappers.md @@ -1,43 +1,40 @@ -[[source]](https://github.com/keras-team/keras/blob/master/keras/layers/wrappers.py#L114) +[[source]](https://github.com/keras-team/keras/blob/master/keras/layers/wrappers.py#L116) ### TimeDistributed ```python keras.layers.TimeDistributed(layer) ``` -이 래퍼는 인풋의 모든 시간적 조각에 대해 레이어를 적용합니다. +이 래퍼는 입력값의 모든 시계열 단위에 층layer을 적용합니다. -인풋은 적어도 3D 이상이어야 하며, 그 중 색인 1의 차원은 -시간 차원으로 인식합니다. +입력값은 최소 3D의 형태를 가져야 하며, 그 중 index 1(두번째 원소)은 시간 차원을 나타냅니다. -32개 샘플로 구성된 배치에서, -각 샘플은 10개의 16차원 벡터로 이루어진 시퀀스라고 가정합니다. -그렇다면 레이어의 배치 인풋 형태는 `(32, 10, 16)`이고, -샘플 차원을 제외한 `input_shape`은 `(10, 16)`이 됩니다. +32개의 표본으로 구성된 배치에서, 10개의 16차원 벡터로 이루어진 시퀀스의 예시를 보겠습니다. +이 예시에서 층의 배치 입력 형태는 `(32, 10, 16)`이고, +배치 차원을 제외한 `input_shape`는 `(10, 16)`입니다. -이어서 `TimeDistributed`를 사용해 10개의 시간 단계 각각에 -독립적으로 `Dense` 레이어를 적용할 수 있습니다: +`TimeDistributed`를 사용하여 10개의 시간 단계timestep에 독립적으로 `Dense`층을 적용할 수 있습니다. ```python -# 모델의 첫 번째 레이어로써 +# 모델의 첫 번째 층으로 사용되었습니다. model = Sequential() model.add(TimeDistributed(Dense(8), input_shape=(10, 16))) -# 현재 model.output_shape == (None, 10, 8) +# model.output_shape == (None, 10, 8) ``` -이 결과 아웃풋은 `(32, 10, 8)`의 형태를 갖습니다. +이 결과 출력값은 `(32, 10, 8)`의 형태를 가집니다. -차우 레이어에서는 `input_shape`이 필요없습니다: +첫 번째 층 이후에는 `input_shape`를 명시할 필요가 없습니다. ```python model.add(TimeDistributed(Dense(32))) # now model.output_shape == (None, 10, 32) ``` -이 결과 아웃풋은 `(32, 10, 32)`의 형태를 갖습니다. +이 결과 출력값은 `(32, 10, 32)`의 형태를 가집니다. -`TimeDistributed`는 `Dense`만이 아닌, 예를 들면 `Conv2D` 레이어와 같은 -임의의 레이어와 함께 사용할 수 있습니다: +`TimeDistributed`는 `Dense`가 아닌 케라스에서 사용 가능한 층에서도 사용할 수 있습니다. +(ex:`Conv2D` 층) ```python model = Sequential() @@ -45,37 +42,35 @@ model.add(TimeDistributed(Conv2D(64, (3, 3)), input_shape=(10, 299, 299, 3))) ``` -__인수__ +__인자__ -- __layer__: 레이어 인스턴스. +- __layer__: 층 인스턴스. ---- -[[source]](https://github.com/keras-team/keras/blob/master/keras/layers/wrappers.py#L333) +[[source]](https://github.com/keras-team/keras/blob/master/keras/layers/wrappers.py#L335) ### Bidirectional ```python -keras.layers.Bidirectional(layer, merge_mode='concat', weights=None) +keras.engine.base_layer.wrapped_fn() ``` 순환 신경망에 사용하는 양방향 래퍼. -__인수__ +__인자__ -- __layer__: `Recurrent` 인스턴스. +- __layer__: `RNN` 인스턴스. - __merge_mode__: 정방향 순환 신경망과 - 역방향 순환 신경망의 아웃풋이 병합되는 방식. - {'sum', 'mul', 'concat', 'ave', None} 중 하나. - None의 경우, 아웃풋이 합쳐지지 않고, - 리스트로 반환됩니다. + 역방향 순환 신경망의 출력값이 병합되는 방식을 `{'sum', 'mul', 'concat', 'ave', None}`중에 선택합니다. + `None`의 경우, 출력 값이 합쳐지지 않고, 리스트로 반환됩니다. +- __weights__: `Bidirectional` 층에 사용할 초기 가중치 __오류처리__ -- __ValueError__: `merge_mode` 인수가 유효하지 않은 경우 오류메시지를 전달합니다. +- __ValueError__: `merge_mode` 인자가 유효하지 않은 경우 오류 메시지를 전달합니다. __예시__ - ```python model = Sequential() model.add(Bidirectional(LSTM(10, return_sequences=True), @@ -85,4 +80,3 @@ model.add(Dense(5)) model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy', optimizer='rmsprop') ``` -