2017-03-01 6 views
3

、私は、Tensorflow操作はTensorflow <a href="https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/ops/array_ops.cc#L2519" rel="nofollow noreferrer">source</a>のドキュメント

Pythonで
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"); 

、私は次のことを行うことができ、私はPythonでいるProtobuf定義を取得しています

>>> 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 ... 
} 

ノートを参照してください(私は削除しましたいくつかの簡潔さのために)TF操作の。私は、C++コードに書かれている定義のドキュメンテーションセクションを取得したいと思います。どうすれば入手できますか?

+0

この情報(.Doc)はTFソー​​スコードに存在しますが、Pythonラッパーを通してエクスポートされていないため、Pythonでは利用できません。 (ここでは)https://github.com/tensorflow/tensorflow/blob/a3e636c0f561e2ac6d9f8a0044fbe09acb003803/tensorflow/python/framework/python_op_gen.ccを見てください。これは、あなたのpythonで使う 'op_def'が生成される場所です。いくつかのコードをここに実装する必要があります。そうすれば、Pythonのドキュメンテーションにアクセスできます。 – Arash

+0

ありがとうございます。 https://github.com/tensorflow/tensorflow/blob/a3e636c0f561e2ac6d9f8a0044fbe09acb003803/tensorflow/core/framework/op_def_util.cc#L684は、説明がOpDefから削除されているようです。これは本当ですか? https://github.com/tensorflow/tensorflow/blob/a3e636c0f561e2ac6d9f8a0044fbe09acb003803/tensorflow/python/framework/python_op_gen.cc#L708という行を削除しても、OpDefのドキュメントはProtobufに残っていますか? –

+0

この行のコメントを解除すると、protobufに関する一連の問題が発生します。おそらくもっと良い方法があります。 https://github.com/google/protobuf/issues/2798 –

答えて

1

これは痛いものでした。あなたはTFといるProtobuf

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

にパッチを適用する必要があります。そして、あなたは https://github.com/tensorflow/tensorflow/blob/a3e636c0f561e2ac6d9f8a0044fbe09acb003803/tensorflow/python/framework/python_op_gen.cc#L708

再構築と実行を与え、さらに行をコメントアウトする必要があり、

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 

そして、私を実行しますテスト、

$ 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." 

あまりにも多くのRegexがかかりました...

関連する問題

 関連する問題