Gaya Python
Ikuti panduan gaya Python PEP 8 , kecuali TensorFlow menggunakan 2 spasi, bukan 4. Harap ikuti Panduan Gaya Python Google , dan gunakan pylint untuk memeriksa perubahan Python Anda.
pilint
Untuk memasang pylint
:
$ pip install pylint
Untuk memeriksa file dengan pylint
dari direktori root kode sumber TensorFlow:
$ pylint --rcfile=tensorflow/tools/ci_build/pylintrc tensorflow/python/keras/losses.py
Versi Python yang didukung
Untuk versi Python yang didukung, lihat panduan penginstalan TensorFlow.
Lihat status build berkelanjutan TensorFlow untuk build resmi dan yang didukung komunitas.
Gaya pengkodean C ++
Perubahan pada kode TensorFlow C ++ harus sesuai dengan Panduan Gaya Google C ++ dan detail gaya khusus TensorFlow . Gunakan clang-format
untuk memeriksa perubahan C / C ++ Anda.
Untuk menginstal di Ubuntu 16+, lakukan:
$ apt-get install -y clang-format
Anda dapat memeriksa format file C / C ++ dengan yang berikut ini:
$ clang-format <my_cc_file> --style=google > /tmp/my_cc_file.cc
$ diff <my_cc_file> /tmp/my_cc_file.cc
Bahasa lainnya
- Panduan Gaya Google Java
- Panduan Gaya JavaScript Google
- Panduan Gaya Google Shell
- Panduan Gaya Objective-C Google
Konvensi TensorFlow dan penggunaan khusus
Operasi Python
Operasi TensorFlow adalah fungsi yang, jika input tensor mengembalikan tensor output (atau menambahkan op ke grafik saat membuat grafik).
- Argumen pertama harus berupa tensor, diikuti dengan parameter dasar Python. Argumen terakhir adalah
name
dengan nilai defaultNone
. - Argumen tensor harus berupa tensor tunggal atau tensor iterable. Artinya, "Tensor atau daftar Tensor" terlalu luas. Lihat
assert_proper_iterable
. - Operasi yang menggunakan tensor sebagai argumen harus memanggil
convert_to_tensor
untuk mengubah input non-tensor menjadi tensor jika menggunakan operasi C ++. Perhatikan bahwa argumen tersebut masih dideskripsikan sebagai objekTensor
tipe tertentu dalam dokumentasi. - Setiap operasi Python harus memiliki
name_scope
. Seperti yang terlihat di bawah, berikan nama op sebagai string. - Operasi harus berisi komentar Python ekstensif dengan deklarasi Args dan Returns yang menjelaskan jenis dan arti setiap nilai. Bentuk, tipe, atau peringkat yang memungkinkan harus ditentukan dalam deskripsi. Lihat detail dokumentasi.
- Untuk meningkatkan kegunaan, sertakan contoh penggunaan dengan input / output dari operasi di bagian Contoh.
- Hindari penggunaan
tf.Tensor.eval
atautf.Session.run
secara eksplisit. Misalnya, untuk menulis logika yang bergantung pada nilai Tensor, gunakan aliran kontrol TensorFlow. Alternatifnya, batasi operasi agar hanya berjalan ketika eager execution diaktifkan (tf.executing_eagerly()
).
Contoh:
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
Pemakaian:
output = my_op(t1, t2, my_param=0.5, other_param=0.6,
output_collections=['MY_OPS'], name='add_t1t2')