keras pad_sequence做什么?

Eka*_*Eka 3 python padding keras

我试图char-rnn在keras中编写一个文本为此目的,我必须首先将文本转换为序列,然后填充序列.但是我在实施这一步骤时遇到了很多麻烦.我相信它是因为我对这个函数(pad_sequence)本身的倾斜或缺乏理解.我试图谷歌它并没有找到任何好的教程,他们在keras 文档也没有太多解释.

谁能告诉我怎么样和什么是 pad_sequence什么?为什么我们应该在喂食之前填充序列(这里是字符级别).

请以此文为例?

在我在波士顿布莱根妇女医院的诊所接受诊断患有前列腺癌的50岁男子.他接受了一种新的手术来移除他的前列腺,后来接受了集中的辐射以试图根除任何剩余的癌症.不幸的是,一年后他的病就复发了.但经过两次新疗法后,他的癌症现在出现了问题.如果他的癌症确实蔓延,许多其他治疗方法 - 包括许多甚至还未上市的治疗方法 - 都可能使他的癌症恢复正常.

Nas*_*Ben 5

我们训练RNN的方式是给它们提供一系列序列.

RNN具有众所周知的梯度反向传播问题(见Bengio&al).这就是我们通常向RNN提供有限序列来训练它的原因.因此,在您的示例中,您应该将文本剪切成较小的部分(句子?)以构建训练集.

为了简化实现,keras仅批量接受相同长度的序列(具有混合长度序列的递归模型).因此,如果您的序列长度不同,那么这pad_sequence就是有用的地方.

pad_sequence 将序列列表作为输入(列表列表)并返回填充序列列表.

为了让你的例子起作用,你必须以某种方式将文本切割成字符序列.要做到这一点,你可以选择你选择的分隔符('.'?),然后将所有句子填充到相同的长度.或者,在我看来更聪明,将文本视为char序列(偶数空格和\n),剪切每个n字符,然后将此序列列表作为训练数据.除了最后一个序列(如果数据中的char数不是序列长度n的倍数),这将避免使用填充.

当然,不要忘记将字符标记化并将它们嵌入向量空间,然后再将它们输入RNN.RNN不适用于分类数据.