Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras.io.preprocessing.sequence.pad_序列做什么?_Python_Deep Learning_Keras - Fatal编程技术网

Python Keras.io.preprocessing.sequence.pad_序列做什么?

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],

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],
       [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正如我所知,重塑不应该破坏梯度流。我已经做了很多次了,没有任何问题。我建议你就你的问题提出一个新问题。你看过这个吗?真是一个惊人的解释。非常感谢你