Panduan gaya kode TensorFlow

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

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 default None .
  • 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 objek Tensor 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 atau tf.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')