TensorFlow 文档风格指南

最佳做法

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

Markdown

除了少数例外,TensorFlow 使用与 GitHub Flavored Markdown (GFM) 类似的 Markdown 语法。本部分说明了 GFM Markdown 语法与 TensorFlow 文档所使用的 Markdown 之间的区别。

撰写关于代码的内容

代码的内嵌提及

在文本中使用以下符号时,请在符号周围加上 backticks

  • 参数名称:inputxtensor
  • 返回的张量名称:outputidxout
  • 数据类型:int32floatuint8
  • 文本中引用的其他运算名称:list_diff()shuffle()
  • 类名:tf.TensorStrategy
  • 文件名:image_ops.py/path_to_dir/file_name
  • 数学表达式或条件:-1-input.dims() <= dim <= input.dims()

代码块

使用三个反引号来打开和关闭代码块。另外,也可以选择在第一个反引号组后面指定编程语言,例如:



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

Markdown 和笔记本中的链接

仓库中各文件之间的链接

在单个 GitHub 仓库中的各文件之间使用相对链接。包括文件扩展名。

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

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

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

注:您应当为相关链接包含文件扩展名,例如 .ipynb.md。它将在没有扩展名的情况下呈现在 tensorflow.org 上。

外部链接

对于不在当前仓库中的文件的链接,请使用包含完整 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://www.tensorflow.org/guide/data">https://www.tensorflow.org/guide/data</a>
  • 不使用:<a href="https://www.tensorflow.org/guide/data?hl=en">https://www.tensorflow.org/guide/data?hl=en</a>

图片

上一部分中的建议适用于页面的链接。图片的处理方式不同。

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

如果您确实将图片提交到仓库,请注意某些系统不会处理图片的相对路径。首选使用指向图片在 tensorflow.org 上的最终位置的完整 URL。

API 文档的链接

网站发布后会转换 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 \)

( ... ) 分隔符也适用于内嵌数学公式,但 $ 格式有时更易于阅读。

注:如果您需要在文本或 MathJax 表达式中使用美元符号,请使用前导斜杠对其进行转义:\$。代码块内的美元符号(例如 Bash 变量名称)不需要转义。

散文风格

如果您要编写或编辑相当一部分叙述性文档,请阅读 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 来显示结果。

张量

一般而言,在谈论张量时,请不要把 tensor 一词大写。当您谈论提供给运算或从运算返回的特定对象时,应当把 Tensor 一词大写并在其周围加上反引号,因为您是在讨论 Tensor 对象。

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

使用 shape 一词来详细描述张量的轴,并在带反引号的方括号中显示该形状。例如:


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

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