С here,Получение Protobuf сообщение для каждого TensorFlow Операция
Есть несколько способов, чтобы получить список OpDefs для зарегистрированных ОПС:
- TF_GetAllOpList в C API возвращает все зарегистрированные Сообщения протокола OpDef. Это можно использовать для записи генератора на языке клиента . Для этого требуется, чтобы язык клиента поддерживал поддержку буфера протокола , чтобы интерпретировать сообщения OpDef.
- Функция C++ OpRegistry :: Global() -> GetRegisteredOps() возвращает тот же список всех зарегистрированных OpDefs (определенный в [tensorflow/core/framework/op.h]). Это можно использовать для записи генератора в C++ (особенно полезно для языков, на которых имеет поддержку буфера протокола).
- Сериализуемая в ASCII версия этого списка периодически проверяется на [tensorflow/core/ops/ops.pbtxt] с помощью автоматизированного процесса .
Но увы, я хочу сделать это в Python, как,
import tensorflow as tf
from google.protobuf import json_format
json_string = json_format.MessageToJson(tf.GetAllOpsList())
Я хочу способ получить сообщение Protobuf для каждой операции в Tensorflow, так что я могу сбросить его как JSON с помощью
Я бы предпочел использовать Python, чтобы добавить пользовательские операции и получить Protobuf из этих –
Добавлена дополнительная информация. Вы можете либо восстановить «ops.txt», вызвав тот же сценарий генерации, что и во время генерации gen _ * _ ops.py, или найти базовую функциональность C и добавить некоторые обертки swig –
Спасибо! Почти готово. Меня не волнует аський, но мне нужен JSON. Поэтому я изменил его на 'from google.protobuf import json_format' и обнаружил, что' json_format.MessageToJson (gen_array_ops._InitOpDefLibrary() ._ ops ['Const']. Op_def) 'почти дает мне то, что я хочу. Это просто metaInfoDef, но мне нужен блок graphDef слишком –