[케라스] 영화리뷰 긍정부정 분류하기
2020. 4. 22. 13:49ㆍ노트/Python : 프로그래밍
IMDB 데이터 로드
from keras.datasets import imdb
(trainData, trainLabel),(testData, testLabel)= imdb.load_data(num_words=10000)
# 자주 사용된 1000개 단어 만 추출 사용
wordIndex= imdb.get_word_index()
# 단어의 Index 호출
rev_wordIndex=dict([(value,key) for (key,value) in wordIndex.items() ])
# 단어, 갯수 dict 형태로 저장
# i가 0,1,2,3 일때는 "?"를 get (쓸모없는 데이터 제거 )
decReview= " ".join([rev_wordIndex.get(i-3,"?") for i in trainData[0]])
# 동일한 길이의 리스트가 되도록 패딩 작업 수행
# 원핫인코딩
def vec_seq(data, dim=10000):
res = np.zeros((len(data),dim))
for i,s in enumerate(data):
res[i,s]=1
return res
xTrain = vec_seq(trainData)
xTest=vec_seq(testData)
#훈련데이터 -> 벡터로 변환
yTrain = trainLabel.astype('float32')
yTest = testLabel.astype('float32')
신경망 모델 생성
# 신경망 모델생성
model = Sequential()
model.add(Dense(16, activation='relu',input_shape=(10000,)))
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss="binary_crossentropy",
optimizer='rmsprop',
metrics=['accuracy'])
xVal=xTrain[:10000]
p_xTrain=xTrain[10000:]
yVal=yTrain[:10000]
p_yTrain=yTrain[10000:]
# 모델학습
history=model.fit(p_xTrain,p_yTrain, epochs=20, batch_size=512,validation_data=(xVal,yVal))
정확도와 손실 증감량 확인
historyDict=history.history
acc=history.history['accuracy']
val_acc=history.history['val_accuracy']
loss=history.history['loss']
val_loss=history.history['val_loss']
%matplotlib notebook
epo = range(1, len(acc)+1)
plt.plot(epo, loss, 'bo', label="Traing loss")
plt.plot(epo, val_loss, 'b', label="Val loss")
plt.xlabel("epoch")
plt.ylabel("Loss")
plt.legend()
plt.show()
# val loss가 떨어지다가 올라가기 전에 트레이닝을 멈추는 것이 좋다
%matplotlib notebook
plt.plot(epo, acc, 'ro', label="Traing accuracy")
plt.plot(epo, val_acc, 'r', label="Val accuracy")
plt.xlabel("epoch")
plt.ylabel("Accuracy")
plt.legend()
plt.show()
#모델평가하기
model.evaluate(xTest,yTest)
>>>[0.7668838533973694, 0.8485999703407288]
출처: 케라스 창시자에게 배우는 딥러닝 p104~p116
'노트 > Python : 프로그래밍' 카테고리의 다른 글
[신경망] MNIST 데이터를 이용한 CNN모델 코드 (0) | 2020.04.23 |
---|---|
[케라스/텐서플로우] 주택가격 예측하기 코드 (0) | 2020.04.23 |
[파이썬] 데이터시각화(2) (seaborn 패키지) (0) | 2020.04.22 |
[신경망] 선형회귀로 분류가 불가능한 경우(XOR problem) (0) | 2020.04.21 |
[텐서플로우/케라스] MNIST 숫자 분류하기 (softmax) (0) | 2020.04.21 |