inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

BERT를 이용한 텍스트 분류에서 다중분류라면 어떻게 해야할까요?

해결됨

예제로 배우는 딥러닝 자연어 처리 입문 NLP with TensorFlow - RNN부터 BERT까지

보여주신 두 개의 예가 모두 이진 분류 문제라서 질문드려 봅니다. AUTOTUNE = tf.data.AUTOTUNE batch_size = 32 class_names = ['neg', 'pos'] # train 데이터셋 준비 df_train_target = df_train.pop('labels') train_dataset = tf.data.Dataset.from_tensor_slices((df_train.values, df_train_target.values)) raw_train_ds = train_dataset.shuffle(len(df_train)).batch(batch_size) train_ds = raw_train_ds.cache().prefetch(buffer_size=AUTOTUNE) # validation 데이터셋 준비 df_valid_target = df_valid.pop('labels') valid_dataset = tf.data.Dataset.from_tensor_slices((df_valid.values, df_valid_target.values)) valid_ds = valid_dataset.shuffle(len(df_valid)).batch(batch_size) valid_ds = valid_ds.cache().prefetch(buffer_size=AUTOTUNE) # test 데이터셋 df_test_target = df_test.pop('labels') test_dataset = tf.data.Dataset.from_tensor_slices((df_test.values, df_test_target.values)) test_ds = test_dataset.shuffle(len(df_test)).batch(batch_size) test_ds = test_ds.cache().prefetch(buffer_size=AUTOTUNE) 여기서 class_names를 class수 에 맞게 변경하고 net = tf.keras.layers.Dense(1, activation=None, name='classifier')(net) Fine Tuning시 Dense Layer를 class수에 맞게 변경 하고... < 여기서 activation은 이진 분류 문제임에도 sigmoid가 아니라 None인데, 그럴경우 linear로 되는 것으로 알고있습니다. 다중분류 문제 분류를 할 때도 None으로 설정하면 될까요? > def print_my_examples(inputs, results): result_for_printing = \ [f'input: {inputs[i]:<30} : score: {results[i][0]:.6f}' for i in range(len(inputs))] print(*result_for_printing, sep='\n') print() examples = [ 'this is such an amazing movie!', # this is the same sentence tried earlier 'The movie was great!', 'The movie was meh.', 'The movie was okish.', 'The movie was terrible...' ] reloaded_results = tf.sigmoid(reloaded_model(tf.constant(examples))) original_results = tf.sigmoid(classifier_model(tf.constant(examples))) print('Results from the saved model:') print_my_examples(examples, reloaded_results) print('Results from the model in memory:') print_my_examples(examples, original_results) 마지막으로 다중분류를 할 때, reloaded_results = tf.sigmoid(reloaded_model(tf.constant(examples))) original_results = tf.sigmoid(classifier_model(tf.constant(examples))) 여기서 tf.softmax로 바꿔주면 되나요?

  • 딥러닝
  • tensorflow
  • NLP
  • multiclass
구비연 댓글 1 좋아요 1 조회수 1557

인기 태그

인프런 TOP Writers

주간 인기글