微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

每个批次具有不同输入大小的LSTMpyTorch

如何解决每个批次具有不同输入大小的LSTMpyTorch

我正在从TensorFlow切换到PyTorch,并且我的网络遇到了一些麻烦。

我制作了一个整理器(用于DataLoader),将每个批次中的每个张量(原先的句子)填充到每个批次的Maslen中。

所以每个批次的输入大小都不同。

我的网络由LSTM-> LSTM-> DENSE组成

我的问题是,如何为LSTM指定此可变输入大小?

我假设在TensorFlow中我将对LSTM进行Input((None,x))压缩。

提前谢谢

解决方法

LSTM的输入大小不是样本的长度。假设您有一个包含三个样本的批次:第一个样本的长度为10,第二个样本的长度为12,第三个样本的长度为15。所以您已经做的就是将所有样本都填充为零,以使所有三个样本的大小为15。下一批可能已填充到16。 但这15不是LSTM的输入大小。批次中一个样本元素的大小的输入大小。那应该总是一样的。 例如,当您要分类名称时: 输入的是名称,例如“ joe”,“ mark”,“ lucas”。 但是LSTM作为输入是字符。因此,“ J”然后是“ o”,依此类推。因此,作为输入大小,您必须输入一个字符有多少个尺寸。 如果使用嵌入,则嵌入大小。当您使用单热编码时,矢量大小(可能为26)。 LSTM反复使用单词的字符。不是一次全部单词。

self.lstm = nn.LSTM(input_size=embedding_size,...)

我希望它回答了您的问题,如果没有,请解决!祝你好运!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。