Python Keras.io.preprocessing.sequence.pad_序列做什么?
Keras文档可以在这里进行改进。读完这篇文章后,我仍然不明白这到底是怎么回事:Python Keras.io.preprocessing.sequence.pad_序列做什么?,python,deep-learning,keras,Python,Deep Learning,Keras,Keras文档可以在这里进行改进。读完这篇文章后,我仍然不明白这到底是怎么回事: 是否有人能说明此函数的作用,并提供一个理想的示例?pad\u sequences用于确保列表中的所有序列具有相同的长度。默认情况下,在每个序列的开头填充0,直到每个序列的长度与最长序列的长度相同 比如说 >>> pad_sequences([[1, 2, 3], [3, 4, 5, 6], [7, 8]]) array([[0, 1, 2, 3], [3, 4, 5, 6],
是否有人能说明此函数的作用,并提供一个理想的示例?
pad\u sequences
用于确保列表中的所有序列具有相同的长度。默认情况下,在每个序列的开头填充0
,直到每个序列的长度与最长序列的长度相同
比如说
>>> pad_sequences([[1, 2, 3], [3, 4, 5, 6], [7, 8]])
array([[0, 1, 2, 3],
[3, 4, 5, 6],
[0, 0, 7, 8]], dtype=int32)
[3,4,5,6]
是最长的序列,因此0
将填充到其他序列中,以便它们的长度匹配[3,4,5,6]
如果您希望填充到序列的末尾,可以设置padding='post'
如果要指定每个序列的最大长度,可以使用maxlen
参数。这将截断比maxlen
长的所有序列
>>> pad_sequences([[1, 2, 3], [3, 4, 5, 6], [7, 8]], maxlen=3)
array([[1, 2, 3],
[4, 5, 6],
[0, 7, 8]], dtype=int32)
现在每个序列的长度改为3
根据这一点,我们可以用pad_序列控制截断。默认情况下,截断设置为pre
,这将截断序列的开始部分。如果您希望截断序列的结束部分,可以将其设置为post
一些示例:
>>来自keras.preprocessing.sequence import pad\u sequences
>>>a=[[1,2,3],[3,4,5,6],[7,8]]
>>>#在序列的开头添加0
>>>pad_序列(a)
数组([[0,1,2,3],
[3, 4, 5, 6],
[0, 0, 7, 8]])
>>>#在序列末尾添加0
>>>填充顺序(a,padding=“post”)
数组([[1,2,3,0],
[3, 4, 5, 6],
[7, 8, 0, 0]])
>>>#添加序列的限制长度
>>>pad_序列(a,maxlen=3)
数组([[1,2,3],
[4, 5, 6],
[0, 7, 8]])
>>>#在序列末尾添加限制长度
>>>padd_序列(a,maxlen=3,padding=“post”)
数组([[1,2,3],
[4, 5, 6],
[7, 8, 0]])
当截断长度大于maxlen
的序列时,序列的起始部分是否总是被删除,或者数字是随机选择的?@kasheemlew根据,您可以使用pad_sequences
的截断
参数进行控制。默认情况下,截断
设置为'pre'
,它截断序列的开始部分。如果您想截断序列的结束部分,可以将其设置为'post'
@oscfri。您知道如何在不使用“重塑”的情况下对张量进行填充,因为“重塑打断”渐变会流入吗tensorflow@DeepakM正如我所知,重塑不应该破坏梯度流。我已经做了很多次了,没有任何问题。我建议你就你的问题提出一个新问题。你看过这个吗?真是一个惊人的解释。非常感谢你