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

如何对形状为(543,133,3)的3D张量快速执行Savgol滤波?

加速Savgol滤波的批量处理方法

你的核心问题是嵌套循环带来的额外开销,scipy.signal.savgol_filter本身支持多维数组的批量处理,完全不需要逐点逐维度手动循环。

优化后的代码

import numpy as np
from scipy.signal import savgol_filter

# 假设输入张量为tensor,形状(543, 133, 3)
# 直接指定沿帧维度(axis=1)执行滤波,一次性处理所有点和坐标维度
filtered_tensor = savgol_filter(tensor, window_length=3, polyorder=1, axis=1)

原理说明

  • 原代码的嵌套循环会反复调用savgol_filter,每次仅处理一个长度为133的一维数组,浪费了函数调用和内存拷贝的开销。
  • 优化后的代码利用savgol_filter的axis参数,指定沿着**帧维度(axis=1)**做滤波计算,内部会通过向量化操作批量处理所有点(axis=0)和所有坐标维度(axis=2),直接输出与输入形状一致的张量,彻底消除循环带来的性能损耗。

额外加速建议

如果想进一步提升速度,可以尝试:

  • 确保numpy和scipy是基于MKL/OpenBLAS等优化线性代数库编译的,充分利用CPU多核算力。
  • 若精度允许,将张量转换为float32类型(默认是float64),减少计算量和内存占用。

内容的提问来源于stack exchange,提问作者Amit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:21:23