<참고: http://cafe.daum.net/flowlife/S2Ul/19?q=keras >
One-hot Encoding (원핫 인코딩)
글. 오상문 sualchi@daum.net
여러 종류로 나뉜 자료를 각각 구분하기 위하여, 고유한 자료 표현을 하는 방법 중의 하나이다. 예를 들어 사과, 배, 감, 포도라는 네 가지 대상을 구분해야 한다고 할 때, 서로 독립적으로 고유한 표현을 할 수 있도록 아래처럼 표현할 수 있다(벡터 표현).
사과 : [1,0,0,0]배 : [0,1,0,0]감 : [0,0,1,0]포도 : [0,0,0,1]
[참고] 원핫 인코딩 한계
단어 수가 늘어나면 벡터 저장 공간도 커지며, 각 자료 항목의 유사성을 표현할 수 없다.
케라스는 정수 인코딩 결과를 입력으로 받아서 원핫 인코딩을 처리하는 to_categorical() 기능을 제공한다.
from keras_preprocessing.text import Tokenizer
from keras.utils import to_categorical
text= '사과 배 감 포도'
# 단어별 분리
t = Tokenizer()
# [text] 대신 text를 넣으면 글자 단위 인코딩
t.fit_on_texts([text])
print(t.word_index)
# 단어 집합 크기 출력
size = len(t.word_index)
print('size : ', size) # 4
# 시퀀스 자료로 변경
x = t.texts_to_sequences([text])[0]
print(x)
#원핫인코딩 구조로 변경
x = to_categorical(x, num_classes=size + 1) # 단어 집합 크기 +1
print(x)
[실행 결과]
{'사과': 1, '배': 2, '감': 3, '포도': 4}
size : 4
[1, 2, 3, 4]
[[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
<이상>
'AI 머신러닝' 카테고리의 다른 글
케라스, MNIST 손글씨 딥러닝 예제 분석 (0) | 2020.01.15 |
---|---|
케라스, 학습 모델을 파일에 저장하기, 읽어오기 (0) | 2020.01.14 |
케라스(Keras)에서 지원하는 활성 함수 (0) | 2020.01.13 |
파이썬, 단순 선형 회귀 예제 (케라스) (0) | 2020.01.06 |
파이썬, 단순 선형 회귀 예제(텐서플로우2) (0) | 2020.01.04 |