일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- OG tag
- yolo
- oauth
- YOLOv5
- Loss Function
- Spring
- 2021 제9회 문화공공데이터 활용경진대회
- 코드업
- html
- google cloud
- idToken
- google login
- 순환참조
- react native
- skt fellowship 3기
- marksense.ai
- JPA
- google 로그인
- 졸프
- STT
- 양방향 매핑
- 커스텀 데이터 학습
- C++
- @Transactional
- matplotlib
- pandas
- javascript
- AWS
- Spring Boot
- Expo
- Today
- Total
민팽로그
10월 1일 언어 지능 실습 본문
실습 내용
- 모델의 성능을 높이기 위해 adam 함수의 하이퍼파라미터 변경하기
- 임의의 input을 모델에 넣어 감정 분석 결과 확인하기
핵심 코드
1. accuracy 82% 이상으로 높이기(지난시간 모델 부분 수정)
# 3-3
from sklearn.model_selection import train_test_split
from tensorflow import keras
from keras.preprocessing import sequence
from keras import layers, models, optimizers
import numpy as np
# 3-1: sklearn를 사용하여 train과 test 분리
x_train, x_test , y_train , y_test = train_test_split(train,labels,test_size = 0.2)
#자료형 변환
x_train = np.array(x_train)
x_test = np.array(x_test)
y_train = np.array(y_train)
y_test = np.array(y_test)
max_features = 20000
maxlen = 100
hap = 0
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
x_test = sequence.pad_sequences(x_test, maxlen=maxlen)
x = layers.Input((maxlen,))
h = layers.Embedding(max_features, 128)(x) #
h = layers.SimpleRNN(128)(h) #
y = layers.Dense(1, activation='sigmoid')(h)
model = models.Model(x,y)
model.compile(loss='binary_crossentropy',
optimizer=keras.optimizers.Adam(learning_rate=0.00015, beta_1=0.9, beta_2= 0.999, epsilon=1e-7, decay=0),
metrics=['accuracy'])
batch_size = 20
epochs = 4
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
validation_data=(x_test, y_test))
- learning_rate : 학습률 조정
- beta_1 : momentum 관련 파라미터
- beta_2 : adagrad 관련 파라미터
- epsilon : Adagrad 분모 가 0 되는 것을 방지하기 위한 파라메터
- decay : Learning rate 1 epoch 진행 마다 Decay 비율만큼 감소
ex)
Learning rate = 0.1 , decay 0.01
1 Epoch LR = 0.1
2 Epoch LR = 0.09
-> 실습 결과 accuracy : 0.9542
Epoch 1/4 800/800 [==============================] - 50s 61ms/step - loss: 0.6140 - accuracy: 0.6482 - val_loss: 0.5159 - val_accuracy: 0.7567
Epoch 2/4 800/800 [==============================] - 49s 61ms/step - loss: 0.3824 - accuracy: 0.8304 - val_loss: 0.4545 - val_accuracy: 0.7870
Epoch 3/4 800/800 [==============================] - 48s 60ms/step - loss: 0.2549 - accuracy: 0.9001 - val_loss: 0.4757 - val_accuracy: 0.7780
Epoch 4/4 800/800 [==============================] - 48s 60ms/step - loss: 0.1419 - accuracy: 0.9542 - val_loss: 0.5496 - val_accuracy: 0.7812
2. 예측 결과 확인하기
# 3-4
input_text = "재미없어 짜증나"
input_list = komoran.morphs(input_text)
#입력 길이 조정
for i in range(len(input_list)):
word = input_list[i]
input_list[i] = voca_dict[word]
copy = input
for i in range(100 - len(input_list)):
input_list.insert(0, 0)
input_list = np.array(input_list)
inputs = np.zeros((2,100))
inputs[0] = input_list
#예측
result = model.predict(inputs)
print("입력한 텍스트:", input_text, "\n")
if result[0] > 0.6:
print("결과: 긍정문입니다.\n")
print("sigmoid 결과:", result[0][0])
else:
print("결과: 부정문입니다.\n")
print("sigmoid 결과:", result[0][0])
->텍스트 감정 예측 결과


코랩 실습 파일
'머신러닝&딥러닝' 카테고리의 다른 글
성능 향상을 위한 데이터 스케일링 (0) | 2021.10.31 |
---|---|
10월 6일 언어 지능 실습 (0) | 2021.10.06 |
optimizer (0) | 2021.10.01 |
9월 30일 언어 지능 실습 (0) | 2021.10.01 |
9월 29일 언어 지능 실습 (0) | 2021.09.29 |