정말 간단한 LSTM으로 정확도 80%대까지 올렸다. 23,000개 데이터를 7,000번 학습시겼다. 정확하게 하려면 모든 카테고리 데이터를 동일하게 맞추고, 내부 태그를 정확하게 정리해야 하는데 시간없어 하지 못했다.
[21:33:28]>cat process | head -100 로드한 모델 vocab 최대값은 2611 로드한 모델 vectror 크기는 5 인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B'] 출력 크기는 9 Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= embedding_1 (Embedding) (None, 10, 5) 13055 _________________________________________________________________ lstm_1 (LSTM) (None, 32) 4864 _________________________________________________________________ dropout_1 (Dropout) (None, 32) 0 _________________________________________________________________ dense_1 (Dense) (None, 16) 528 _________________________________________________________________ dropout_2 (Dropout) (None, 16) 0 _________________________________________________________________ dense_2 (Dense) (None, 9) 153 ================================================================= Total params: 18,600 Trainable params: 5,545 Non-trainable params: 13,055 _________________________________________________________________ Train on 18757 samples, validate on 4690 samples Epoch 1/1000 - 5s - loss: 2.1842 - acc: 0.0887 - val_loss: 2.1683 - val_acc: 0.0908 Epoch 00001: acc improved from -inf to 0.08866, saving model to ./saved_network_weightv2.h5 Epoch 2/1000 - 4s - loss: 2.1073 - acc: 0.1674 - val_loss: 2.1181 - val_acc: 0.2066 Epoch 00002: acc improved from 0.08866 to 0.16735, saving model to ./saved_network_weightv2.h5 Epoch 3/1000 - 4s - loss: 2.0133 - acc: 0.2660 - val_loss: 2.0448 - val_acc: 0.2652 Epoch 02019: acc improved from 0.88084 to 0.88122, saving model to ./saved_network_weightv2.h5 Epoch 02129: acc improved from 0.88122 to 0.88218, saving model to ./saved_network_weightv2.h5 Epoch 02190: acc improved from 0.88218 to 0.88292, saving model to ./saved_network_weightv2.h5 Epoch 02542: acc improved from 0.88292 to 0.88394, saving model to ./saved_network_weightv2.h5 Epoch 02805: acc improved from 0.88394 to 0.88426, saving model to ./saved_network_weightv2.h5 Epoch 02928: acc improved from 0.88426 to 0.88474, saving model to ./saved_network_weightv2.h5 Epoch 03050: acc improved from 0.88474 to 0.88607, saving model to ./saved_network_weightv2.h5 Epoch 03836: acc improved from 0.88607 to 0.88650, saving model to ./saved_network_weightv2.h5 Epoch 03940: acc improved from 0.88650 to 0.88762, saving model to ./saved_network_weightv2.h5 Epoch 04337: acc improved from 0.88762 to 0.88810, saving model to ./saved_network_weightv2.h5
전에 텍스트 0이 인덱스 번호 47번인가 그랬다. 아무래도 이상하여 확이해보니 zero padding에는 0으로 넣었다. 0을 숫자로 처리할지, zero padding 값으로 처리할 지 결정해야 한다. 일단 검증할 경우에는 0을 강제로 입력했다.
입력한 단어는 ['M', 'YD', '4', 'PIN', 'SHIFT', '1', '전진', '단', 'ZERO!!', 'ZERO!!'] 내 예상은 이번 텍스트가 0.87확율로 [4]임. 인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B'] 출력 크기는 9 1/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 M 69 [69] 2/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 YD 1 [69, 1] 3/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 4 11 [69, 1, 11] 4/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 10 21 [69, 1, 11, 21] 5/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 ST 0 [69, 1, 11, 21, 0] 6/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 PIN 154 [69, 1, 11, 21, 0, 154] 7/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 후진 42 [69, 1, 11, 21, 0, 154, 42] 8/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 단 13 [69, 1, 11, 21, 0, 154, 42, 13] 9/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 ZERO!! zero index는 0 [69, 1, 11, 21, 0, 154, 42, 13, 0] 10/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 1, 11, 21, 0, 154, 42, 13, 0, 0] 입력한 단어는 ['M', 'YD', '4', '10', 'ST', 'PIN', '후진', '단', 'ZERO!!', 'ZERO!!'] 내 예상은 이번 텍스트가 0.84확율로 [4]임. 인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B'] 출력 크기는 9 1/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 M 69 [69] 2/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 OTR 91 [69, 91] 3/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 랙 28 [69, 91, 28] 4/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 10 21 [69, 91, 28, 21] 5/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 번방 121 [69, 91, 28, 21, 121] 6/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 차종 6 [69, 91, 28, 21, 121, 6] 7/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 20 51 [69, 91, 28, 21, 121, 6, 51] 8/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 이상 8 [69, 91, 28, 21, 121, 6, 51, 8] 9/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 ZERO!! zero index는 0 [69, 91, 28, 21, 121, 6, 51, 8, 0] 10/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 91, 28, 21, 121, 6, 51, 8, 0, 0] 입력한 단어는 ['M', 'OTR', '랙', '10', '번방', '차종', '20', '이상', 'ZERO!!', 'ZERO!!'] 내 예상은 이번 텍스트가 1.00확율로 [5]임. 인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B'] 출력 크기는 9 1/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 M 69 [69] 2/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 70 36 [69, 36] 3/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 ST 0 [69, 36, 0] 4/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 주변 292 [69, 36, 0, 292] 5/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 설비 322 [69, 36, 0, 292, 322] 6/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 비상 63 [69, 36, 0, 292, 322, 63] 7/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 정지 73 [69, 36, 0, 292, 322, 63, 73] 8/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 ZERO!! zero index는 0 [69, 36, 0, 292, 322, 63, 73, 0] 9/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 36, 0, 292, 322, 63, 73, 0, 0] 10/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 36, 0, 292, 322, 63, 73, 0, 0, 0] 입력한 단어는 ['M', '70', 'ST', '주변', '설비', '비상', '정지', 'ZERO!!', 'ZERO!!', 'ZERO!!'] 내 예상은 이번 텍스트가 1.00확율로 [2]임. 인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B'] 출력 크기는 9 1/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 M 69 [69] 2/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 보조제어 리스트에 없는 단어 입력함. 다시 입력하세요 2/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 보조 26 [69, 26] 3/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 제어 38 [69, 26, 38] 4/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 GP 228 [69, 26, 38, 228] 5/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 동작 29 [69, 26, 38, 228, 29] 6/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 선택 14 [69, 26, 38, 228, 29, 14] 7/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 16 448 [69, 26, 38, 228, 29, 14, 448] 8/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 ZERO!! zero index는 0 [69, 26, 38, 228, 29, 14, 448, 0] 9/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 26, 38, 228, 29, 14, 448, 0, 0] 10/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 26, 38, 228, 29, 14, 448, 0, 0, 0] 입력한 단어는 ['M', '보조', '제어', 'GP', '동작', '선택', '16', 'ZERO!!', 'ZERO!!', 'ZERO!!'] 내 예상은 이번 텍스트가 1.00확율로 [0]임. 인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B'] 출력 크기는 9 1/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 M 69 [69] 2/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 70 36 [69, 36] 3/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 RH 9 [69, 36, 9] 4/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 피더 457 [69, 36, 9, 457] 5/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 전후진 리스트에 없는 단어 입력함. 다시 입력하세요 5/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 LS 75 [69, 36, 9, 457, 75] 6/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 이상 8 [69, 36, 9, 457, 75, 8] 7/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 ZERO!! zero index는 0 [69, 36, 9, 457, 75, 8, 0] 8/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 36, 9, 457, 75, 8, 0, 0] 9/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 36, 9, 457, 75, 8, 0, 0, 0] 10/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 36, 9, 457, 75, 8, 0, 0, 0, 0] 입력한 단어는 ['M', '70', 'RH', '피더', 'LS', '이상', 'ZERO!!', 'ZERO!!', 'ZERO!!', 'ZERO!!'] 내 예상은 이번 텍스트가 1.00확율로 [5]임. 인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B'] 출력 크기는 9 1/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 M 69 [69] 2/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 80 209 [69, 209] 3/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 LH 5 [69, 209, 5] 4/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 카울 리스트에 없는 단어 입력함. 다시 입력하세요 4/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 PIN 154 [69, 209, 5, 154] 5/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 LS 75 [69, 209, 5, 154, 75] 6/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 이상 8 [69, 209, 5, 154, 75, 8] 7/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 ZERO!! zero index는 0 [69, 209, 5, 154, 75, 8, 0] 8/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 209, 5, 154, 75, 8, 0, 0] 9/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 209, 5, 154, 75, 8, 0, 0, 0] 10/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 209, 5, 154, 75, 8, 0, 0, 0, 0] 입력한 단어는 ['M', '80', 'LH', 'PIN', 'LS', '이상', 'ZERO!!', 'ZERO!!', 'ZERO!!', 'ZERO!!'] 내 예상은 이번 텍스트가 1.00확율로 [5]임. 인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B'] 출력 크기는 9 1/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 M 69 [69] 2/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 60 134 [69, 134] 3/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 RH 9 [69, 134, 9] 4/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 CAM 179 [69, 134, 9, 179] 5/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 YD 1 [69, 134, 9, 179, 1] 6/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 제품 50 [69, 134, 9, 179, 1, 50] 7/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 감지 53 [69, 134, 9, 179, 1, 50, 53] 8/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 1 7 [69, 134, 9, 179, 1, 50, 53, 7] 9/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 ZERO!! zero index는 0 [69, 134, 9, 179, 1, 50, 53, 7, 0] 10/10 단어 입력 끝내려면 END!!를 입력 마지막까지 0을 채우려면 ZERO!!를 입력 zero index는 0 [69, 134, 9, 179, 1, 50, 53, 7, 0, 0] 입력한 단어는 ['M', '60', 'RH', 'CAM', 'YD', '제품', '감지', '1', 'ZERO!!', 'ZERO!!'] 내 예상은 이번 텍스트가 1.00확율로 [6]임. 인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B'] 출력 크기는 9