我正在从TensorFlow切换到PyTorch,并且我的网络遇到了一些麻烦。
我制作了一个整理器(用于DataLoader),将每个批次中的每个张量(原先的句子)填充到每个批次的Maslen中。
所以每个批次的输入大小都不同。
我的网络由LSTM-> LSTM-> DENSE组成
我的问题是,如何为LSTM指定此可变输入大小?
我假设在TensorFlow中我将对LSTM进行Input((None,x))压缩。
提前谢谢
答案 0 :(得分:0)
LSTM的输入大小不是样本的长度。假设您有一个包含三个样本的批次:第一个样本的长度为10,第二个样本的长度为12,第三个样本的长度为15。所以您已经做的就是将所有样本都填充为零,以使所有三个样本的大小为15。下一批可能已填充到16。 但这15不是LSTM的输入大小。批次中一个样本元素的大小的输入大小。那应该总是一样的。 例如,当您要分类名称时: 输入的是名称,例如“ joe”,“ mark”,“ lucas”。 但是LSTM作为输入是字符。因此,“ J”然后是“ o”,依此类推。因此,作为输入大小,您必须输入一个字符有多少个尺寸。 如果使用嵌入,则嵌入大小。当您使用单热编码时,矢量大小(可能为26)。 LSTM反复使用单词的字符。不是一次全部单词。
self.lstm = nn.LSTM(input_size=embedding_size, ...)
我希望它回答了您的问题,如果没有,请解决!祝你好运!