1

我使用 mxnet 通过微调 resnet50 来进行图像回归(4 个标签)。

  1. 我在符号中用 LinearRegressionOutput 更改了 SoftmaxOutput
  2. 我将图像标签更改为数字
  3. 我使用 metric=mx.metric.MSE() 而不是训练 acc。

所以符号就像在最后一层。

{
"op": "FullyConnected",
"name": "fc",
"attr": {"num_hidden": "4"},
"inputs": [[430, 0, 0], [431, 0, 0], [432, 0, 0]]
},
{
"op": "null",
"name": "lro_label",
"inputs": []
},
{
"op": "LinearRegressionOutput",
"name": "lro",
"inputs": [[433, 0, 0], [434, 0, 0]]
}
],

但是当我运行代码时,我遇到了 simple_bind 之类的错误。

simple_bind 错误。参数: lro_label: (36,) data: (36, 3, 227, 227) Traceback (最近一次调用最后一次): File "finetune.py", line 59, in for_training=True) File "/usr/local/lib /python2.7/dist-packages/mxnet-0.10.1-py2.7.egg/mxnet/module/module.py”,第 388 行,在绑定 state_names=self._state_names) 文件“/usr/local/lib/ python2.7/dist-packages/mxnet-0.10.1-py2.7.egg/mxnet/module/executor_group.py”,第 214 行,在 init self.bind_exec(data_shapes, label_shapes, shared_group) 文件“/usr/local /lib/python2.7/dist-packages/mxnet-0.10.1-py2.7.egg/mxnet/module/executor_group.py”,第 310 行,在 bind_exec shared_group)) 文件“/usr/local/lib/python2 .7/dist-packages/mxnet-0.10.1-py2.7.egg/mxnet/module/executor_group.py",第 582 行,在 _bind_ith_exec shared_buffer=shared_data_arrays, **input_shapes) 文件中"

似乎错误发生在

mod = mx.module.Module( symbol=new_sym, context=ctx, data_names=('data',), label_names=('lro_label',)) 
mod.bind(data_shapes=[('data', (batch_size, 3, 227, 227))], label_shapes=[('lro_label', (batch_size,))], for_training=True)

输入输出不一样,但是我用softmax的时候就没有这个问题了。发生了什么?

4

1 回答 1

1

我有两个错误的部分:

  • num_class 需要为 1 而不是分类标签
  • lro_label: (36,) 应该是 lro_label: (36, 1,)
于 2017-06-15T13:35:48.847 回答