LSTM层的输入形状为(batch_size,时间步长,特征)。我目前有一个看起来像这样的输入:
[0,1,2,3,4,5,6,7,8,9,10]
我使用我的代码来重塑数据,使其看起来像这样
[
[0,1,2,3],
[1,2,3,4],
[2,3,4,5],
[3,4,5,6],
[4,5,6,7],
[5,6,7,8],
[6,7,8,9],
[5,7,8,10]
]
但是,在Python中重塑此数据需要花费大量时间。 Keras / Tensorflow中的LSTM模型是否有某种方法可以纯粹从中学习数据 [0,1,2,3,4,5,6,7,8,9,10] 在Keras API中,我将时间步长定义为4。我试图寻找这样的选择,但没有找到任何选择。
这就是我一直在使用的:
numberOfTimesteps = 240
i = 0
lstmFeatures = pd.DataFrame()
while i < features.transpose().shape[0] - numberOfTimesteps:
temp = features.transpose().iloc[i:i+numberOfTimesteps,:]
lstmFeatures = lstmFeatures.append(temp)
if i%100 == 0:
print(i,end=',')
i = i + 1
有人对如何重塑或使用Keras有更好的主意吗?
答案 0 :(得分:0)
您可以使用tf.gather
import tensorflow as tf
my_data = tf.constant([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
to_take_inds = tf.range(4)[None, :]
to_take_inds = to_take_inds + tf.range(7)[:, None]
reshaped = tf.gather(my_data, to_take_inds)
with tf.Session() as sess:
print(sess.run(reshaped))
打印
[[ 1 2 3 4]
[ 2 3 4 5]
[ 3 4 5 6]
[ 4 5 6 7]
[ 5 6 7 8]
[ 6 7 8 9]
[ 7 8 9 10]]