【问题标题】:CNN on Audio Data not learningCNN 上的音频数据不学习
【发布时间】:2025-11-30 17:55:01
【问题描述】:

我正在尝试在音频数据上训练 CNN 以进行回归。这是我的网络架构:

name: "AudioRegression"
layer{
  name: "data"
  type: "HDF5Data"
  top: "data"
  top: "label"
  hdf5_data_param {
    source: "c_trainList.txt"
    batch_size: 32
    shuffle: true
  }
  include: { phase: TRAIN }
}
layer{
  name: "data"
  type: "HDF5Data"
  top: "data"
  top: "label"
  hdf5_data_param {
    source: "d_testList.txt"
    batch_size: 32
  }
  include: { phase: TEST }
}
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  param { lr_mult: 1 }
  param { lr_mult: 2 }
  convolution_param {
    num_output: 32
    kernel_h: 1
    kernel_w: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "relu1"
  type: "ReLU"
  bottom: "conv1"
  top: "conv1"
}
layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}
layer {
  name: "norm1"
  type: "LRN"
  bottom: "pool1"
  top: "norm1"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv2"
  type: "Convolution"
  bottom: "norm1"
  top: "conv2"
  param { lr_mult: 1 }
  param { lr_mult: 2 }
  convolution_param {
    num_output: 64
    kernel_h: 1
    kernel_w: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "relu2"
  type: "ReLU"
  bottom: "conv2"
  top: "conv2"
}
layer {
  name: "pool2"
  type: "Pooling"
  bottom: "conv2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}
layer {
  name: "norm2"
  type: "LRN"
  bottom: "pool2"
  top: "norm2"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv3"
  type: "Convolution"
  bottom: "norm2"
  top: "conv3"
  param { lr_mult: 1 }
  param { lr_mult: 2 }
  convolution_param {
    num_output: 128
    kernel_h: 1
    kernel_w: 3
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "relu3"
  type: "ReLU"
  bottom: "conv3"
  top: "conv3"
}
layer {
  name: "pool3"
  type: "Pooling"
  bottom: "conv3"
  top: "pool3"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}
layer{
  name: "fc1"
  type: "InnerProduct"
  bottom: "pool3"
  top: "fc1"
  param { lr_mult: 1 decay_mult: 1 }
  param { lr_mult: 2 decay_mult: 0 }
  inner_product_param {
    num_output: 1024
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "dropout1"
  type: "Dropout"
  bottom: "fc1"
  top: "fc1"
  dropout_param {
    dropout_ratio: 0.5
  }
}
layer{
  name: "fc2"
  type: "InnerProduct"
  bottom: "fc1"
  top: "fc2"
  param { lr_mult: 1 decay_mult: 1 }
  param { lr_mult: 2 decay_mult: 0 }
  inner_product_param {
    num_output: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
 }
}
layer{
  name: "loss"
  type: "EuclideanLoss"
  bottom: "fc2"
  bottom: "label"
  top: "loss"
}

在运行了大约 6,000 次迭代后(我的总训练数据约为 3000,我在相同的数据上进行了测试以检查 CNN 的工作情况),最终预测如下所示:[红色 = 实际标签,蓝色 = 预测]

我不确定为什么我的预测如此糟糕。我检查了增加数据量和迭代次数,但结果是相似的。我还检查了频谱图,但没有运气。我的输入音频数据长度为 1721(1D)(大约 40ms,44.1KHz 采样率)。

您能否建议我可以做些什么来改善我的结果?架构或我获取数据的方式有问题吗?任何帮助表示赞赏。 TIA。

这是我的训练日志:

I1209 00:01:47.464259  2189 solver.cpp:47] Solver scaffolding done.
I1209 00:01:47.464296  2189 solver.cpp:363] Solving AudioRegression
I1209 00:01:47.464303  2189 solver.cpp:364] Learning Rate Policy: inv
I1209 00:01:47.499138  2189 solver.cpp:424] Iteration 0, Testing net (#0)
I1209 00:04:07.222735  2189 solver.cpp:481]     Test net output #0: loss = 0.0230729 (* 1 = 0.0230729 loss)
I1209 00:04:10.707535  2189 solver.cpp:240] Iteration 0, loss = 0.0259357
I1209 00:04:10.707590  2189 solver.cpp:255]     Train net output #0: loss = 0.0259357 (* 1 = 0.0259357 loss)
I1209 00:04:10.707617  2189 solver.cpp:631] Iteration 0, lr = 0.0001
I1209 00:06:51.835078  2189 solver.cpp:240] Iteration 50, loss = 0.0168364
I1209 00:06:51.835170  2189 solver.cpp:255]     Train net output #0: loss = 0.0168364 (* 1 = 0.0168364 loss)
I1209 00:06:51.835182  2189 solver.cpp:631] Iteration 50, lr = 9.96266e-05
I1209 00:09:42.754168  2189 solver.cpp:240] Iteration 100, loss = 0.0115463
I1209 00:09:42.754374  2189 solver.cpp:255]     Train net output #0: loss = 0.0115463 (* 1 = 0.0115463 loss)
I1209 00:09:42.754402  2189 solver.cpp:631] Iteration 100, lr = 9.92565e-05
I1209 00:13:08.801769  2189 solver.cpp:240] Iteration 150, loss = 0.0113013
I1209 00:16:21.470883  2189 solver.cpp:255]     Train net output #0: loss = 0.0136536 (* 1 = 0.0136536 loss)
I1209 00:16:21.470899  2189 solver.cpp:631] Iteration 200, lr = 9.85258e-05
I1209 00:19:31.274965  2189 solver.cpp:240] Iteration 250, loss = 0.014273
I1209 00:19:31.275111  2189 solver.cpp:255]     Train net output #0: loss = 0.014273 (* 1 = 0.014273 loss)
I1209 00:19:31.275130  2189 solver.cpp:631] Iteration 250, lr = 9.81651e-05
I1209 00:22:41.283741  2189 solver.cpp:240] Iteration 300, loss = 0.016501
I1209 00:22:41.283836  2189 solver.cpp:255]     Train net output #0: loss = 0.016501 (* 1 = 0.016501 loss)
I1209 00:22:41.283850  2189 solver.cpp:631] Iteration 300, lr = 9.78075e-05
I1209 00:25:49.767002  2189 solver.cpp:240] Iteration 350, loss = 0.0229812
I1209 00:25:49.767107  2189 solver.cpp:255]     Train net output #0: loss = 0.0229812 (* 1 = 0.0229812 loss)
I1209 00:25:49.767119  2189 solver.cpp:631] Iteration 350, lr = 9.74529e-05
I1209 00:29:11.156260  2189 solver.cpp:240] Iteration 400, loss = 0.0114304
I1209 00:29:11.156347  2189 solver.cpp:255]     Train net output #0: loss = 0.0114304 (* 1 = 0.0114304 loss)
I1209 00:29:11.156359  2189 solver.cpp:631] Iteration 400, lr = 9.71013e-05
I1209 00:32:28.614641  2189 solver.cpp:240] Iteration 450, loss = 0.0157431
I1209 00:32:28.614919  2189 solver.cpp:255]     Train net output #0: loss = 0.0157431 (* 1 = 0.0157431 loss)
I1209 00:32:28.614943  2189 solver.cpp:631] Iteration 450, lr = 9.67526e-05
I1209 00:35:42.133127  2189 solver.cpp:240] Iteration 500, loss = 0.0166063
I1209 00:35:42.133232  2189 solver.cpp:255]     Train net output #0: loss = 0.0166063 (* 1 = 0.0166063 loss)
I1209 00:35:42.133245  2189 solver.cpp:631] Iteration 500, lr = 9.64069e-05
I1209 00:38:54.340562  2189 solver.cpp:240] Iteration 550, loss = 0.0173505
I1209 00:38:54.340664  2189 solver.cpp:255]     Train net output #0: loss = 0.0173505 (* 1 = 0.0173505 loss)
I1209 00:48:16.819653  2189 solver.cpp:255]     Train net output #0: loss = 0.0121346 (* 1 = 0.0121346 loss)
I1209 00:48:16.819675  2189 solver.cpp:631] Iteration 700, lr = 9.50522e-05
I1209 00:51:06.433248  2189 solver.cpp:240] Iteration 750, loss = 0.0144362
I1209 00:51:06.433331  2189 solver.cpp:255]     Train net output #0: loss = 0.0144362 (* 1 = 0.0144362 loss)
I1209 00:51:06.433346  2189 solver.cpp:631] Iteration 750, lr = 9.47204e-05
I1209 00:53:58.998585  2189 solver.cpp:240] Iteration 800, loss = 0.015145
I1209 00:53:58.998919  2189 solver.cpp:255]     Train net output #0: loss = 0.015145 (* 1 = 0.015145 loss)
I1209 00:53:58.998991  2189 solver.cpp:631] Iteration 800, lr = 9.43913e-05
I1209 00:56:48.413203  2189 solver.cpp:240] Iteration 850, loss = 0.00943574
I1209 01:07:50.999053  2189 solver.cpp:631] Iteration 1000, lr = 9.31012e-05
I1209 01:10:48.213668  2189 solver.cpp:240] Iteration 1050, loss = 0.00977092
I1209 01:10:48.213749  2189 solver.cpp:255]     Train net output #0: loss = 0.00977092 (* 1 = 0.00977092 loss)
I1209 01:10:48.213760  2189 solver.cpp:631] Iteration 1050, lr = 9.27851e-05
I1209 01:13:38.985514  2189 solver.cpp:240] Iteration 1100, loss = 0.0150719
I1209 01:13:38.985610  2189 solver.cpp:255]     Train net output #0: loss = 0.0150719 (* 1 = 0.0150719 loss)
I1209 01:13:38.985623  2189 solver.cpp:631] Iteration 1100, lr = 9.24715e-05
I1209 01:16:33.194244  2189 solver.cpp:240] Iteration 1150, loss = 0.0118601
I1209 01:16:33.194334  2189 solver.cpp:255]     Train net output #0: loss = 0.0118601 (* 1 = 0.0118601 loss)
I1209 01:16:33.194345  2189 solver.cpp:631] Iteration 1150, lr = 9.21603e-05
I1209 01:19:23.298775  2189 solver.cpp:240] Iteration 1200, loss = 0.0122899
I1209 01:19:23.298854  2189 solver.cpp:255]     Train net output #0: loss = 0.0122899 (* 1 = 0.0122899 loss)
I1209 01:19:23.298866  2189 solver.cpp:631] Iteration 1200, lr = 9.18515e-05
I1209 01:22:15.248015  2189 solver.cpp:240] Iteration 1250, loss = 0.00906165
I1209 01:30:49.363504  2189 solver.cpp:255]     Train net output #0: loss = 0.012574 (* 1 = 0.012574 loss)
I1209 01:47:09.507314  2189 solver.cpp:240] Iteration 1650, loss = 0.0127013
I1209 01:59:49.763129  2189 solver.cpp:255]     Train net output #0: loss = 0.0114391 (* 1 = 0.0114391 loss)
I1209 01:59:49.763147  2189 solver.cpp:631] Iteration 1850, lr = 8.80463e-05
I1209 02:03:10.173984  2189 solver.cpp:240] Iteration 1900, loss = 0.0138886
I1209 02:03:10.174072  2189 solver.cpp:255]     Train net output #0: loss = 0.0138886 (* 1 = 0.0138886 loss)
I1209 02:03:10.174087  2189 solver.cpp:631] Iteration 1900, lr = 8.77687e-05
I1209 02:06:20.400573  2189 solver.cpp:240] Iteration 1950, loss = 0.0137628
I1209 02:06:20.400668  2189 solver.cpp:631] Iteration 1950, lr = 8.74932e-05
I1209 02:09:27.890867  2189 solver.cpp:502] Snapshotting to outputModel_iter_2000.caffemodel
I1209 02:09:29.180711  2189 solver.cpp:510] Snapshotting solver state to outputModel_iter_2000.solverstate
I1209 02:09:30.414371  2189 solver.cpp:424] Iteration 2000, Testing net (#0)
I1209 02:12:13.271689  2189 solver.cpp:481]     Test net output #0: loss = 0.01289 (* 1 = 0.01289 loss)
I1209 02:12:16.724727  2189 solver.cpp:240] Iteration 2000, loss = 0.0207793
I1209 02:12:16.724778  2189 solver.cpp:255]     Train net output #0: loss = 0.0207793 (* 1 = 0.0207793 loss)
I1209 02:12:16.724791  2189 solver.cpp:631] Iteration 2000, lr = 8.72196e-05
I1209 02:15:27.976011  2189 solver.cpp:240] Iteration 2050, loss = 0.0118718
I1209 02:15:27.976099  2189 solver.cpp:255]     Train net output #0: loss = 0.0118718 (* 1 = 0.0118718 loss)
I1209 02:15:27.976111  2189 solver.cpp:631] Iteration 2050, lr = 8.6948e-05
I1209 02:18:45.454749  2189 solver.cpp:240] Iteration 2100, loss = 0.00938784
I1209 02:18:45.454834  2189 solver.cpp:255]     Train net output #0: loss = 0.00938784 (* 1 = 0.00938784 loss)
I1209 02:18:45.454852  2189 solver.cpp:631] Iteration 2100, lr = 8.66784e-05
I1209 02:22:03.167448  2189 solver.cpp:240] Iteration 2150, loss = 0.0127745
I1209 02:22:03.167531  2189 solver.cpp:255]     Train net output #0: loss = 0.0127745 (* 1 = 0.0127745 loss)
I1209 02:22:03.167546  2189 solver.cpp:631] Iteration 2150, lr = 8.64107e-05
I1209 02:25:14.789314  2189 solver.cpp:240] Iteration 2200, loss = 0.00956969
I1209 02:25:14.789397  2189 solver.cpp:255]     Train net output #0: loss = 0.00956969 (* 1 = 0.00956969 loss)
I1209 02:25:14.789410  2189 solver.cpp:631] Iteration 2200, lr = 8.6145e-05
I1209 02:28:25.455724  2189 solver.cpp:240] Iteration 2250, loss = 0.0143162
I1209 02:28:25.455807  2189 solver.cpp:255]     Train net output #0: loss = 0.0143162 (* 1 = 0.0143162 loss)
I1209 02:28:25.455819  2189 solver.cpp:631] Iteration 2250, lr = 8.58812e-05
I1209 02:31:35.905241  2189 solver.cpp:240] Iteration 2300, loss = 0.00927413
I1209 02:31:35.905323  2189 solver.cpp:255]     Train net output #0: loss = 0.00927413 (* 1 = 0.00927413 loss)
I1209 02:31:35.905335  2189 solver.cpp:631] Iteration 2300, lr = 8.56192e-05
I1209 02:34:56.982108  2189 solver.cpp:240] Iteration 2350, loss = 0.0176598
I1209 02:34:56.982213  2189 solver.cpp:255]     Train net output #0: loss = 0.0176598 (* 1 = 0.0176598 loss)
I1209 02:34:56.982231  2189 solver.cpp:631] Iteration 2350, lr = 8.53591e-05
I1209 02:38:06.427983  2189 solver.cpp:240] Iteration 2400, loss = 0.0125867
I1209 02:38:06.428068  2189 solver.cpp:255]     Train net output #0: loss = 0.0125867 (* 1 = 0.0125867 loss)
I1209 02:38:06.428081  2189 solver.cpp:631] Iteration 2400, lr = 8.51008e-05
I1209 02:41:16.814347  2189 solver.cpp:240] Iteration 2450, loss = 0.01254
I1209 02:41:16.814467  2189 solver.cpp:255]     Train net output #0: loss = 0.01254 (* 1 = 0.01254 loss)
I1209 02:41:16.814481  2189 solver.cpp:631] Iteration 2450, lr = 8.48444e-05
I1209 02:44:24.596612  2189 solver.cpp:240] Iteration 2500, loss = 0.0128213
I1209 02:44:24.596699  2189 solver.cpp:255]     Train net output #0: loss = 0.0128213 (* 1 = 0.0128213 loss)
I1209 02:44:24.596711  2189 solver.cpp:631] Iteration 2500, lr = 8.45897e-05
I1209 02:47:41.383929  2189 solver.cpp:240] Iteration 2550, loss = 0.0138613
I1209 02:47:41.384017  2189 solver.cpp:255]     Train net output #0: loss = 0.0138613 (* 1 = 0.0138613 loss)
I1209 02:47:41.384029  2189 solver.cpp:631] Iteration 2550, lr = 8.43368e-05
I1209 02:51:01.780666  2189 solver.cpp:240] Iteration 2600, loss = 0.0135385
I1209 02:51:01.780769  2189 solver.cpp:255]     Train net output #0: loss = 0.0135385 (* 1 = 0.0135385 loss)
I1209 02:51:01.780786  2189 solver.cpp:631] Iteration 2600, lr = 8.40857e-05
I1209 02:54:09.573009  2189 solver.cpp:240] Iteration 2650, loss = 0.0128414
I1209 02:54:09.573094  2189 solver.cpp:255]     Train net output #0: loss = 0.0128414 (* 1 = 0.0128414 loss)
I1209 02:54:09.573107  2189 solver.cpp:631] Iteration 2650, lr = 8.38363e-05
I1209 02:57:19.939091  2189 solver.cpp:240] Iteration 2700, loss = 0.0132472
I1209 02:57:19.939178  2189 solver.cpp:255]     Train net output #0: loss = 0.0132472 (* 1 = 0.0132472 loss)
I1209 02:57:19.939191  2189 solver.cpp:631] Iteration 2700, lr = 8.35886e-05
I1209 03:00:40.396674  2189 solver.cpp:240] Iteration 2750, loss = 0.0121989
I1209 03:00:40.396757  2189 solver.cpp:255]     Train net output #0: loss = 0.0121989 (* 1 = 0.0121989 loss)
I1209 03:00:40.396770  2189 solver.cpp:631] Iteration 2750, lr = 8.33427e-05
I1209 03:03:49.423348  2189 solver.cpp:240] Iteration 2800, loss = 0.0132731
I1209 03:03:49.423435  2189 solver.cpp:255]     Train net output #0: loss = 0.0132731 (* 1 = 0.0132731 loss)
I1209 03:03:49.423449  2189 solver.cpp:631] Iteration 2800, lr = 8.30984e-05
I1209 03:06:59.472712  2189 solver.cpp:240] Iteration 2850, loss = 0.00996264
I1209 03:06:59.472822  2189 solver.cpp:255]     Train net output #0: loss = 0.00996264 (* 1 = 0.00996264 loss)
I1209 03:06:59.472837  2189 solver.cpp:631] Iteration 2850, lr = 8.28558e-05
I1209 03:10:11.587728  2189 solver.cpp:240] Iteration 2900, loss = 0.00787597
I1209 03:10:11.587813  2189 solver.cpp:255]     Train net output #0: loss = 0.00787597 (* 1 = 0.00787597 loss)
I1209 03:10:11.587826  2189 solver.cpp:631] Iteration 2900, lr = 8.26148e-05
I1209 03:13:26.526146  2189 solver.cpp:240] Iteration 2950, loss = 0.0113055
I1209 03:13:26.526232  2189 solver.cpp:255]     Train net output #0: loss = 0.0113055 (* 1 = 0.0113055 loss)
I1209 03:13:26.526244  2189 solver.cpp:631] Iteration 2950, lr = 8.23754e-05
I1209 03:16:33.236115  2189 solver.cpp:424] Iteration 3000, Testing net (#0)
I1209 03:19:24.886912  2189 solver.cpp:481]     Test net output #0: loss = 0.0127196 (* 1 = 0.0127196 loss)
I1209 03:19:28.444213  2189 solver.cpp:240] Iteration 3000, loss = 0.0217011
I1209 03:26:00.578351  2189 solver.cpp:631] Iteration 3100, lr = 8.1667e-05
I1209 03:29:11.128749  2189 solver.cpp:240] Iteration 3150, loss = 0.0186126
I1209 03:29:11.128832  2189 solver.cpp:255]     Train net output #0: loss = 0.0186126 (* 1 = 0.0186126 loss)
I1209 03:29:11.128844  2189 solver.cpp:631] Iteration 3150, lr = 8.1434e-05
I1209 03:32:21.431370  2189 solver.cpp:240] Iteration 3200, loss = 0.013207
I1209 03:32:21.431488  2189 solver.cpp:255]     Train net output #0: loss = 0.013207 (* 1 = 0.013207 loss)
I1209 03:38:42.957159  2189 solver.cpp:240] Iteration 3300, loss = 0.0143691
I1209 03:38:42.957262  2189 solver.cpp:255]     Train net output #0: loss = 0.0143691 (* 1 = 0.0143691 loss)
I1209 03:38:42.957275  2189 solver.cpp:631] Iteration 3300, lr = 8.07442e-05
I1209 03:41:56.213155  2189 solver.cpp:240] Iteration 3350, loss = 0.0111833
I1209 03:41:56.213243  2189 solver.cpp:255]     Train net output #0: loss = 0.0111833 (* 1 = 0.0111833 loss)
I1209 03:41:56.213255  2189 solver.cpp:631] Iteration 3350, lr = 8.05173e-05
I1209 03:45:03.395630  2189 solver.cpp:240] Iteration 3400, loss = 0.0128313
I1209 03:45:03.396034  2189 solver.cpp:255]     Train net output #0: loss = 0.0128313 (* 1 = 0.0128313 loss)
I1209 03:45:03.396091  2189 solver.cpp:631] Iteration 3400, lr = 8.02918e-05
I1209 03:48:14.938372  2189 solver.cpp:240] Iteration 3450, loss = 0.0114032
I1209 03:48:14.938454  2189 solver.cpp:255]     Train net output #0: loss = 0.0114032 (* 1 = 0.0114032 loss)
I1209 03:48:14.938467  2189 solver.cpp:631] Iteration 3450, lr = 8.00679e-05
I1209 03:51:24.561987  2189 solver.cpp:240] Iteration 3500, loss = 0.0146534
I1209 03:51:24.562098  2189 solver.cpp:255]     Train net output #0: loss = 0.0146534 (* 1 = 0.0146534 loss)
I1209 03:51:24.562114  2189 solver.cpp:631] Iteration 3500, lr = 7.98454e-05
I1209 03:54:35.916950  2189 solver.cpp:240] Iteration 3550, loss = 0.0107792
I1209 03:54:35.917058  2189 solver.cpp:255]     Train net output #0: loss = 0.0107792 (* 1 = 0.0107792 loss)
I1209 03:54:35.917073  2189 solver.cpp:631] Iteration 3550, lr = 7.96243e-05
I1209 03:57:44.691856  2189 solver.cpp:240] Iteration 3600, loss = 0.0131089
I1209 03:57:44.691939  2189 solver.cpp:255]     Train net output #0: loss = 0.0131089 (* 1 = 0.0131089 loss)
I1209 03:57:44.691951  2189 solver.cpp:631] Iteration 3600, lr = 7.94046e-05
I1209 04:00:50.050279  2189 solver.cpp:240] Iteration 3650, loss = 0.00767588
I1209 04:00:50.050366  2189 solver.cpp:255]     Train net output #0: loss = 0.00767588 (* 1 = 0.00767588 loss)
I1209 04:00:50.050379  2189 solver.cpp:631] Iteration 3650, lr = 7.91864e-05
I1209 04:03:36.047211  2189 solver.cpp:240] Iteration 3700, loss = 0.0110371
I1209 04:03:36.047299  2189 solver.cpp:255]     Train net output #0: loss = 0.0110371 (* 1 = 0.0110371 loss)
I1209 04:03:36.047312  2189 solver.cpp:631] Iteration 3700, lr = 7.89695e-05
I1209 04:06:27.261343  2189 solver.cpp:240] Iteration 3750, loss = 0.0176664
I1209 04:06:27.261425  2189 solver.cpp:255]     Train net output #0: loss = 0.0176664 (* 1 = 0.0176664 loss)
I1209 04:06:27.261438  2189 solver.cpp:631] Iteration 3750, lr = 7.87541e-05
I1209 04:09:20.277091  2189 solver.cpp:240] Iteration 3800, loss = 0.0133606
I1209 04:09:20.277186  2189 solver.cpp:255]     Train net output #0: loss = 0.0133606 (* 1 = 0.0133606 loss)
I1209 04:09:20.277199  2189 solver.cpp:631] Iteration 3800, lr = 7.854e-05
I1209 04:12:11.541723  2189 solver.cpp:240] Iteration 3850, loss = 0.0144475
I1209 04:12:11.541936  2189 solver.cpp:255]     Train net output #0: loss = 0.0144475 (* 1 = 0.0144475 loss)
I1209 04:12:11.541952  2189 solver.cpp:631] Iteration 3850, lr = 7.83272e-05
I1209 04:15:03.661646  2189 solver.cpp:240] Iteration 3900, loss = 0.0142342
I1209 04:15:03.661834  2189 solver.cpp:255]     Train net output #0: loss = 0.0142342 (* 1 = 0.0142342 loss)
I1209 04:15:03.661852  2189 solver.cpp:631] Iteration 3900, lr = 7.81158e-05
I1209 04:17:53.149144  2189 solver.cpp:240] Iteration 3950, loss = 0.0121178
I1209 04:17:53.149250  2189 solver.cpp:255]     Train net output #0: loss = 0.0121178 (* 1 = 0.0121178 loss)
I1209 04:17:53.149263  2189 solver.cpp:631] Iteration 3950, lr = 7.79057e-05
I1209 04:20:40.580508  2189 solver.cpp:502] Snapshotting to outputModel_iter_4000.caffemodel
I1209 04:20:41.779126  2189 solver.cpp:510] Snapshotting solver state to outputModel_iter_4000.solverstate
I1209 04:20:42.885267  2189 solver.cpp:424] Iteration 4000, Testing net (#0)
I1209 04:23:32.727929  2189 solver.cpp:481]     Test net output #0: loss = 0.0126429 (* 1 = 0.0126429 loss)
I1209 04:23:36.443990  2189 solver.cpp:240] Iteration 4000, loss = 0.0137481
I1209 04:23:36.444049  2189 solver.cpp:255]     Train net output #0: loss = 0.0137481 (* 1 = 0.0137481 loss)
I1209 04:23:36.444067  2189 solver.cpp:631] Iteration 4000, lr = 7.76969e-05
I1209 04:26:47.281289  2189 solver.cpp:240] Iteration 4050, loss = 0.0153349
I1209 04:26:47.281397  2189 solver.cpp:255]     Train net output #0: loss = 0.0153349 (* 1 = 0.0153349 loss)
I1209 04:26:47.281410  2189 solver.cpp:631] Iteration 4050, lr = 7.74895e-05
I1209 04:30:02.951990  2189 solver.cpp:240] Iteration 4100, loss = 0.0117784
I1209 04:30:02.952076  2189 solver.cpp:255]     Train net output #0: loss = 0.0117784 (* 1 = 0.0117784 loss)
I1209 04:30:02.952090  2189 solver.cpp:631] Iteration 4100, lr = 7.72833e-05
I1209 04:33:12.287106  2189 solver.cpp:240] Iteration 4150, loss = 0.0150684
I1209 04:33:12.287194  2189 solver.cpp:255]     Train net output #0: loss = 0.0150684 (* 1 = 0.0150684 loss)
I1209 04:33:12.287207  2189 solver.cpp:631] Iteration 4150, lr = 7.70784e-05
I1209 04:36:25.405246  2189 solver.cpp:240] Iteration 4200, loss = 0.0121092
I1209 05:08:37.213099  2189 solver.cpp:240] Iteration 4700, loss = 0.00963576
I1209 05:08:37.213321  2189 solver.cpp:255]     Train net output #0: loss = 0.00963576 (* 1 = 0.00963576 loss)
I1209 05:08:37.213338  2189 solver.cpp:631] Iteration 4700, lr = 7.49052e-05
I1209 05:11:51.183197  2189 solver.cpp:240] Iteration 4750, loss = 0.0177338
I1209 05:11:51.183284  2189 solver.cpp:255]     Train net output #0: loss = 0.0177338 (* 1 = 0.0177338 loss)
I1209 05:11:51.183296  2189 solver.cpp:631] Iteration 4750, lr = 7.47147e-05
I1209 05:15:12.716320  2189 solver.cpp:240] Iteration 4800, loss = 0.0155627
I1209 05:15:12.716401  2189 solver.cpp:255]     Train net output #0: loss = 0.0155627 (* 1 = 0.0155627 loss)
I1209 05:15:12.716413  2189 solver.cpp:631] Iteration 4800, lr = 7.45253e-05
I1209 05:18:36.245213  2189 solver.cpp:240] Iteration 4850, loss = 0.0110798
I1209 05:18:36.245301  2189 solver.cpp:255]     Train net output #0: loss = 0.0110798 (* 1 = 0.0110798 loss)
I1209 05:18:36.245314  2189 solver.cpp:631] Iteration 4850, lr = 7.4337e-05
I1209 05:21:53.006510  2189 solver.cpp:240] Iteration 4900, loss = 0.0149542
I1209 05:21:53.006613  2189 solver.cpp:255]     Train net output #0: loss = 0.0149542 (* 1 = 0.0149542 loss)
I1209 05:21:53.006630  2189 solver.cpp:631] Iteration 4900, lr = 7.41499e-05
I1209 05:25:05.802839  2189 solver.cpp:240] Iteration 4950, loss = 0.0152574
I1209 05:25:05.802940  2189 solver.cpp:255]     Train net output #0: loss = 0.0152574 (* 1 = 0.0152574 loss)
I1209 05:25:05.802953  2189 solver.cpp:631] Iteration 4950, lr = 7.39638e-05
I1209 05:28:12.186930  2189 solver.cpp:424] Iteration 5000, Testing net (#0)
I1209 05:30:57.153729  2189 solver.cpp:481]     Test net output #0: loss = 0.0127499 (* 1 = 0.0127499 loss)
I1209 05:31:00.795545  2189 solver.cpp:240] Iteration 5000, loss = 0.0118315
I1209 05:31:00.795598  2189 solver.cpp:255]     Train net output #0: loss = 0.0118315 (* 1 = 0.0118315 loss)
I1209 05:31:00.795609  2189 solver.cpp:631] Iteration 5000, lr = 7.37788e-05
I1209 05:34:18.038789  2189 solver.cpp:240] Iteration 5050, loss = 0.0147696
I1209 05:34:18.038875  2189 solver.cpp:255]     Train net output #0: loss = 0.0147696 (* 1 = 0.0147696 loss)
I1209 05:34:18.038887  2189 solver.cpp:631] Iteration 5050, lr = 7.35949e-05
I1209 05:37:39.033630  2189 solver.cpp:240] Iteration 5100, loss = 0.0114872
I1209 05:37:39.033713  2189 solver.cpp:255]     Train net output #0: loss = 0.0114872 (* 1 = 0.0114872 loss)
I1209 05:37:39.033725  2189 solver.cpp:631] Iteration 5100, lr = 7.3412e-05
I1209 05:40:54.287984  2189 solver.cpp:240] Iteration 5150, loss = 0.0112272
I1209 05:40:54.288146  2189 solver.cpp:255]     Train net output #0: loss = 0.0112272 (* 1 = 0.0112272 loss)
I1209 05:40:54.288163  2189 solver.cpp:631] Iteration 5150, lr = 7.32303e-05
I1209 05:44:05.552100  2189 solver.cpp:240] Iteration 5200, loss = 0.0123504
I1209 05:44:05.552181  2189 solver.cpp:255]     Train net output #0: loss = 0.0123504 (* 1 = 0.0123504 loss)
I1209 05:44:05.552193  2189 solver.cpp:631] Iteration 5200, lr = 7.30495e-05
I1209 05:47:18.410975  2189 solver.cpp:240] Iteration 5250, loss = 0.0172216
I1209 05:47:18.411062  2189 solver.cpp:255]     Train net output #0: loss = 0.0172216 (* 1 = 0.0172216 loss)
I1209 05:47:18.411074  2189 solver.cpp:631] Iteration 5250, lr = 7.28698e-05
I1209 05:50:33.027614  2189 solver.cpp:240] Iteration 5300, loss = 0.0126125
I1209 05:50:33.027719  2189 solver.cpp:255]     Train net output #0: loss = 0.0126125 (* 1 = 0.0126125 loss)
I1209 05:50:33.027731  2189 solver.cpp:631] Iteration 5300, lr = 7.26911e-05
I1209 05:53:44.704063  2189 solver.cpp:240] Iteration 5350, loss = 0.0117126
I1209 05:53:44.704151  2189 solver.cpp:255]     Train net output #0: loss = 0.0117126 (* 1 = 0.0117126 loss)
I1209 05:53:44.704164  2189 solver.cpp:631] Iteration 5350, lr = 7.25135e-05
I1209 05:56:53.016206  2189 solver.cpp:240] Iteration 5400, loss = 0.00555667
I1209 05:56:53.016294  2189 solver.cpp:255]     Train net output #0: loss = 0.00555667 (* 1 = 0.00555667 loss)
I1209 05:56:53.016306  2189 solver.cpp:631] Iteration 5400, lr = 7.23368e-05
I1209 06:00:04.420944  2189 solver.cpp:240] Iteration 5450, loss = 0.0111433
I1209 06:00:04.421066  2189 solver.cpp:255]     Train net output #0: loss = 0.0111433 (* 1 = 0.0111433 loss)
I1209 06:00:04.421078  2189 solver.cpp:631] Iteration 5450, lr = 7.21612e-05
I1209 06:03:28.763087  2189 solver.cpp:240] Iteration 5500, loss = 0.00962537
I1209 06:03:28.763197  2189 solver.cpp:255]     Train net output #0: loss = 0.00962537 (* 1 = 0.00962537 loss)
I1209 06:03:28.763214  2189 solver.cpp:631] Iteration 5500, lr = 7.19865e-05
I1209 06:06:39.725003  2189 solver.cpp:240] Iteration 5550, loss = 0.0111173
I1209 06:06:39.725289  2189 solver.cpp:255]     Train net output #0: loss = 0.0111173 (* 1 = 0.0111173 loss)
I1209 06:06:39.725307  2189 solver.cpp:631] Iteration 5550, lr = 7.18129e-05
I1209 06:09:52.560111  2189 solver.cpp:240] Iteration 5600, loss = 0.0151178
I1209 06:09:52.560214  2189 solver.cpp:255]     Train net output #0: loss = 0.0151178 (* 1 = 0.0151178 loss)
I1209 06:09:52.560227  2189 solver.cpp:631] Iteration 5600, lr = 7.16402e-05
I1209 06:13:05.462718  2189 solver.cpp:240] Iteration 5650, loss = 0.0125453
I1209 06:13:05.462803  2189 solver.cpp:255]     Train net output #0: loss = 0.0125453 (* 1 = 0.0125453 loss)
I1209 06:13:05.462815  2189 solver.cpp:631] Iteration 5650, lr = 7.14684e-05
I1209 06:16:16.187785  2189 solver.cpp:240] Iteration 5700, loss = 0.00663404
I1209 06:16:16.187870  2189 solver.cpp:255]     Train net output #0: loss = 0.00663404 (* 1 = 0.00663404 loss)
I1209 06:16:16.187880  2189 solver.cpp:631] Iteration 5700, lr = 7.12977e-05
I1209 06:19:29.129866  2189 solver.cpp:240] Iteration 5750, loss = 0.0136638
I1209 06:19:29.129968  2189 solver.cpp:255]     Train net output #0: loss = 0.0136638 (* 1 = 0.0136638 loss)
I1209 06:19:29.129981  2189 solver.cpp:631] Iteration 5750, lr = 7.11278e-05
I1209 06:22:42.243834  2189 solver.cpp:240] Iteration 5800, loss = 0.0119521
I1209 06:29:11.570849  2189 solver.cpp:255]     Train net output #0: loss = 0.0123193 (* 1 = 0.0123193 loss)
I1209 06:29:11.570874  2189 solver.cpp:631] Iteration 5900, lr = 7.0624e-05
I1209 06:32:26.092237  2189 solver.cpp:240] Iteration 5950, loss = 0.0102198
I1209 06:32:26.092344  2189 solver.cpp:255]     Train net output #0: loss = 0.0102198 (* 1 = 0.0102198 loss)
I1209 06:32:26.092360  2189 solver.cpp:631] Iteration 5950, lr = 7.04579e-05
I1209 06:35:40.060386  2189 solver.cpp:502] Snapshotting to outputModel_iter_6000.caffemodel
I1209 06:35:41.191196  2189 solver.cpp:510] Snapshotting solver state to outputModel_iter_6000.solverstate
I1209 06:35:42.254009  2189 solver.cpp:424] Iteration 6000, Testing net (#0)
I1209 06:38:31.810992  2189 solver.cpp:481]     Test net output #0: loss = 0.0125662 (* 1 = 0.0125662 loss)
I1209 06:38:35.926373  2189 solver.cpp:240] Iteration 6000, loss = 0.0130608
I1209 06:38:35.926427  2189 solver.cpp:255]     Train net output #0: loss = 0.0130608 (* 1 = 0.0130608 loss)
I1209 06:38:35.926440  2189 solver.cpp:631] Iteration 6000, lr = 7.02927e-05

