TensorFlow 手工构建GraphDef [英] TensorFlow Manual Construction of GraphDef

查看:57
本文介绍了TensorFlow 手工构建GraphDef的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在TensorFlow中,我发现我可以做到以下几点,

来自 tensorflow.core 导入框架从 google.protobuf 导入 json_formatgraph_def = framework.graph_pb2.GraphDef()node_def = framework.node_def_pb2.NodeDef()graph_def.node.extend([node_def])打印 json_format.MessageToJson(graph_def)

打印什么

<代码>{节点":[{}]}

现在,我的节点实际上并未设置为操作.我不知道如何让 node_def 成为一个操作.我可以通过构建 OpDefs,

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

属于

我想让我的 NodeDef 注册为这个 OpDef.

<预><代码>>>>打印 json_format.MessageToJson(gen_array_ops._InitOpDefLibrary()._ops['Const'].op_def){输出参数":[{"typeAttr": "dtype",名称":输出"}],"name": "常量",属性":[{类型":张量",名称":值"},{"类型": "类型",名称":数据类型"}]}

解决方案

我相信您正在寻找一种在 GraphDefNodeDef protos 中设置消息字段的方法.如何在 Python 中修改 ProtoBuf 对象的详细信息这里>

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

解决方案

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

这篇关于TensorFlow 手工构建GraphDef的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