전처리와 정수 인코딩으로 각 문장들을 수치화 한 후에 각 문장들을 하나의 행렬로 보고 가장 긴 문장의 길이로 모든 문장들의 길이를 맞춰주는 것을 패딩(Padding) 이라 한다. 빠른 병렬 연산을 위해 필요한 기능이며, 보통 숫자 0으로 채워넣는 제로 패딩(zero padding) 을 사용한다. 패딩 길이를 지정해서 긴 문장을 자를 수도 있다.


Numpy 패딩


import numpy as np
 
encoded = [[15], [185], [135], [92], [2432], [32], [146], [146], [142], [773210111], [112313]]
 
max_len = max(len(item) for item in encoded)  # 정수 인코딩 된 각 문장의 가장 많은 요소 개수
 
for item in encoded:
    while len(item) < max_len:
        item.append(0)  # 제로 패딩
 
print(np.array(encoded))
 
 
''' 출력
[[ 1  5  0  0  0  0  0]
 [ 1  8  5  0  0  0  0]
 [ 1  3  5  0  0  0  0]
 [ 9  2  0  0  0  0  0]
 [ 2  4  3  2  0  0  0]
 [ 3  2  0  0  0  0  0]
 [ 1  4  6  0  0  0  0]
 [ 1  4  6  0  0  0  0]
 [ 1  4  2  0  0  0  0]
 [ 7  7  3  2 10  1 11]
 [ 1 12  3 13  0  0  0]]
'''
cs



Keras 패딩


from tensorflow.keras.preprocessing.sequence import pad_sequences
 
encoded = [[15], [185], [135], [92], [2432], [32], [146], [146], [142], [773210111], [112313]]
 
print(pad_sequences(encoded, padding='post', maxlen=7, value=0))
cs


pad_sequences 한 줄로 위와 동일한 결과를 출력한다.




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,