TensorFlow kod stili kılavuzu
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Python stili
TensorFlow'un 4 yerine 2 boşluk kullanması dışında PEP 8 Python stil kılavuzunu izleyin. Lütfen Google Python Stil Kılavuzu'na uyun ve Python değişikliklerinizi kontrol etmek için pylint kullanın.
pilint
pylint
yüklemek için:
$ pip install pylint
TensorFlow kaynak kodu kök dizininden pylint
içeren bir dosyayı kontrol etmek için:
$ pylint --rcfile=tensorflow/tools/ci_build/pylintrc tensorflow/python/keras/losses.py
Desteklenen Python sürümleri
Desteklenen Python sürümleri için TensorFlow kurulum kılavuzuna bakın.
Resmi ve topluluk destekli derlemeler için TensorFlow sürekli derleme durumuna bakın.
C++ kodlama stili
TensorFlow C++ kodundaki değişiklikler Google C++ Stil Kılavuzuna ve TensorFlow'a özgü stil ayrıntılarına uygun olmalıdır. C/C++ değişikliklerinizi kontrol etmek için clang-format
kullanın.
Ubuntu 16+ sürümüne yüklemek için şunları yapın:
$ apt-get install -y clang-format
Bir C/C++ dosyasının formatını aşağıdakilerle kontrol edebilirsiniz:
$ clang-format <my_cc_file> --style=google > /tmp/my_cc_file.cc
$ diff <my_cc_file> /tmp/my_cc_file.cc
Diğer diller
TensorFlow kuralları ve özel kullanımlar
Python işlemleri
TensorFlow işlemi , giriş tensörleri verildiğinde çıkış tensörlerini döndüren (veya grafikler oluştururken grafiğe bir op ekleyen) bir fonksiyondur.
- İlk argüman tensörler olmalı ve ardından temel Python parametreleri gelmelidir. Son bağımsız değişken, varsayılan değeri
None
olan name
. - Tensör argümanları ya tek bir tensör ya da yinelenebilir tensörler olmalıdır. Yani, "Tensör veya Tensörlerin listesi" çok geniştir.
assert_proper_iterable
. - Tensörleri bağımsız değişken olarak alan işlemler, C++ işlemlerini kullanıyorlarsa, tensör olmayan girişleri tensörlere dönüştürmek için
convert_to_tensor
çağırmalıdır. Bağımsız değişkenlerin belgelerde hala belirli bir türdeki Tensor
nesnesi olarak tanımlandığını unutmayın. - Her Python işleminin bir
name_scope
olmalıdır. Aşağıda görüldüğü gibi op'un adını string olarak iletin. - İşlemler, her değerin hem türünü hem de anlamını açıklayan Args ve Returns bildirimlerini içeren kapsamlı bir Python yorumu içermelidir. Açıklamada olası şekiller, tipler veya sıralar belirtilmelidir. Belge ayrıntılarına bakın.
- Kullanılabilirliğin arttırılması için Örnek bölümüne operasyonun giriş/çıkışlarının kullanıldığı bir kullanım örneği ekleyin.
-
tf.Tensor.eval
veya tf.Session.run
açıkça kullanmaktan kaçının. Örneğin Tensor değerine bağlı mantığı yazmak için TensorFlow kontrol akışını kullanın. Alternatif olarak, işlemi yalnızca istekli yürütme etkinleştirildiğinde çalışacak şekilde kısıtlayın ( tf.executing_eagerly()
).
Örnek:
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
Kullanımı:
output = my_op(t1, t2, my_param=0.5, other_param=0.6,
output_collections=['MY_OPS'], name='add_t1t2')
Aksi belirtilmediği sürece bu sayfanın içeriği Creative Commons Atıf 4.0 Lisansı altında ve kod örnekleri Apache 2.0 Lisansı altında lisanslanmıştır. Ayrıntılı bilgi için Google Developers Site Politikaları'na göz atın. Java, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-01-14 UTC.
[null,null,["Son güncelleme tarihi: 2025-01-14 UTC."],[],[],null,["# TensorFlow code style guide\n\nPython style\n------------\n\nFollow the [PEP 8 Python style\nguide](https://www.python.org/dev/peps/pep-0008/), except TensorFlow uses 2\nspaces instead of 4. Please conform to the\n[Google Python Style Guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md),\nand use [pylint](https://www.pylint.org/) to check your Python changes.\n\n### pylint\n\nTo install `pylint`: \n\n $ pip install pylint\n\nTo check a file with `pylint` from the TensorFlow source code root directory: \n\n $ pylint --rcfile=tensorflow/tools/ci_build/pylintrc tensorflow/python/keras/losses.py\n\n### Supported Python versions\n\nFor supported Python versions, see the TensorFlow\n[installation guide](https://www.tensorflow.org/install).\n\nSee the TensorFlow\n[continuous build status](https://github.com/tensorflow/tensorflow/blob/master/README.md#continuous-build-status)\nfor official and community supported builds.\n\nC++ coding style\n----------------\n\nChanges to TensorFlow C++ code should conform to the [Google C++ Style\nGuide](https://google.github.io/styleguide/cppguide.html) and [TensorFlow specific style details](https://github.com/tensorflow/community/blob/master/governance/cpp-style.md). Use `clang-format` to check your C/C++ changes.\n\nTo install on Ubuntu 16+, do: \n\n $ apt-get install -y clang-format\n\nYou can check the format of a C/C++ file with the following: \n\n $ clang-format \u003cmy_cc_file\u003e --style=google \u003e /tmp/my_cc_file.cc\n $ diff \u003cmy_cc_file\u003e /tmp/my_cc_file.cc\n\nOther languages\n---------------\n\n- [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)\n- [Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html)\n- [Google Shell Style Guide](https://google.github.io/styleguide/shell.xml)\n- [Google Objective-C Style Guide](https://google.github.io/styleguide/objcguide.html)\n\nTensorFlow conventions and special uses\n---------------------------------------\n\n### Python operations\n\nA TensorFlow *operation* is a function that, given input tensors returns output\ntensors (or adds an op to a graph when building graphs).\n\n- The first argument should be tensors, followed by basic Python parameters. The last argument is `name` with a default value of `None`.\n- Tensor arguments should be either a single tensor or an iterable of tensors. That is, a \"Tensor or list of Tensors\" is too broad. See `assert_proper_iterable`.\n- Operations that take tensors as arguments should call `convert_to_tensor` to convert non-tensor inputs into tensors if they are using C++ operations. Note that the arguments are still described as a `Tensor` object of a specific dtype in the documentation.\n- Each Python operation should have a `name_scope`. As seen below, pass the name of the op as a string.\n- Operations should contain an extensive Python comment with Args and Returns declarations that explain both the type and meaning of each value. Possible shapes, dtypes, or ranks should be specified in the description. See documentation details.\n- For increased usability, include an example of usage with inputs / outputs of the op in Example section.\n- Avoid making explicit use of [`tf.Tensor.eval`](https://www.tensorflow.org/api_docs/python/tf/Tensor#eval) or `tf.Session.run`. For example, to write logic that depends on the Tensor value, use the TensorFlow control flow. Alternatively, restrict the operation to only run when eager execution is enabled ([`tf.executing_eagerly()`](https://www.tensorflow.org/api_docs/python/tf/executing_eagerly)).\n\nExample: \n\n def my_op(tensor_in, other_tensor_in, my_param, other_param=0.5,\n output_collections=(), name=None):\n \"\"\"My operation that adds two tensors with given coefficients.\n\n Args:\n tensor_in: `Tensor`, input tensor.\n other_tensor_in: `Tensor`, same shape as `tensor_in`, other input tensor.\n my_param: `float`, coefficient for `tensor_in`.\n other_param: `float`, coefficient for `other_tensor_in`.\n output_collections: `tuple` of `string`s, name of the collection to\n collect result of this op.\n name: `string`, name of the operation.\n\n Returns:\n `Tensor` of same shape as `tensor_in`, sum of input values with coefficients.\n\n Example:\n \u003e\u003e\u003e my_op([1., 2.], [3., 4.], my_param=0.5, other_param=0.6,\n output_collections=['MY_OPS'], name='add_t1t2')\n [2.3, 3.4]\n \"\"\"\n with tf.name_scope(name or \"my_op\"):\n tensor_in = tf.convert_to_tensor(tensor_in)\n other_tensor_in = tf.convert_to_tensor(other_tensor_in)\n result = my_param * tensor_in + other_param * other_tensor_in\n tf.add_to_collection(output_collections, result)\n return result\n\nUsage: \n\n output = my_op(t1, t2, my_param=0.5, other_param=0.6,\n output_collections=['MY_OPS'], name='add_t1t2')"]]