[NLP Project] LSTM + self-attention

2022. 11. 8. 10:40·Project/캡스톤디자인2
728x90
반응형

모델에 attention 층 추가

model.add(Bidirectional(LSTM(units=128, return_sequences=True, dropout=0.2, recurrent_dropout=0.2)))
model.add(SeqSelfAttention(attention_activation='sigmoid'))
model.add(Bidirectional(LSTM(units=64, return_sequences=True, dropout=0.2, recurrent_dropout=0.2)))
model.add(SeqSelfAttention(attention_activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))

model.py

from keras.models import Sequential
from keras.layers import Dense, Embedding, LSTM, Bidirectional, TimeDistributed
from keras_self_attention import SeqSelfAttention
from keras.optimizers import Adam


def modeling(vocab_size, max_len,tag_size):
    model = Sequential()
    model.add(Embedding(input_dim = vocab_size, output_dim= 128, input_length= max_len, mask_zero=True))
    model.add(Bidirectional(LSTM(units=128, return_sequences=True, dropout=0.2, recurrent_dropout=0.2)))
    model.add(SeqSelfAttention(attention_activation='sigmoid'))
    model.add(Bidirectional(LSTM(units=64, return_sequences=True, dropout=0.2, recurrent_dropout=0.2)))
    model.add(SeqSelfAttention(attention_activation='sigmoid'))
    model.add(Dense(1, activation='sigmoid'))
    model.add(TimeDistributed(Dense(tag_size,activation='softmax'))) # 최종 결과 (다중 분류이므로 소프트맥스 함수 사용)
    model.compile(loss= 'categorical_crossentropy',
                    optimizer= Adam(0.005), # 학습률
                    metrics=['accuracy'], 
                    ) # 모델 컴파일
    
    return model

 

역시 lstm 보다는 학습 속도가 많이 느려졌다.

batch_size=128, epochs=3

모델이 무겁고, 학습도 잘 안되어서 중단.(68% 정도로 나옴) 모델 층을 다시 변경했다.

 

def modeling(vocab_size, max_len,tag_size):
    model = Sequential()
    model.add(Embedding(input_dim = vocab_size, output_dim= 128, input_length= max_len, mask_zero=True))
    model.add(Bidirectional(LSTM(units=128, return_sequences=True, dropout=0.2, recurrent_dropout=0.2)))
    model.add(SeqSelfAttention(attention_activation='relu'))
    model.add(TimeDistributed(Dense(tag_size,activation='softmax'))) # 최종 결과 (다중 분류이므로 소프트맥스 함수 사용)
    model.compile(loss= 'categorical_crossentropy',
                    optimizer= Adam(0.001), # 학습률
                    metrics=['accuracy'], 
                    ) # 모델 컴파일
    
    return model

epoch = 3

lr = 0.001

 

학습로그

더보기

Epoch 1/3
2022-11-08 10:57:54.993638: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublas.so.10
563/563 [==============================] - 178s 310ms/step - loss: 0.2701 - accuracy: 0.6787 - val_loss: 0.1965 - val_accuracy: 0.6871
Epoch 2/3
563/563 [==============================] - 173s 307ms/step - loss: 0.1933 - accuracy: 0.6886 - val_loss: 0.1828 - val_accuracy: 0.7056
Epoch 3/3
563/563 [==============================] - 173s 307ms/step - loss: 0.1804 - accuracy: 0.7059 - val_loss: 0.1728 - val_accuracy: 0.7212
563/563 [==============================] - 21s 38ms/step - loss: 0.1728 - accuracy: 0.7212
단어             |실제값  |예측값
----------------------------------
무단전재&재배포         |-      |-
금즙               |-      |-
-윤신욱             |PER_B  |PER_B
-                |CVL_B  |PER_B
uk82@mydaily.co.kr|TRM_B  |-

 

에포크를 늘리면 괜찮을지도..

 

해당 모델은 test_model3.h5 로 저장

728x90
반응형

'Project > 캡스톤디자인2' 카테고리의 다른 글

[NLP Project] 1-2. 데이터 전처리 - 특수문자 제거하기  (0) 2022.11.09
[NLP Project] F1 Score  (0) 2022.11.08
[NLP Project] input 값을 넣어 개체명 인식하기 - 오류 해결  (0) 2022.11.07
[NLP Project] 성능 기록  (0) 2022.11.06
[NLP Project] 5. 정답 예측하기  (0) 2022.11.06
'Project/캡스톤디자인2' 카테고리의 다른 글
  • [NLP Project] 1-2. 데이터 전처리 - 특수문자 제거하기
  • [NLP Project] F1 Score
  • [NLP Project] input 값을 넣어 개체명 인식하기 - 오류 해결
  • [NLP Project] 성능 기록
sillon
sillon
꾸준해지려고 합니다..
    반응형
  • sillon
    sillon coding
    sillon
  • 전체
    오늘
    어제
    • menu (614)
      • notice (2)
      • python (68)
        • 자료구조 & 알고리즘 (23)
        • 라이브러리 (19)
        • 기초 (8)
        • 자동화 (14)
        • 보안 (1)
      • coding test - python (301)
        • Programmers (166)
        • 백준 (76)
        • Code Tree (22)
        • 기본기 문제 (37)
      • coding test - C++ (5)
        • Programmers (4)
        • 백준 (1)
        • 기본기문제 (0)
      • 공부정리 (5)
        • 신호처리 시스템 (0)
        • Deep learnig & Machine lear.. (41)
        • Data Science (18)
        • Computer Vision (17)
        • NLP (40)
        • Dacon (2)
        • 모두를 위한 딥러닝 (강의 정리) (4)
        • 모두의 딥러닝 (교재 정리) (9)
        • 통계 (2)
      • HCI (23)
        • Haptics (7)
        • Graphics (11)
        • Arduino (4)
      • Project (21)
        • Web Project (1)
        • App Project (1)
        • Paper Project (1)
        • 캡스톤디자인2 (17)
        • etc (1)
      • OS (10)
        • Ubuntu (9)
        • Rasberry pi (1)
      • App & Web (9)
        • Android (7)
        • javascript (2)
      • C++ (5)
        • 기초 (5)
      • Cloud & SERVER (8)
        • Git (2)
        • Docker (1)
        • DB (4)
      • Paper (7)
        • NLP Paper review (6)
      • 데이터 분석 (0)
        • GIS (0)
      • daily (2)
        • 대학원 준비 (0)
      • 영어공부 (6)
        • job interview (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    programmers
    소수
    Python
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
sillon
[NLP Project] LSTM + self-attention
상단으로

티스토리툴바