首页 > 解决方案 > Tensorflow:如何应用一维卷积特征/通道虎钳?

问题描述

我想处理形状为 [时间点,# 特征] 的多元时间序列

我的目标是将一维卷积(带有自己的过滤器)分别应用于每个特征流([时间点,1])。我不想使用 2D 卷积,因为它们会对所有特征流应用相同的过滤器。

我知道tf.keras.layers.DepthwiseConv2Dtf.keras.layers.SeparableConv2D存在,但我不确定这些是否适合解决问题以及如何解决。

是否可以在不拆分 #feature 许多输入中的输入并对其应用卷积的情况下执行此操作?

标签: tensorflowtime-seriesconvolution

解决方案


您可以使用Conv1DTensorflow ( link ) 中定义的函数和groups参数来为每个特征定义单独的过滤器。

一个例子:

import tensorflow as tf

BATCH_SIZE = 128
N_TIME_POINTS = 300
N_FEATURES = 25
N_FILTERS_PER_FEATURE = 4

x = tf.random.normal(input_shape = (BATCH_SIZE, N_FEATURES, N_TIME_POINTS))
y = tf.keras.layers.Conv1D(
    filters=N_FILTERS_PER_FEATURE*N_FEATURES,
    kernel_size=3,      # How many temporal samples fit into each filter
    activation='relu',
    padding='causal',
    groups=N_FEATURES,  # Important! treat each feature as a separate input
    input_shape=x.shape[1:])(x)

请注意选择类型的重要性padding(有关更多信息,请参阅填充文档)。


推荐阅读