【问题讨论】:

  • 40 毫秒对于情绪估计来说太短了,即使是人类也做不到。您需要(至少)是有一个大约 1 秒长的分析窗口。这将由许多时间框架组成,例如 40x 25ms = 1 秒。建议转换为频谱图表示。

标签: audio neural-network deep-learning caffe conv-neural-network


【解决方案1】:

我没有看到您的损失有任何明显减少,这意味着您的网络并没有真正在学习。由于您正在对训练数据本身进行测试,但准确度仍然很低,这意味着您的网络拟合不足。不过,我可以建议几件事。首先,尝试运行更多的迭代次数,看看损失是否减少。其次,你也可以尝试你的学习率。开始时尽量保持较高。

【讨论】:

  • 我已经在更多数据和更多迭​​代上测试了网络,这导致了类似(错误)的预测。我已经使用大约 3 万个数据进行了 9 万次迭代。
  • 作为调试的黄金法则 - 一次不要进行多个更改。在获取更大的数据集之前,首先获取较小的数据集并运行更多的迭代。
  • 是的,我就是这样做的,上面发布的结果适用于较小的 (3000) 数据集。我不确定问题出在哪里,我正在获取的数据或网络。我不知道数据怎么可能是错误的,因为它只是数据。关于网络架构,我测试了不同维度的相同架构(图像为二维),效果很好。现在,当我检查它的一维数据时(在进行了一些尺寸变化,如内核大小之后)它不起作用。
