使用protobuf,如何从已解析的对象中删除字段?

时间:2018-03-14 19:20:00

标签: python field protocol-buffers

我已成功解析了一个原型缓冲区到我的对象中,可以显示或修改我的字段:

print "convolution param = " + str(net.layer[1].convolution_param)
net.layer[1].convolution_param.num_output = 0

返回

convolution param = num_output: 64
pad: 1
kernel_size: 3

但是,我试图完全删除convolution_param而不能:

del net.layer[1].convolution_param

返回

del net.layer[1].convolution_param
TypeError: Can't set composite field

我相信这是在proto库的source中触发此错误的原因:

int SetAttr(CMessage* self, PyObject* name, PyObject* value) {
  if (PyDict_Contains(self->composite_fields, name)) {
    PyErr_SetString(PyExc_TypeError, "Can't set composite field");
    return -1;
  }

删除字段的规定方法是什么?我还尝试了以下更多的成功:

del net.layer[1].convolution_param.num_output
del net.layer[1].convolution_param[:] = []

1 个答案:

答案 0 :(得分:1)

我在以下方面取得了成功:

del net.layer[1].convolution_param[:]

卸下牙套将导致上述错误。