如何存储要在全卷积网络以及RNN中使用的数据?



TensorFlow有一个parse_single_sequence_example函数,这对于将SequenceExample(即顺序数据)输入RNN很有用。但是,对于我正在处理的问题,除了循环模型之外,我还想尝试完全卷积模型。如何存储数据,以便将数据轻松管道到卷积模型和循环模型中?

为了提供更多信息,我的数据具有以下形状:[number of samples per minibatch, time steps per sample, number of features]number of samples per minibatchnumber of features都是固定的,但time steps per sample可能会有所不同(因此我使用动态 RNN)。至少在概念上,应该可以将我的数据重塑为[number of samples per minibatch, time steps per sample, number of features, 1]并将其视为单通道图像(然后可以通过卷积层传递)。但是,我对如何解析存储为 SequenceExample 的数据感到困惑,以便让我进行这种重塑。

答案有点取决于特征的形状。

例如,如果您有一个可变长度的特征,每个时间步长只有一个浮点值,例如 (0.1, -4.2, 3.0) 用于一个示例,(8.2) 用于另一个示例,您可以考虑将其存储在 tf 中。例。

然后,您可以使用 FixedLenSequenceFeature 对parse_example进行解析,以获得填充的张量。继续上面的示例,batch_size为 2:

[[0.1, -4.2, 3.0], 
[8.2,  0.0, 0.0]]

如果你有一个想要首先嵌入的分类特征,那么你应该使用 VarLenFeature 来获取一个稀疏张量。您可以将其与 tf 一起使用。例如,如果每个时间步长只有一个值。

如果你有一个值列表,每个时间步长序列示例更自然地拟合。

因此,应该指导选择的更多的是您的特征具有什么形状的问题。 在输入卷积或卷积dynamic_rnn之前进行解析后,您需要创建一个具有可变长度序列维度的填充张量。

最新更新