You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

音频信号1D卷积输出仅5个值的实现及核参数无效问题咨询

问题解答

为什么修改核形状输出不变?

你当前用的是padding='SAME'且步长strides_1d=1,这种情况下1D卷积的输出长度会和输入长度完全一致——不管你调整核的宽度,TensorFlow都会自动在输入两端补零,保证每个输入位置都能对应一个输出位置。这就是改weight_1d大小后输出形状没变化的原因。

怎么得到5个输出值?

要固定输出为5个值,得结合步长、核宽度和padding方式计算,下面给两种可行方案:

方案1:用SAME padding,调整步长

根据SAME padding的输出长度公式:
输出长度 = ceil(输入长度 / 步长)
已知输入长度是44097,要输出5个值,步长需满足ceil(44097 / 步长) = 5,计算得步长取8819或8820都可以(44097÷8819≈5.0002,向上取整为5;44097÷8820≈4.999,向上取整也为5)。

修改代码步长即可:

strides_1d = 8820  # 或8819

方案2:用VALID padding,搭配合适的步长与核宽度

VALID padding不补零,输出长度公式为:
输出长度 = ceil( (输入长度 - 核宽度 + 1) / 步长 )
如果用常规的小核(比如宽度3),可以计算出步长为8819:
ceil( (44097 - 3 + 1)/8819 ) = ceil(44095/8819) = 5

代码修改示例:

strides_1d = 8819
output_1d = tf.squeeze(tf.nn.conv1d(input_1d, kernel_1d, strides_1d, padding='VALID'))

额外说明

  • 想用核大小控制输出,必须配合VALID padding和合适的步长,SAME padding在步长为1时会锁死输出长度与输入一致。
  • 实际场景中,用大步长降采样到5个值是更合理的选择,超大核的卷积没有实用价值。

内容的提问来源于stack exchange,提问作者A. Gehani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:21:05