TensorFlow 文档风格指南

最佳实践

  • 关注用户意图和受众。
  • 使用日常用语,并保持句子简短。
  • 使用一致的句子结构、措辞和大小写。
  • 使用标题和列表使您的文档更易于浏览。
  • Google 开发者文档风格指南 很有帮助。

Markdown

除了少数例外,TensorFlow 使用与 GitHub Flavored Markdown (GFM) 类似的 Markdown 语法。本节介绍 GFM Markdown 语法与 TensorFlow 文档使用的 Markdown 之间的区别。

编写关于代码的内容

代码的内联提及

在文本中使用以下符号时,请在它们周围加上 `反引号`

  • 参数名称:`input``x``tensor`
  • 返回的张量名称:`output``idx``out`
  • 数据类型:`int32``float``uint8`
  • 文本中引用的其他操作名称:`list_diff()``shuffle()`
  • 类名:`tf.Tensor``Strategy`
  • 文件名:`image_ops.py``/path_to_dir/file_name`
  • 数学表达式或条件:`-1-input.dims() <= dim <= input.dims()`

代码块

使用三个反引号打开和关闭代码块。可选地,在第一个反引号组之后指定编程语言,例如


```python
# some python code here
```

在单个 GitHub 存储库中的文件之间使用相对链接。包含文件扩展名。

例如,**您正在阅读的此文件**来自 https://github.com/tensorflow/docs 存储库。因此,它可以使用相对路径来链接到同一存储库中的其他文件,如下所示

  • [Basics](../../guide/basics.ipynb) 生成 Basics

这是首选方法,因为这样 tensorflow.orgGitHubColab 上的链接都能正常工作。此外,读者在点击链接时会停留在同一个网站上。

对于指向当前存储库之外文件的链接,请使用包含完整 URI 的标准 Markdown 链接。如果可用,请优先链接到 tensorflow.org URI。

要链接到源代码,请使用以 https://www.github.com/tensorflow/tensorflow/blob/master/ 开头的链接,后跟从 GitHub 根目录开始的文件名。

tensorflow.org 上链接时,请在 Markdown 链接上包含 {:.external},以便显示“外部链接”符号。

  • [GitHub](https://github.com/tensorflow/docs){:.external} 生成 GitHub

不要在链接中包含 URI 查询参数

  • 使用:<a href="https://tensorflowcn.cn/guide/data">https://tensorflowcn.cn/guide/data</a>
  • 不要使用:<a href="https://tensorflowcn.cn/guide/data?hl=en">https://tensorflowcn.cn/guide/data?hl=en</a>

图像

上一节中的建议适用于指向页面的链接。图像的处理方式不同。

通常,您不应该签入图像,而是将您的 PR 添加到 TensorFlow-Docs 团队,并要求他们在 tensorflow.org 上托管图像。这有助于减小存储库的大小。

如果您确实将图像提交到存储库,请注意,某些系统无法处理指向图像的相对路径。请优先使用指向图像在 tensorflow.org 上最终位置的完整 URL。

API 链接在网站发布时会进行转换。要链接到符号的 API 参考页面,请将符号路径括在反引号中

除了长路径之外,完整路径略微优先。可以通过删除前导路径组件来缩写路径。如果满足以下条件,则部分路径将转换为链接

  • 路径中至少有一个 .,并且
  • 部分路径在项目中是唯一的。

API 路径将链接到 **每个项目**,该项目在 tensorflow.org 上发布了 Python API。您可以通过将 API 名称用反引号括起来,轻松地从单个文件链接到多个子项目。例如

对于具有多个路径别名的符号,略微优先使用与 tensorflow.org 上的 API 页面匹配的路径。所有别名都将重定向到正确的页面。

Markdown 中的数学

您可以在编辑 Markdown 文件时在 TensorFlow 中使用 MathJax,但请注意以下几点

  • MathJax 在 tensorflow.org 上正确渲染。
  • MathJax 在 GitHub 上无法正确渲染。
  • 这种表示法可能会让不熟悉的开发者感到困惑。
  • 为了保持一致性,tensorflow.org 遵循与 Jupyter/Colab 相同的规则。

在 MathJax 块周围使用 $$

$$
E=\frac{1}{2n}\sum_x\lVert (y(x)-y'(x)) \rVert^2
$$

\[ E=\frac{1}{2n}\sum_x\lVert (y(x)-y'(x)) \rVert^2 \]

将内联 MathJax 表达式用 $ ... $ 括起来


This is an example of an inline MathJax expression: $ 2 \times 2 = 4 $

这是一个内联 MathJax 表达式的示例:\( 2 \times 2 = 4 \)

\\( ... \\) 分隔符也适用于内联数学,但 $ 形式有时更易读。

散文风格

如果您要编写或编辑大量叙述性文档,请阅读 Google 开发者文档风格指南

良好风格的原则

  • 检查您贡献内容的拼写和语法。 大多数编辑器都包含拼写检查器或可用的拼写检查插件。您也可以将文本粘贴到 Google 文档或其他文档软件中,以进行更强大的拼写和语法检查。
  • 使用轻松友好的语气。 像对话一样编写 TensorFlow 文档——就像您在与另一个人一对一交谈一样。在文章中使用支持性的语气。
  • 避免免责声明、意见和价值判断。 像“容易”、“只是”和“简单”这样的词语充满了假设。对您来说可能很容易的事情,对另一个人来说可能很困难。尽可能避免这些词语。
  • 使用简单、直截了当的句子,避免复杂的术语。 复合句、从句链和特定位置的习语会使文本难以理解和翻译。如果一个句子可以分成两句,它可能应该分成两句。避免使用分号。在适当的情况下使用项目符号列表。
  • 提供上下文。 不要在没有解释的情况下使用缩写。不要在没有链接的情况下提及非 TensorFlow 项目。解释代码为何以这种方式编写。

使用指南

操作

在 markdown 文件中,当您想显示操作返回的内容时,请使用 # ⇒ 而不是单个等号。

# 'input' is a tensor of shape [2, 3, 5]
tf.expand_dims(input, 0)  # ⇒ [1, 2, 3, 5]

在笔记本中,显示结果而不是添加注释(如果笔记本单元格中的最后一个表达式未分配给变量,则会自动显示)。

在 API 参考文档中,建议使用 doctest 来显示结果。

张量

当您一般谈论张量时,不要将张量一词大写。当您谈论提供给操作或从操作返回的特定对象时,您应该将张量一词大写并在其周围添加反引号,因为您正在谈论一个 张量 对象。

除非您真的在谈论一个 张量 对象,否则不要使用张量(复数)一词来描述多个 张量 对象。相反,说“一个 张量 对象列表(或集合)”。

使用形状一词来详细说明张量的轴,并在方括号中使用反引号显示形状。例如


If `input` is a three-axis `Tensor` with shape `[3, 4, 3]`, this operation
returns a three-axis `Tensor` with shape `[6, 8, 6]`.

如上所述,在谈论 张量 形状的元素时,建议使用“轴”或“索引”而不是“维度”。否则很容易将“维度”与向量空间的维度混淆。“三维向量”只有一个长度为 3 的轴。