如何控制一维卷积模型的重叠?

How to control the overlap of a 1D Convolution Model?

我正在尝试使用 TensorFlow 创建一维卷积模型,window 大小为 200,因此每个 window 重叠 50%。

我希望这是一个简单的修复,因为我认为它只是步幅参数但我不确定。

这是我当前的代码,我循环遍历了几个卷积层 (conv_sizes)。每个卷积层的组也等于1。

(忽略 'self.',因为我将 conv_sizes 分配给模型 class)

window = 200
pad = int(window/2)

conv_sizes = [40, 30, 20]
groups = [1, 1, 1]

... 

cur_layer = nn.Conv1d(self.conv_sizes[i], self.conv_sizes[i+1], kernel_size=window,
                                  groups=groups[i], stride=1, padding=pad)

它目前的运行方式是 window 到 window,我认为 stride = 1 需要更改。

但我想确保我的方向是正确的。我会把 stride = 1 改为 0.5 吗?还是组参数?

帮助和解释会很好。

如果不正确,我深表歉意;我也是新手。

卷积层中的步长告诉该层将过滤器移动多少。

步幅 1:

步幅 2:

因此,实际上不可能将步幅设置为 0.5,因为这会导致 "in-between" 在没有插值的情况下数据不存在。

当前步幅为 1,window 为 200,您的卷积正在做这样的事情,其中​​ "overlap" 为 199/200 点,或 99.5%。:

如果您想要 50% 的数据重叠,那么您需要 kernel_size * 0.5 = 100 的步长。