TensorFlow手动构建GraphDef

时间:2017-02-10 21:31:02

标签: tensorflow protocol-buffers

在TensorFlow中,我发现我可以执行以下操作,

from tensorflow.core import framework
from google.protobuf import json_format
graph_def = framework.graph_pb2.GraphDef()
node_def = framework.node_def_pb2.NodeDef()
graph_def.node.extend([node_def])
print json_format.MessageToJson(graph_def)

打印

{
  "node": [
    {}
  ]
}

现在,我的节点实际上并未设置为Operation。我无法弄清楚如何使node_def成为一个操作。我可以通过构建OpDefs,

from tensorflow.python.ops import gen_array_ops
const_op_def = gen_array_ops._InitOpDefLibrary()._ops['Const'].op_def

哪个是班级<class 'tensorflow.core.framework.op_def_pb2.OpDef'>

我想把我的NodeDef寄存器作为这个OpDef。

编辑:

>>> print json_format.MessageToJson(gen_array_ops._InitOpDefLibrary()._ops['Const'].op_def)
{
  "outputArg": [
    {
      "typeAttr": "dtype", 
      "name": "output"
    }
  ], 
  "name": "Const", 
  "attr": [
    {
      "type": "tensor", 
      "name": "value"
    }, 
    {
      "type": "type", 
      "name": "dtype"
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

我相信您正在寻找一种在GraphDefNodeDef原型内设置消息字段的方法。 here

中详细介绍了如何在Python中修改ProtoBuf对象。