转:python函数——序列预处理pad_sequences()序列填充

0. 前言

为了实现的简便,keras只能接受长度相同的序列输入。因此如果目前序列长度参差不齐,这时需要使用pad_sequences()。该函数是将序列转化为经过填充以后的一个长度相同的新序列新序列。

1. 语法
官方语法如下1:
Code.1.1 pad_sequences语法

keras.preprocessing.sequence.pad_sequences(sequences, 
    maxlen=None,
    dtype='int32',
    padding='pre',
    truncating='pre', 
    value=0.)

 


1.1 参数说明
sequences:浮点数或整数构成的两层嵌套列表
maxlen:None或整数,为序列的最大长度。大于此长度的序列将被截短,小于此长度的序列将在后部填0.
dtype:返回的numpy array的数据类型
padding:‘pre’或‘post’,确定当需要补0时,在序列的起始还是结尾补`
truncating:‘pre’或‘post’,确定当需要截断序列时,从起始还是结尾截断
value:浮点数,此值将在填充时代替默认的填充值0
1.2 返回值
返回的是个2维张量,长度为maxlen

2. 实例
Code.2.1 简单示例

 

>>>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)

 

在自然语言中一般和分词器一起使用,在分词器笔记中也提到过pad_sequences使用效果,原文见
python函数——Keras分词器Tokenizer

Code.2.2 常用示例

 

>>>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)

 

https://keras-cn.readthedocs.io/en/latest/preprocessing/sequence/ ↩︎

转自:https://blog.csdn.net/wcy23580/article/details/84957471

posted @ 2023-03-17 15:16  河北大学-徐小波  阅读(152)  评论(0编辑  收藏  举报