- This repository is a tutorial for RNN model developers using Tensorflow 2.
- 이 tutorial은 tensorflow 1.x 용 RNN Tutorial을 Tensorflow 2에 맞게 수정한 것이다.
- 이 tutorial 코드를 실행하기 위해서는 Tensorflow 2.2.0, tensorflow_addons 0.10.0 필요
- tutorial 중간 중간 나오는 코드를 copy하여 실행하면 된다.
- TensorFlow SIG(Special Interest Group) Addons은 Tensorflow 2에 없는 기능을 구현한 API들이다.
- tensorflow 1.x 의 tensorflow.contrib.seq2seq는 tensorflow 2.x에서 tensorflow_addons.seq2seq로 변환되었다고 볼 수 있다.
- 여기서는 Addons 중에서 RNN관련 API를 살펴볼 예정이다.
- tfa.seq2seq.Sampler
- tfa.seq2seq.BasicDecoder, tfa.seq2seq.BeamSearchDecoder
- tfa.seq2seq.dynamic_decode
- tfa.seq2seq.BahdanauAttention, tfa.seq2seq.LuongAttention
- Decoder에서 좀 더 다양한 Sampling을 통한 output을 만들어 내기 위해서는 여러가지 Sampler를 다룰 수 있어야 한다.
- 또한, RNNCell, Sampler를 custumization하여 User Defined RNNCell, Sampler를 만들어 보자(Custom RNNCell, Custom Sampler).
RNN모델의 기본적인 구조와 이를 위한 Tensorflow API를 살펴본다.
- Introduction & Embedding
- LSTM, GRU
- Multi-Layer RNN
- Bidirectional RNN
- Tensorflow Addons
- Decoder, Sampler
- Encoder-Decoder(seq2seq) 모델
- Attention 개념.
- Dot Product Attention, Luong Attention, Bahdanau Attention
- Tensorflow에서의 Attention 구현 Detail.
- Beam Search Algorithm과 Tensorflow API
tfa.seq2seq.BeamSearchDecoder
- Minimal Character Model Train 시키기.
- SampleEmbeddingSampler, ScheduledOutputTrainingSampler
tfa.seq2seq.InferenceSampler
를 이용하여 Customization해 보자.- User Defined Sampler는 왜 필요한가?
- User Defined Sampler(Custom Sampler) 만들기
- Custom Layer = User Defined Layer 만들기
- User Defined RNNCell 만들기