
Objek utama yang dimanipulasi dalam Tensorflow adalah tensor. Apa tensor itu, tensor apa, sifat apa yang mereka miliki dan bagaimana cara memanipulasinya, baca panduan terjemahan dari tensorflow.org.
TensorFlow, seperti namanya, adalah platform untuk mendefinisikan dan melakukan perhitungan menggunakan tensor. Tensor adalah generalisasi vektor dan matriks ke dimensi yang lebih tinggi. Di dalam TensorFlow, tensor direpresentasikan sebagai array n-dimensi dari tipe data dasar.
Saat menulis program TensorFlow, objek utama yang Anda manipulasi dan lewati adalah tf.Tensor
. Program TensorFlow bekerja dengan terlebih dahulu membuat grafik objek tf.Tensor
dan menjelaskan secara rinci bagaimana setiap tensor dihitung berdasarkan tensor lain yang tersedia, dan kemudian menjalankan bagian-bagian dari grafik ini untuk mendapatkan hasil perhitungan.
tf.Tensor
memiliki opsi berikut:
- tipe data (
float32
, int32
, atau string
, misalnya) - ukuran (bentuk)
Semua elemen tensor memiliki tipe data yang sama, dan selalu diketahui. Dimensi (jumlah pengukuran dan ukuran setiap pengukuran) hanya dapat diketahui sebagian. Hasil dari sebagian besar operasi adalah tensor dengan ukuran yang diketahui, jika dimensi pada input juga diketahui sepenuhnya, tetapi dalam beberapa kasus dimungkinkan untuk mengetahui dimensi tensor hanya selama eksekusi grafik.
Jenis utama tensor adalah sebagai berikut:
tf.Variable
tf.constant
tf.placeholder
tf.SparseTensor
Dengan pengecualian tf.Variable
. tf.Variable
, nilai tensor tidak berubah, mis. dalam konteks satu eksekusi, tensor hanya dapat memiliki satu nilai. Namun, menghitung tensor yang sama dua kali dapat menghasilkan nilai yang berbeda; misalnya, tensor yang sama mungkin merupakan hasil pembacaan data dari disk, atau menghasilkan angka acak.
Nilai
Pangkat objek tf.Tensor
adalah jumlah dimensinya. Sinonim dari peringkat adalah urutan , derajat , dimensi . Perhatikan bahwa peringkat dalam TensorFlow tidak sama dengan peringkat matriks dalam matematika. Seperti yang ditunjukkan tabel berikut, setiap peringkat di Tensorflow sesuai dengan beberapa entitas matematika:
Peringkat 0
Cuplikan berikut menunjukkan pembuatan beberapa variabel dari peringkat 0:
mammal = tf.Variable("Elephant", tf.string) ignition = tf.Variable(451, tf.int16) floating = tf.Variable(3.14159265359, tf.float64) its_complicated = tf.Variable(12.3 - 4.85j, tf.complex64)
Catatan: Sebuah string dianggap sebagai objek tunggal di TensorFlow, bukan urutan karakter. Dimungkinkan untuk memiliki string skalar, vektor baris, dll.
Peringkat 1
Untuk membuat objek tf.Tensor
peringkat 1, Anda dapat melewati daftar elemen sebagai nilai awal. Sebagai contoh:
mystr = tf.Variable(["Hello"], tf.string) cool_numbers = tf.Variable([3.14159, 2.71828], tf.float32) first_primes = tf.Variable([2, 3, 5, 7, 11], tf.int32) its_very_complicated = tf.Variable([12.3 - 4.85j, 7.5 - 6.23j], tf.complex64)
Peringkat lebih tinggi
Peringkat 2 dari objek tf.Tensor
terdiri dari setidaknya satu baris dan satu kolom:
mymat = tf.Variable([[7],[11]], tf.int16) myxor = tf.Variable([[False, True],[True, False]], tf.bool) linear_squares = tf.Variable([[4], [9], [16], [25]], tf.int32) squarish_squares = tf.Variable([ [4, 9], [16, 25] ], tf.int32) rank_of_squares = tf.rank(squarish_squares) mymatC = tf.Variable([[7],[11]], tf.int32)
Tensor peringkat yang lebih tinggi, juga terdiri dari array n-dimensi. Misalnya, saat memproses gambar, banyak tensor peringkat 4 digunakan, dengan dimensi yang sesuai dengan nomor contoh dalam paket, tinggi gambar, lebar gambar, dan saluran warna.
my_image = tf.zeros([10, 299, 299, 3])
Mendapatkan tf.Tensor
objek tf.Tensor
Untuk menentukan peringkat objek tf.Tensor
, panggil metode tf.rank
. Misalnya, metode berikut secara program menentukan peringkat tf.Tensor
ditentukan di atas:
r = tf.rank(my_image)
Tautan ke irisan tf.Tensor
Karena tf.Tensor
adalah array sel n-dimensi, untuk mengakses satu sel di tf.Tensor
Anda perlu menentukan n indeks.
Untuk tensor peringkat 0 (skalar), indeks tidak diperlukan, karena ini sudah hanya angka.
Untuk tensor peringkat 1 (vektor), melewati satu indeks akan memberi Anda akses ke nomor:
my_scalar = my_vector[2]
Perhatikan bahwa indeks yang diteruskan ke []
itu sendiri dapat berupa tf.Tensor
skalar jika Anda ingin secara dinamis memilih elemen dari vektor.
Untuk tensor peringkat 2 atau lebih tinggi, situasinya lebih menarik. Untuk tf.Tensor
peringkat 2, melewati dua angka kembali seperti yang diharapkan oleh skalar:
my_scalar = my_matrix[1, 2]
Melewati angka tunggal, bagaimanapun, mengembalikan subvektor dari matriks sebagai berikut:
my_row_vector = my_matrix[2] my_column_vector = my_matrix[:, 3]
Notasi :
dalam sintaksis, alokasi subarray dalam python digunakan sebagai "biarkan dimensi ini sendirian." Ini berguna dalam tensor peringkat tinggi, karena memungkinkan akses ke subvektor, submatrices, dan bahkan subtensor lainnya.
Dimensi
Dimensi tensor adalah jumlah elemen di setiap dimensi. Dokumentasi TensorFlow menggunakan tiga konvensi untuk menggambarkan dimensi tensor: pangkat, dimensi, dan jumlah dimensi. Tabel berikut menunjukkan bagaimana mereka saling berhubungan:
Ukuran dapat direpresentasikan sebagai daftar Python / tupel bilangan bulat, atau menggunakan
tf.TensorShape
.
Mendapatkan ukuran objek tf.Tensor
Ada dua cara untuk mendapatkan dimensi tf.Tensor
. tf.Tensor
. Saat membuat grafik, sering kali berguna untuk bertanya apa yang sudah diketahui tentang ukuran tensor. Ini dapat dilakukan dengan membaca properti shape
objek tf.Tensor
. Metode ini mengembalikan objek TensorShape
, yang merupakan cara yang nyaman.
representasi dari ukuran yang didefinisikan sebagian (karena saat membuat grafik, tidak semua ukuran dapat diketahui sepenuhnya).
Anda juga bisa mendapatkan tf.Tensor
yang mewakili dimensi tf.Tensor
lain yang sepenuhnya ditentukan saat runtime. Ini dilakukan dengan tf.shape
operasi tf.shape
. Dengan cara ini, Anda dapat membuat grafik yang memanipulasi ukuran tensor dengan membangun tensor lain tergantung pada ukuran dinamis dari input tf.Tensor
.
Misalnya, Anda bisa membuat vektor nol dengan ukuran yang sama dengan jumlah kolom dari matriks yang diberikan:
zeros = tf.zeros(my_matrix.shape[1])
Ubah ukuran tf.Tensor
Jumlah elemen tensor adalah produk dari semua pengukurannya. Jumlah elemen skalar selalu 1
. Karena banyak ukuran berbeda dapat memberikan jumlah elemen yang sama, sering kali nyaman untuk mengubah ukuran tf.Tensor
Tanpa mengubah elemennya. Ini dapat dilakukan dengan menggunakan tf.reshape
.
Contoh berikut menunjukkan cara mengubah ukuran tensor:
rank_three_tensor = tf.ones([3, 4, 5]) matrix = tf.reshape(rank_three_tensor, [6, 10])
Tipe data
Selain dimensi, tensor memiliki tipe data. tf.Tensor
tertentu tidak dapat memiliki lebih dari satu tipe data. Namun, dimungkinkan untuk membuat serial struktur data yang berubah-ubah menjadi string
dan menyimpannya dalam tf.Tensor
.
Anda dapat mengonversi tf.Tensor
dari satu tipe data ke yang lain menggunakan tf.cast
:
Untuk melihat tf.Tensor
data tf.Tensor
, gunakan properti Tensor.dtype
.
Saat membuat tf.Tensor
dari objek python, Anda dapat secara opsional menentukan tipe data. Jika tidak, TensorFlow akan memilih tipe data yang dapat mewakili data Anda. TensorFlow mengonversi bilangan bulat Python ke tf.int32
, dan angka floating-point menjadi tf.float32
. Dalam kasus lain, TensorFlow menggunakan aturan yang sama seperti numpy saat mengubah array.
Evaluasi tensor
Setelah grafik komputasi dibuat, Anda dapat menjalankan perhitungan itu
akan menghasilkan tf.Tensor
spesifik dan mengekstraksi nilai yang diberikan padanya. Ini sering berguna untuk debugging, serta untuk bekerja sebagian besar TensorFlow.
Cara termudah untuk mengevaluasi Tensor adalah dengan menggunakan metode Tensor.eval
. Sebagai contoh:
constant = tf.constant([1, 2, 3]) tensor = constant * constant print(tensor.eval())
Metode eval
hanya bekerja ketika tf.Session
default tf.Session
. Tensor.eval
mengembalikan array numpy dengan konten yang sama dengan tensor.
Kadang tidak mungkin mengevaluasi tf.Tensor
tanpa konteks, karena nilainya mungkin bergantung pada informasi dinamis yang tidak tersedia. Misalnya, tensor dependen placeholder
tidak dapat dievaluasi tanpa memberikan nilai bagi placeholder
.
p = tf.placeholder(tf.float32) t = p + 1.0 t.eval()
Harap dicatat bahwa Anda dapat menggunakan tf.Tensor
apa pun, bukan hanya pengganti.
Desain model lain dapat membuat tf.Tensor
lebih sulit untuk dievaluasi. TensorFlow tidak dapat langsung mengevaluasi tf.Tensor
mendefinisikan fungsi di dalam atau dalam konstruksi aliran kontrol. Jika tf.Tensor
tergantung pada nilai dari antrian, skor tf.Tensor
hanya akan berfungsi ketika sesuatu ditempatkan dalam antrian; jika tidak, estimasi tensor akan membeku. Ketika bekerja dengan antrian, ingatlah untuk menelepon tf.train.start_queue_runners
sebelum mengevaluasi tf.Tensor
.
Setelah verifikasi, terjemahan juga akan muncul di Tensorflow.org. Jika Anda ingin berpartisipasi dalam terjemahan dokumentasi situs web Tensorflow.org ke dalam bahasa Rusia, silakan hubungi secara pribadi atau komentar. Setiap koreksi atau komentar sangat dihargai.