经过长时间的研究,我无法找到这个问题的答案。
我的数据是一系列项目,每个项目都有一些特征。数据的形式如下:
我想预测第n+1个元素的特征。网络应该有特定数量的节点吗?输入LSTM Tensorflow网络的数据形状及其输出应该是什么样的?
回答:
关于输入和输出的大小,你在图片中已经定义了:你想从一个形状为(N, num_features)
的输入矩阵中预测一个长度为num_features
(你图片中的4)的向量,其中N
是用于一次预测的样本数量。
在tensorflow中,占位符通常具有形状(batch_size, number_of_steps, number_of_features)
。对于你来说,它们可以是这样的
input_holder = tf.placeholder(shape=(batch_size, None, num_features), dtype=..., name='inputs')target_holder = tf.placeholder(shape=(batch_size, num_features), dtype=..., name='targets')
如果你不想预定义N
,那么你需要一个固定的批次大小。否则,你也可以这样
input_holder = tf.placeholder(shape=(None, N, num_features), dtype=..., name='inputs')target_holder = tf.placeholder(shape=(None, num_features), dtype=..., name='targets')
在这种情况下,N
将是固定的,而你的批次大小是可变的。(你不能同时让两者都可变。)
至于你的网络大小,你需要自己进行实验:无法事先判断所需的节点数、层数等。