【解决方案2】:

信息太少,无法回答您的问题。你有多少数据?究竟是什么任务?你从音频中预测什么?

这可能是几十个原因中的任何一个,为什么一切都出错了。但是有两件事,看起来很奇怪。首先,您使用原始音频数据,而我强烈建议使用频谱特征。其次,您的网络定义中的这一部分看起来很可疑:

top: "fc2"
  param { lr_mult: 1 decay_mult: 1 }
  param { lr_mult: 2 decay_mult: 0 }
  inner_product_param {

我通常使用命名参数:

  top: "conv2"
  param {
    name: "conv2_w"
    lr_mult: 1
    decay_mult: 1
  }
  param {
    name: "conv2_b"
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {

但是,即使您在网络定义和数据准备方面做得正确,也不意味着您选择了正确的方法来解决您的任务并且您的任务完全有意义。

【讨论】:

  • 我正在尝试做情绪预测,我有很多数据。但正如我在最初的问题中所说,我已经在更多数据和更多迭​​代上测试了网络,这导致了类似(坏)的预测。到目前为止,我所了解的是 40ms 的音频数据(以 44.1KHz 的速率)应该足以进行(情感)预测。而且我还有一个问题,因为网络本身正在提取某种特征进行预测,所以原始数据不应该比光谱特征更有利吗?因为原始数据包含的信息比从中提取的任何特征都多。
  • 什么是情绪预测?你预测什么价值?效价、唤醒、愤怒程度? “原始数据不应该比光谱特征更有利吗?” - 简短的回答是否定的。此外,由于您处理的是情绪识别,因此我鼓励您为此使用专用功能(与音高、能量和频谱相关)。请参阅 openSMILE 工具包。另外,我相信 40 毫秒是不够的。
  • 现在我正在尝试价。我首先尝试了 ConvNet,因为我认为它会自动削减数据中不必要的方面并提取自己的特征。我将尝试使用功能,看看会发生什么。如果不是 40 毫秒,您能否建议我合适的数据持续时间是多少?这真的很有帮助。根据我的直觉,40 毫秒确实感觉不太适合捕捉情绪,但据我所知,人们甚至可以从 25 毫秒中提取特征。我很困惑。
  • 25ms 是帧持续时间,但从每个音频样本中提取了许多帧。化合价很难正确分类(即使对于人类),更难以预测它的名义价值。但是,如果您确实想继续朝那个方向发展,我建议您先阅读一些文献(例如,用于声学情感识别的深度神经网络:提高基准)并尝试重现那里描述的方法。 NN 不是魔法黑匣子,要处理语音,我们仍然需要某种特征提取。