此页面由 Cloud Translation API 翻译。
Switch to English

TensorFlow代码样式指南

Python风格

请遵循PEP 8 Python样式指南 ,但TensorFlow使用2个空格而不是4个空格。请遵循Google Python样式指南 ,并使用pylint来检查您的Python更改。

皮林特

要安装pylint并检索TensorFlow的自定义样式定义:

 
$ pip install pylint
$ wget -O /tmp/pylintrc https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/tools/ci_build/pylintrc

 

要使用pylint检查文件:

 $ pylint --rcfile=/tmp/pylintrc myfile.py
 

支持的Python版本

TensorFlow支持Python> = 3.5。有关详细信息,请参见安装指南

请参阅TensorFlow 持续构建状态以获取官方和社区支持的构建。

C ++编码风格

对TensorFlow C ++代码的更改应符合《 Google C ++样式指南》 。使用clang-format检查您的C / C ++更改。

要在Ubuntu 16+上安装,请执行以下操作:

 $ apt-get install -y clang-format
 

您可以使用以下方法检查C / C ++文件的格式:

 $ clang-format <my_cc_file> --style=google > /tmp/my_cc_file.cc
$ diff <my_cc_file> /tmp/my_cc_file.cc
 

其他语言

TensorFlow约定和特殊用途

Python操作

TensorFlow 操作是一项功能,给定输入张量返回输出张量(或在构建图形时向图形添加操作)。

  • 第一个参数应该是张量,然后是基本的Python参数。最后一个参数是name ,默认值为None
  • 张量参数应为单个张量或可张量的张量。也就是说,“张量或张量列表”太宽泛。参见assert_proper_iterable
  • 如果将使用张量作为参数的操作使用C ++操作,则应调用convert_to_tensor将非张量输入转换为张量。请注意,参数在文档中仍被描述为特定dtype的Tensor对象。
  • 每个Python操作都应具有一个name_scope 。如下所示,将op的名称作为字符串传递。
  • 操作应包含带有Args和Returns声明的广泛Python注释,该注释说明每个值的类型和含义。可能的形状,dtype或等级应在说明中指定。请参阅文档详细信息。
  • 为了提高可用性,请在“示例”部分中包含与op的输入/输出一起使用的示例。
  • 避免显式使用tf.Tensor.evaltf.Session.run 。例如,要编写依赖于Tensor值的逻辑,请使用TensorFlow控制流。或者,将操作限制为仅在启用急切执行( tf.executing_eagerly() )时运行。

例:

 def my_op(tensor_in, other_tensor_in, my_param, other_param=0.5,
          output_collections=(), name=None):
  """My operation that adds two tensors with given coefficients.

  Args:
    tensor_in: `Tensor`, input tensor.
    other_tensor_in: `Tensor`, same shape as `tensor_in`, other input tensor.
    my_param: `float`, coefficient for `tensor_in`.
    other_param: `float`, coefficient for `other_tensor_in`.
    output_collections: `tuple` of `string`s, name of the collection to
                        collect result of this op.
    name: `string`, name of the operation.

  Returns:
    `Tensor` of same shape as `tensor_in`, sum of input values with coefficients.

  Example:
    >>> my_op([1., 2.], [3., 4.], my_param=0.5, other_param=0.6,
              output_collections=['MY_OPS'], name='add_t1t2')
    [2.3, 3.4]
  """
  with tf.name_scope(name or "my_op"):
    tensor_in = tf.convert_to_tensor(tensor_in)
    other_tensor_in = tf.convert_to_tensor(other_tensor_in)
    result = my_param * tensor_in + other_param * other_tensor_in
    tf.add_to_collection(output_collections, result)
    return result
 

用法:

 output = my_op(t1, t2, my_param=0.5, other_param=0.6,
               output_collections=['MY_OPS'], name='add_t1t2')