如何控制一维卷积模型的重叠?
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 的步长。
我正在尝试使用 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 的步长。