keras只接受长度相同的序列输入,当数据集序列长度不等时,使用该函数进行padding进行填充。
keras.preprocessing.sequence.pad_sequences(sequences,
maxlen=None,
dtype='int32',
padding='pre',
truncating='pre',
value=0.)
sequences: 浮点数或整数构成的两层嵌套列表
maxlen:None或者整数,为序列的最大长度,大于该长度的序列被截短,小于该长度的序列部分补0。
dtype: 返回的numpy array 数据类型
padding:‘pre’或者’post’ ,确定当需要补0,在序列的起始还是结尾补,默认是起始
truncating:‘pre’或者’post’,确定当截断序列时,从起始还是结尾截断,默认是起始
value:浮点数,此值将在填充时代替默认的填充值0
返回值是个2维张量,长度为maxlen
2. 实例
>>>list_1 = [[2,3,4]]
>>>keras.preprocessing.sequence.pad_sequences(list_1, maxlen=10)
array([[0, 0, 0, 0, 0, 0, 0, 2, 3, 4]], dtype=int32)
>>>list_2 = [[1,2,3,4,5]]
>>>keras.preprocessing.sequence.pad_sequences(list_2, maxlen=10)
array([[0, 0, 0, 0, 0, 1, 2, 3, 4, 5]], dtype=int32)
>>>tokenizer.texts_to_sequences(["下 雨 我 加班"])
[[4, 5, 6, 7]]
>>>keras.preprocessing.sequence.pad_sequences(tokenizer.texts_to_sequences(["下 雨 我 加班"]), maxlen=20)
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7]],dtype=int32)