此页面包含TensorFlow的开发人员和用户应遵循的风格决策,以增加其代码的可读性,减少错误数量并提高一致性。
Python风格
一般遵循 PEP8 Python风格指南,除了使用2个空格。
Python 2和3兼容
-
所有代码都需要与Python 2和3兼容。
-
所有Python文件中都应存在下一行:
- 使用
six
写兼容代码(例如six.moves.range
)。
Bazel BUILD规则
TensorFlow使用Bazel构建系统并执行下一个要求:
-
每个BUILD文件应包含下一个标题:
-
在每个BUILD文件的末尾,应包含:
-
添加新的BUILD文件时,将此行添加
tensorflow/BUILD
到all_opensource_files
目标文件中。
-
对于所有Python BUILD目标(库和测试)添加下一行:
张量
- 处理批次的操作可以假设Tensor的第一个维度是批量维度。
Python操作
甲的Python操作是一个函数,给定输入张量和参数,创建图的一部分,并返回输出张量。
-
第一个参数应该是张量,其次是基本的python参数。最后一个参数
name
的默认值为None
。如果操作需要将一些Tensor
s 保存到Graph集合,则将参数与集合名称一起放在name
参数之前。 -
张量参数应该是单张量或迭代张量。例如“张量或张量表”太广泛了。见
assert_proper_iterable
。 -
convert_to_tensor
如果使用C ++操作,将张量作为参数的操作应调用将非张量输入转换为张量。请注意,参数仍被描述为文档中Tensor
特定dtype的对象。 -
每个Python操作应该有
op_scope
如下所示。传递输入张量列表,name
并将op的默认名称作为参数。 -
操作应该包含一个广泛的Python注释与Args和Returns声明,解释每个值的类型和含义。应在说明中指定可能的形状,型式或等级。 请参阅文档详细信息
-
为了提高可用性,包括使用示例部分中op操作的输入/输出示例。
例:
用法:
图层
阿层是结合可变创建和/或一个或多个其他图形操作一个Python操作。遵循与常规Python操作相同的要求。
- 如果一个层创建一个或多个变量,层函数也应该遵循下列参数:
initializers
:可选地允许指定变量的初始值。regularizers
:可选地允许为变量指定正则化程序。trainable
:哪个控制他们的变量是否可训练。scope
:VariableScope
该变量将被放在下面的对象。-
reuse
:bool
指示变量如果存在于范围内,应重新使用。 -
训练过程中行为不同的层应具有:
is_training
:bool
指示是否建立训练图。
例: