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"
}
]
}