본문 바로가기

tensorflow5

[LSTM] TF2에서 단방향 LSTM 모델 구현 - 2 tf.keras.layers.LSTM 의 속성 return_sequences를 True 로 설정하면 각 시퀀스별 은닉 상태(hidden state)를 모두 출력하게 된다. 다음 그림은 시퀀스 길이가 4 \((t-3, t-2, t-1, t)\), 은닉 상태변수의 차원이 \(\mathbf{h}_t \in \mathbb{R}^3\), 입력 변수의 차원이 \(\mathbf{x}_t \in \mathbb{R}^8\) 인 LSTM 모델을 나타낸 것이다. 이 모델의 특징은 각 시퀀스에서 은닉 상태가 모두 출력된다는 것이다. 이를 코드로 구현하면 다음과 같다. input = tf.keras.layers.Input(shape=(4, 8)) # (seq length, input dimension) lstm = tf.ker.. 2022. 7. 23.
[LSTM] TF2에서 단방향 LSTM 모델 구현 - 1 LSTM(Long Short-Term Memory)은 자연어 처리, 시계열 및 기타 시퀀스 모델링 작업에 사용되는 RNN 신경망의 한 종류이다. 여기서는 단방향(unidirection) LSTM모델을 Tensorflow2로 어떻게 구현할 수 있는지 그 방법에 대해서 알아보고자 한다. 실제로 코드를 작성하기 전에 먼저 LSTM의 구조와 내부 작동에 대해서 이해하는 것이 순서이겠지만, 이에 대해서는 다음에 포스팅하기로 하고 일단 LSTM 모델을 Tensorflow2 코드로 구현하는 것에 집중하도록 하겠다. LSTM의 모든 기능은 그림에서 녹색 메모로 표시된 메모리셀(memory cell)이라는 곳에서 수행된다. 메모리셀은 3개의 입력과 2개의 출력이 있다. 입력으로는 은닉 상태(hidden state) \(.. 2022. 7. 21.
TensorFlow2에서 1차, 2차 편미분 계산 자동으로 미분을 계산하려면 Tensorflow는 순방향 패스 과정에서 어떤 순서로 어떤 연산을 했는지 기억해야 한다. 그런 다음, 역방향 패스 중에 이 연산 목록을 역순으로 이동해 가며 미분(derivative)을 계산한다. Tensorflow는 자동으로 미분을 계산하기 위해서 tf.GradientTape API를 제공한다. Tensorflow는 tf.GradientTape의 컨텍스트 내에서 실행 된 관련 연산을 '테이프'에 '기록'한다. 그런 다음 해당 테이프를 거꾸로 돌려서 기록된 연산의 미분을 계산한다. tf.Variable로 생성된 변수에 대해서만 미분할 수 있는데 상수인 경우에도 watch() 메쏘드를 이용하면 미분을 계산할 수 있다. 예를 들어서 \(y(x,t)=x^3+2t\) 를 \(x\) .. 2021. 7. 25.
Model Subclassing 멀티 입력 신경망 모델 구현 방법 Model Subclassing API를 사용하여 입력을 여러 개 갖는 즉, 멀티 입력 신경망 모델을 어떻게 구현하고 빌드(build)할 수 있을까. 강화학습의 DDPG알고리즘에서는 행동가치 함수(actor-value function)를 크리틱(critic) 신경망으로 구현한다. 크리틱 신경망은 입력으로 상태(state)와 행동(action)등 두 개를 받는데, 이를 Model Subclassing API를 이용해서 구현해 보자. 구현해야 할 신경망 구조는 다음 그림과 같다. 상태변수를 첫번째 은닉층에서 처리한 후 두번째 은닉층에서 행동과 병합하는 구조다. from tensorflow.keras.models import Model from tensorflow.keras.layers import Input.. 2021. 3. 16.
Sequential API로 간단한 CNN 구현해 보기 TensorFlow2에서 제공하는 모델 구현 API는 크게 3가지 종류가 있다. 신경망 레이어를 순차적으로 쌓아 나가는 방식의 Sequential API, 레이어를 함수형태로 정의하는 Functional API, 그리고 클래스 형으로 모델을 만들 수 있는 Model Subclassing API다. Sequential API는 간단한 모델을 쉽게 구축할 수 있으며, 빈 깡통 모델을 만들어 놓고 순차적으로 레이어를 추가하거나 한꺼번에 순차적인 모델을 구축할 수 있다. Functional API는 복잡한 모델을 구축할 때 유리하며 ResNet과 같이 순차적이지 않은 모델도 구축할 수 있다. Model Subclassing API는 자유도가 제일 높은 모델 구축 방법으로서 사용자 자신의 방법으로 신경망을 만들고.. 2020. 7. 17.