我正在使用TensorFlow中的音频,并希望获得一系列可从获取的序列,可以在我的数据上滑动窗口。例子来说明我的情况:将张量重构为序列的最有效方式
当前数据格式:
外形= [batch_size时,NUM_FEATURES]
example = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12],
[13, 14, 15]
]
我想要什么:
外形= [batch_size时 - window_length + 1,window_length,num_features]
example = [
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
],
[
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]
],
[
[7, 8, 9],
[10, 11, 12],
[13, 14, 15]
],
]
我目前的解决办法是做这样的事情:
list_of_windows_of_data = []
for x in range(batch_size - window_length + 1):
list_of_windows_of_data.append(tf.slice(data, [x, 0], [window_length,
num_features]))
windowed_data = tf.squeeze(tf.stack(list_of_windows_of_data, axis=0))
而且这并变换。但是,它还创建了20,000个操作,在创建图形时会大大减缓TensorFlow的下降。如果其他人有一个有趣和更有效的方式来做到这一点,请分享。
我终于可以测试并实施这一点。你已经削减了所有20,000的额外操作,同时仍然提供相同的输出。 TF图几乎立即加载,这真是太棒了!有趣的是,这个解决方案几乎使我目前的批处理时间翻了一番。这可能是让tensorflow花费一分钟设置它的图形并动态地进行交换。无论如何,真棒和整洁的解决方案。谢谢! –
不客气:) –