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

标签 python field protocol-buffers

我已经成功地将原型(prototype)缓冲区解析到我的对象中,并且可以显示或修改我的字段:

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

我相信这是在 source 中触发此错误的原因原型(prototype)库的:

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[:] = []

最佳答案

我取得了成功:

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

删除大括号会导致上述错误。

关于python - 使用 protobuf,如何从已解析的对象中删除字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49286095/

相关文章:

go - 与protobuf相比,flatbuffer序列化性能慢

mysql - 如何计算数据库中的水平值?

php - 多次更新登录用户表中的字段

Golang if 语句没有看到 0 for int32

python - “WSGIRequest”对象不可订阅

model - 如何制作字段取决于 product.product 的 lst_price 但可以编辑

c# - Protobuf 映射反序列化问题

python - Mongoengine 根据最后一个索引对列表嵌入字段进行过滤查询

python - Tensorflow:张量的交叉索引切片

python - 尝试使用 python 将 csv 文件转换为 parquet 时内存不足