Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
423 views
in Technique[技术] by (71.8m points)

protocol buffers - TensorFlow Manual Construction of GraphDef

In TensorFlow, I found that I can do the following,

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)

Which prints

{
  "node": [
    {}
  ]
}

Now, my node is not actually set to an Operation. I can't figure out how to make node_def be an operation. I can construct OpDefs via,

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

Which is of class <class 'tensorflow.core.framework.op_def_pb2.OpDef'>

I would like to make my NodeDef register as this OpDef.

EDIT:

>>> 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"
    }
  ]
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I believe you are looking for a way to set message fields inside of the GraphDef and NodeDef protos. How to modify ProtoBuf objects in Python is detailed here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...