Pytorch 函数nn.LSTM在批次/序列中的行为如何?
我目前正在学习使用Pytork,不得不问这个函数是如何工作的 基本上,我正在尝试输入我的数据集矩阵(mxn)。 由于数据集是一个矩阵,所以我希望使用数据加载器(utils.data.dataset)将数据集递归地(作为时间步长)馈送到LSTM网络中 我感到困惑的是输入的大小(seq_len,batch,input_size) 假设我正在获取批处理大小为10的数据加载程序。 为了以正确的形式生成火车装载机,我必须将之前的大小(M x N)转换为包含序列长度的大小,序列长度可以简单地转换为(M/seq_len,seq_len,N) 那么my nn.LSTM的输入大小如下: (M/序列号/批次号,序列号,N)Pytorch 函数nn.LSTM在批次/序列中的行为如何?,pytorch,lstm,operation,sequence-modeling,Pytorch,Lstm,Operation,Sequence Modeling,我目前正在学习使用Pytork,不得不问这个函数是如何工作的 基本上,我正在尝试输入我的数据集矩阵(mxn)。 由于数据集是一个矩阵,所以我希望使用数据加载器(utils.data.dataset)将数据集递归地(作为时间步长)馈送到LSTM网络中 我感到困惑的是输入的大小(seq_len,batch,input_size) 假设我正在获取批处理大小为10的数据加载程序。 为了以正确的形式生成火车装载机,我必须将之前的大小(M x N)转换为包含序列长度的大小,序列长度可以简单地转换为(M/se
因此,我的主要问题是:
你能详细解释一下为什么要除以序列长度吗?这一部分目前还不清楚,但对答案来说非常关键,我相信我试图用我的数据集(特征(;行)模拟seq2seq LSTM网络的行为,用时间步长(;列)),用序列长度划分整个矩阵,并将这些序列与批量大小一样叠加。(在每一个火车装载机的例子中)我很抱歉收到了大量的通知……:(试图用正确的形式发表评论,但它不起作用。我会在得到正确的形式后一分钟发布。这很酷,最好是删除,而不是制造额外的噪音+我看到你是新来的,所以慢慢来。:)我很失望不能解决这个内联代码注释问题。哈哈,这两种方法会有相同的行为吗?
对于in-range(self.seq_len):`out_seq=self.lstm(input[t]。view(1,1,-1),hidd)
with hidd.shape=[1,batch_size,hidden_size]……和……out,hidd=self.lstm(input,hidd)
使用hidd.shape=[seq_len,batch_size,hidden_size]是的,他们应该这样做。在第一种情况下,它仍然是out_seq,hidden=self.lstm(输入[t].view(1,1,-1),hidden)
尽管我认为。你不应该这样使用它,第二种方法是正确的(如果正确的话,你几乎不必在pytorch中循环)。此外,self.lstm
(hidd
)的第二个参数通常是不必要的,因为它隐式地用零填充,并且这个参数是可选的(在您的案例中,您可能不想碰它)。谢谢您的回复:)这类排序是在LSTM之后连接完全连接的层的下一个过程。但是,如果我想在几个时期内进行训练,我不需要在模块外返回“hidd”吗??