【问题标题】:Tensorflow equivalent to pandas.DataFrame.resample?Tensorflow 相当于 pandas.DataFrame.resample?
【发布时间】:2019-05-23 18:14:23
【问题描述】:

我正在寻找一种等效于 tensorflow 的方法来重新采样时间序列张量。

我有一个具有以下维度的张量 [batch_size, time, feature]。我想要实现的是一种创建新张量的方法 这会将几个时间步聚合在一起,新功能应该是一些聚合函数(假设是平均值)。

例如,如果这是原始数据:

batch_size | time | feature
    0      |  0   |    1
    0      |  1   |    4
    0      |  2   |    7
    0      |  3   |    1
    1      |  0   |    2
    1      |  1   |    8
...
    N=?    |  T=? |    ?

我想每 2 个时间步重新采样一次,结果应该是这样的:

batch_size | time (scaled)| feature
    0      |  0   |    2.5 (=(1+5)/2)
    0      |  1   |    4   (=(7+1)/2)
    1      |  0   |    5   (=(2+8)/2)
...

如果没有优雅的方式我想也许可以使用

  • tf.strided_slice 创建切片列表。其中每个切片都有要聚合的所有时间步长(上例为“2”)。
  • 为每个切片应用 tf.scan 和类似 avg() 的函数
  • 将所有切片结果连接到新张量

我是 tensorflow 的新手,所以不确定我的伪代码是否有意义。 实施起来也有点拖沓。

非常感谢任何帮助:)

【问题讨论】:

    标签: python pandas tensorflow time-series


    【解决方案1】:

    你可以使用average pooling:

    result = tf.layers.average_pooling1d(x, [1, 2, 1], [1, 2, 1])
    

    如果您想获得不是 2 个元素的平均值 - 只需将 pool_sizestrides 中的 2 更改为 3

    【讨论】:

      猜你喜欢
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2016-09-02
      • 2023-03-05
      相关资源
      最近更新 更多