더북(TheBook)

따라서 데이터 전처리가 완료되면 다음 구조를 갖게 됩니다.

1. 토큰화

2. CLS/SEP

3. 마스크 제로 패딩

 

전처리가 완료되었으므로 이제 모델을 생성합니다. 모델은 사전 훈련된 버트(pre-trained BERT)를 이용할 예정이므로 트랜스포머 블록에 대한 입력 값과 완전연결층(밀집층)을 정의합니다(은닉층은 트랜스포머 블록 사용).

코드 10-62 모델 생성

def build_model(max_len=512):
    input_word_ids = tf.keras.layers.Input(shape=(max_len,),
                                 dtype=tf.int32, name='positional_ids') ------ 입력층에서 사용할 input_word_ids 정의
    input_segment_ids = tf.keras.layers.Input(shape=(max_len,),
                                    dtype=tf.int32, name='segment_ids') ------ 입력층에서 사용할 input_segment_ids 정의
    input_mask = tf.keras.layers.Input(shape=(max_len,), 
                             dtype=tf.int32, name='input_mask') ------ 입력층에서 사용할 input_mask 정의
    pooled_output, sequence_output = bert_layer([input_word_ids,
                                                 input_mask,
                                                 input_segment_ids]) ------ 버트 계층의 입력 값으로 앞서 정의한 input_word_ids, input_segment_ids, input_mask 사용
    clf_output = sequence_output[:, 0, :]
    output = tf.keras.layers.Dense(1, activation='sigmoid')(clf_output) ------ 출력층(완전연결층) 정의
    model = tf.keras.Model(inputs=[input_word_ids, input_mask, input_segment_ids],
                           outputs=output) ------ ①
    model.compile(optimizer=RMSprop(lr=2e-6),
                  loss='binary_crossentropy',
                  metrics=['accuracy'])
    return model

model = build_model(max_len=160)
model.summary()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.