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
- Google Java Stil Kılavuzu
- Google JavaScript Stil Kılavuzu
- Google Kabuk Stili Kılavuzu
- Google Objective-C Stil Kılavuzu
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
olanname
. - 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 hâlâ belirli bir türdekiTensor
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
veyatf.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')