Natural Language Processing in TensorFlow week3

han811·2020년 11월 14일
0
post-thumbnail

Sequence models

드디어 RNN, LSTM, GRU를 이용하여 sequence 데이터를 처리하는 모델을 만들어본다.

model = tf.keras.Sequential([
    tf.keras.layers.Embedding(tokenizer.vocab_size, 64),
    tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64, return_sequences=True)),
    tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32)),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

그냥 tf.keras.layers.LSTM을 쓰면 one directional이고 tf.keras.layers.Bidirectional로 wrapping하면 bi-directional LSTM이 된다.
lstm을 여러 층으로 쌓고 싶으면 상위 lstm의 return_sequence를 true로 해주어야 한다.

tf.keras.layers.LSTM official docu
https://www.tensorflow.org/api_docs/python/tf/keras/layers/LSTM

model = tf.keras.Sequential([
    tf.keras.layers.Embedding(tokenizer.vocab_size, 64),
    tf.keras.layers.Conv1D(128, 5, activation='relu'),
    tf.keras.layers.GlobalAveragePooling1D(),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

Conv1D를 이용하면 임베딩 차원을 filter차원으로 바꿀 수 있다.
제일 안쪽에서 2번째 차원은 kernel size로 sliding한 차원으로 나오게 된다.
ex) kernel size가 3이고 해당 차원이 10이면 8이 나오겠지

tf.keras.layers.Conv1D official docu
https://www.tensorflow.org/api_docs/python/tf/keras/layers/Conv1D

my github repo - https://github.com/han811/tensorflow

profile
han811

0개의 댓글