keras.preprocessing.sequence.pad_sequences
是 Keras 序列预处理工具中的一个函数,用于将序列进行填充(padding)和截断(truncation)
在机器学习任务中,通常需要将文本数据转换为数值化的表示形式才能输入到模型中进行训练。其中一种最简单的方法是将每个文本分词后映射到整数序列,然后将这些序列填充或截断到固定长度,以便能够输入到模型中。
keras.preprocessing.sequence.pad_sequences
函数可以完成以下任务:
- 将序列进行填充或截断到指定长度
- 可以在序列的开头或结尾添加填充项(默认为0)
- 可以控制填充位置(左填充或右填充)
1、语法
keras.preprocessing.sequence.pad_sequences(sequences, maxlen=None, dtype='int32', padding='pre', truncating='pre', value=0.0)
sequences
:需要进行填充和截断的序列,可以是列表的列表、Numpy 数组等。maxlen
:序列的最大长度。如果指定,则长于该长度的序列将被截断,短于该长度的序列将被填充。dtype
:输出序列的数据类型。padding
:填充位置,默认为'pre'
,表示在序列前面添加填充项。也可以设置为'post'
,表示在序列后面添加填充项。truncating
:截断位置,默认为'pre'
,表示从序列前面开始截断。也可以设置为'post'
,表示从序列后面开始截断。value
:用于填充的值。
2、示例
from tensorflow import keras
texts = ['The cat sat on the mat.', 'The dog slept in the basket.']
tokenizer = keras.preprocessing.text.Tokenizer(num_words=1000)
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)
padded_sequences = keras.preprocessing.sequence.pad_sequences(sequences, maxlen=10)
print(padded_sequences)
打印结果:
[[ 0 0 0 0 1 2 3 4 5 6]
[ 0 0 0 0 0 0 1 7 8 9]]
在以上示例中,首先使用 Tokenizer
将两个句子分词并映射到整数序列,然后使用 pad_sequences
函数将这些序列填充或截断到长度为10。由于第一个句子比第二个句子长,因此需要进行填充操作。默认情况下,在序列的开头添加填充项。