관리 메뉴

솜씨좋은장씨

[Kaggle DAY09]Real or Not? NLP with Disaster Tweets! 본문

Kaggle/Real or Not? NLP with Disaster Tweets

[Kaggle DAY09]Real or Not? NLP with Disaster Tweets!

솜씨좋은장씨 2020. 3. 7. 02:04
728x90
반응형

Kaggle 도전 9일차!

오늘은 한국인공지능 아카데미 실용교육에서 배운 BERT에 학습데이터를 있는 그대로 사용하여 결과를 내어 보았습니다.

 

kimwoonggon/publicservant_AI

Contribute to kimwoonggon/publicservant_AI development by creating an account on GitHub.

github.com

def get_bert_finetuning_model(model):
  inputs = model.inputs[:2]
  dense = model.layers[-3].output


  outputs = keras.layers.Dense(2, activation='sigmoid',kernel_initializer=keras.initializers.TruncatedNormal(stddev=0.02),
                              name = 'real_output')(dense)



  bert_model = keras.models.Model(inputs, outputs)
  bert_model.compile(
      optimizer=RAdam(learning_rate=0.00001, weight_decay=0.0025),
      loss='binary_crossentropy',
      metrics=['accuracy'])
  
  return bert_model

기존에 마지막 레이어에 Dense( 1 ) 이었던 부분을 Dense( 2 )로 바꾸어주고

train_y_new = []

for i in range(len(train_y)):
  if train_y[i] == 1:
    train_y_new.append([0, 1])
  else:
    train_y_new.append([1, 0])

train_y_new = np.array(train_y_new)
train_y_new

라벨데이터를 One-Hot Encoding 시켜주었습니다.

 

첫번째 제출

sess = K.get_session()
uninitialized_variables = set([i.decode('ascii') for i in sess.run(tf.report_uninitialized_variables())])
init = tf.variables_initializer([v for v in tf.global_variables() if v.name.split(':')[0] in uninitialized_variables])
sess.run(init)

bert_model = get_bert_finetuning_model(model)
history = bert_model.fit(train_x, train_y_new, epochs=2, batch_size=16, verbose = 1, validation_split=0.05, shuffle=True)

결과

 

두번째 제출

bert_model2 = get_bert_finetuning_model(model)
history2 = bert_model2.fit(train_x, train_y_new, epochs=2, batch_size=32, verbose = 1, validation_split=0.05, shuffle=True)

결과

 

세번째 제출

bert_model3 = get_bert_finetuning_model(model)
history2 = bert_model3.fit(train_x, train_y_new, epochs=3, batch_size=32, verbose = 1, validation_split=0.05, shuffle=True)

결과

 

네번째 제출

bert_model4 = get_bert_finetuning_model(model)
history2 = bert_model4.fit(train_x, train_y_new, epochs=5, batch_size=32, verbose = 1, validation_split=0.05, shuffle=True)

결과

 

 

잘 되지 않았던 부분

중간에 다음과 같은 오류가 나서 확인해보니 GPU가 P4로 바뀌어 GPU메모리가 부족했던 문제였습니다.

Comments