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

时间:2017-06-14 16:41:23

标签: tensorflow recurrent-neural-network

TensorFlow具有parse_single_sequence_example功能,可用于将SequenceExamples(即顺序数据)输入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的数据感到困惑,这种方式可以让我进行重塑。

1 个答案:

答案 0 :(得分:0)

答案取决于你的功能形状。

例如,如果您具有可变长度的特征,每个时间步长具有单个浮点值,例如(0.1,-4.2,3.0)对于一个例子和(8.2)对于另一个例子,你可以考虑将它存储在tf.Example中。

然后,您可以使用FixedLenSequenceFeature解析parse_example来获取填充的Tensor。继续使用batch_size为2的上述示例:

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

如果您希望首先嵌入分类功能,则应使用VarLenFeature获取SparseTensor。如果每个时间步长只有一个值,则可以将其与tf.Example一起使用。

如果你有一个值列表,每个时间步骤SequenceExamples更自然。

因此,指导选择的内容更多的是您的功能具有何种形状的问题。 在输入convolutiondynamic_rnn之前解析之后,您需要创建一个具有可变长度序列维度的填充Tensor。