Python 3.x PyTorch中向RNN提供数据的正确方法

Python 3.x PyTorch中向RNN提供数据的正确方法,python-3.x,deep-learning,pytorch,recurrent-neural-network,Python 3.x,Deep Learning,Pytorch,Recurrent Neural Network,我有一个数据序列a,它的形状是[seq_len,2],seq_len是序列的长度。a[:,0]和a[:,1]的元素之间存在时间相关性,但是a[:,0]和a[:,1]彼此独立。为了进行培训,我准备了形状数据[批次大小,序号2]。我使用的BRNN的初始化是 birnn_layer = nn.RNN(input_size=2, hidden_size=100, batch_first=True, bidirectional=True) 从 input_size–输入x中的预期特征数 hidden_s

我有一个数据序列
a
,它的形状是
[seq_len,2]
seq_len
是序列的长度。
a[:,0]
a[:,1]
的元素之间存在时间相关性,但是
a[:,0]
a[:,1]
彼此独立。为了进行培训,我准备了形状数据
[批次大小,序号2]
。我使用的BRNN的初始化是

birnn_layer = nn.RNN(input_size=2, hidden_size=100, batch_first=True, bidirectional=True)

input_size–输入x中的预期特征数

hidden_size–处于隐藏状态的要素数量h


“预期功能的数量”是什么意思?由于沿
序列长度
轴存在相关性,是否应将我的
输入长度
设置为
序列长度
,并对输入进行排列?谢谢。

问题是,如果您的数据有助于解决总体优化问题的话,您的数据将如何发挥作用。您说过
a[:,0]
的元素是时间相关的,
a[:,1]
的元素是时间相关的。
a[i,0]
a[i,1]
时间相关吗?将两个序列设置在一起有意义吗

例如,如果您正试图根据施加在机器上的电压序列和房间内的湿度预测特定电机是否会发生故障,加上同时采集的这些信号,则可以。但它们应该在不同的时间收集,这有意义吗?或者,如果你测量的是不同于湿度的东西,它会帮助你预测故障吗

预期功能的数量可以说是指单个时间戳中的功能数量。所以,按照我之前的类比,我同时测量了多少信号(电压,湿度…)


当然,这只是一个例子,你不必有随时间推移的分类问题,它可以是其他任何东西。最重要的一点是RNN和数据如何协同工作。

是不是整个RNN和数据对与时间无关?如果存在依赖关系,即数据遵循一个具体逻辑,
[c,d]
必须在比
[a,b]
更晚的时间或实例出现,那么
[[a,b],[c,d],…]
的顺序公式是正确的。对于
batch\u size x seq\u len x 2
格式的数据,此
2
将是“预期功能的数量”或
输入大小


但是,您也说过
[a,c,e]
[b,d,f]
是独立过程的结果。因此,它们也可以自然地分离为两个独立的序列,形式为
batch\u size x seq\u len x 1
。您可以将这两个序列通过两个单独的BRNN层,然后组合生成的特征——通过沿特征维度串联,或通过求和、平均,在这方面,对深度学习中的多模态融合主题稍作了解可能会有所帮助。

您编写了
元素A[:,0]和A[:,1]之间的相关性,但A[:,0]和A[:,1]彼此独立。
。你是说a[0][0]和a[0][1]是独立的吗?@TheodorPeifer,假设
a=[[a,b],[c,d],[e,f]
,那么,
a,c,e
是相关的,
b,d,e
是相关的。但第一组值不影响第二组值所取的值。换言之,
a,c,e
可以被视为来自一个过程的样本,而
b,d,e
可以被视为来自另一个过程的样本。这些过程彼此独立。
a[i,0]
a[i,1]
对于任何
i
都是独立的。就像我在评论中提到的那样,
a[:,0]
可以被视为流程a的样本,
a[:,1]
可以被视为流程B的样本,其中a不会影响B。@learner我理解这一点。这就是为什么我试图给出一个假设信号独立的例子(电压/湿度)。我也看到了你在@Mercury's Response下的评论。。我想你应该怎么设置
input_size=2
,但是如果没有用例和关于你试图用你的网络做什么的信息,这是不可能的。我试图实现的是,有两个随机过程在每个采样时间输出样本。过程中的样本相互关联。我试图教我的BRNN这一过程的演变,并试图让它预测未来的价值,鉴于目前的价值。再次感谢。假设我有两个进程A和B同时启动。在每个采样瞬间,我从每个进程中提取一个样本,以获得元组
[a,b]
。在下一个采样瞬间,我得到了元组
[c,d]
。然而,过程A和过程B是独立的。所以为了回答你的问题,
[c,d]
必须出现在
[a,b]
之后“你可以通过两个单独的…传递这两个序列”是的,但这取决于上下文,对吗?那么,他的数据与优化问题有什么关系呢?