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

基于CNN的弹跳球峰值检测与弹跳时间差计算模型效果不佳问询

精度不达标的核心原因及优化方案

1. 任务类型与模型配置完全不匹配

你要预测的两次弹跳时间差是连续数值,属于回归任务,但你现在的配置是二分类任务的标准配置:

  • 输出层用sigmoid激活会强制把输出压缩到0~1区间,限制了回归结果的表达范围
  • 损失函数用binary_crossentropy(二元交叉熵)是用来计算分类概率的交叉熵损失,完全不适合衡量连续数值的预测误差
  • 评估指标用accuracy(准确率)是分类任务指标,对回归任务没有参考意义

修正后的网络配置参考:

cnn = tf.keras.models.Sequential()
cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=5, activation='relu', input_shape=[1025, 65, 1]))
cnn.add(tf.keras.layers.MaxPool2D(pool_size=(2,1), strides=(2,1))) # 仅在频率维度做池化,保留时间维度分辨率
cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu'))
cnn.add(tf.keras.layers.MaxPool2D(pool_size=(2,1), strides=(2,1)))
cnn.add(tf.keras.layers.Flatten())
cnn.add(tf.keras.layers.Dense(units=128, activation='relu'))
cnn.add(tf.keras.layers.Dense(units=1)) # 回归任务输出层用线性激活,无需额外激活函数
cnn.compile(optimizer = 'adam', loss = 'mae', metrics = ['mae', 'mse']) # 替换为回归任务对应的损失和评估指标
cnn.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=30) 

2. 样本量不足且缺少适配的数据增强

1000个样本对于输入尺寸为1025*65的CNN来说数量过少,很容易出现拟合不充分或者过拟合。结合你的任务中两次弹跳的绝对出现时间不影响最终结果,可以做以下数据增强扩充有效样本量:

  • 给声谱图添加随机时间偏移
  • 加入少量高斯噪声
  • 对时间维度做微小裁剪/填充
    以此提升模型泛化能力。

3. 特征提取逻辑适配问题

你原有的池化操作对频率、时间两个维度做了等比例压缩,会丢失时间维度的精细信息,而你要计算的时间差高度依赖时间维度的分辨率,调整池化策略仅在频率维度做压缩,能更好地保留时间维度的信息即可解决该问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:54:03