Monday, March 13, 2017

Tensorflow Operation Documentation

Leave a Comment

In the Tensorflow source, I see,

REGISTER_OP("BroadcastGradientArgs")     .Input("s0: T")     .Input("s1: T")     .Output("r0: T")     .Output("r1: T")     .Attr("T: {int32, int64} = DT_INT32")     .SetShapeFn([](InferenceContext* c) {       ... uninteresting details ...     })     .Doc(R"doc(                                                                                                               Return the reduction indices for computing gradients of s0 op s1 with broadcast.                                               This is typically used by gradient computations for a broadcasting operation.                                                 )doc"); 

In Python, I can do the following,

>>> from tensorflow.python.ops import gen_array_ops >>> gen_array_ops._InitOpDefLibrary()._ops['BroadcastGradientArgs'].op_def name: "BroadcastGradientArgs" input_arg {   name: "s0"   type_attr: "T" } ... more stuff ... attr {   name: "T"   type: "type"   ... uninteresting details ... } 

Note that I am getting in Python the Protobuf definition (I removed some for brevity) of the TF operation. I want to get the documentation section of the definition that I see in the C++ code. How do I get it?

1 Answers

Answers 1

That was painful. You need to patch TF and Protobuf

https://github.com/tensorflow/tensorflow/issues/8207 https://github.com/google/protobuf/issues/2798

And then you need to additionally comment out the line, https://github.com/tensorflow/tensorflow/blob/a3e636c0f561e2ac6d9f8a0044fbe09acb003803/tensorflow/python/framework/python_op_gen.cc#L708

Rebuilding and running gave,

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package && \ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg && \ sudo pip install --upgrade /tmp/tensorflow_pkg/tensorflow-1.0.0*.whl 

And executing my test,

$ python -c "from tensorflow.python.ops import gen_array_ops; print gen_array_ops._InitOpDefLibrary()._ops['BroadcastGradientArgs'].op_def" name: "BroadcastGradientArgs" input_arg {   name: "s0"   type_attr: "T" } input_arg {   name: "s1"   type_attr: "T" } output_arg {   name: "r0"   type_attr: "T" } output_arg {   name: "r1"   type_attr: "T" } attr {   name: "T"   type: "type"   default_value {     type: DT_INT32   }   allowed_values {     list {       type: DT_INT32       type: DT_INT64     }   } } summary: "Return the reduction indices for computing gradients of s0 op s1 with broadcast." description: "This is typically used by gradient computations for a broadcasting operation." 

That took way too much Regex ...

If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment