Kontraksi tensor menurut konvensi penjumlahan Einstein.
Menerapkan kontraksi dan pengurangan Tensor umum. Setiap Tensor masukan harus memiliki subskrip masukan terkait yang muncul di sisi kiri persamaan yang dipisahkan koma. Ruas kanan persamaan terdiri dari subskrip keluaran. Subskrip masukan dan subskrip keluaran harus terdiri dari nol atau lebih label sumbu bernama dan paling banyak satu elipsis (`...`).
Label sumbu yang diberi nama dapat berupa karakter apa pun selain karakter yang mempunyai arti khusus, yaitu `,.->`. Perilaku Op ini tidak terdefinisi jika menerima persamaan dengan format yang buruk; karena validasi dilakukan pada waktu pembuatan grafik, kami menghilangkan pemeriksaan validasi format pada waktu proses.
Catatan: Operasi ini tidak dimaksudkan untuk dilakukan oleh pengguna; sebaliknya pengguna harus menghubungi tf.einsum
secara langsung. Ini adalah Op tersembunyi yang digunakan oleh tf.einsum
.
Operasi diterapkan pada input sesuai dengan aturan berikut:
(a) Diagonal Umum: Untuk dimensi masukan yang berhubungan dengan label sumbu yang muncul lebih dari satu kali dalam subskrip masukan yang sama, kita ambil diagonal umum (`dimensi-`k`). Misalnya, dalam persamaan `iii->i` dengan bentuk masukan `[3, 3, 3]`, diagonal umum akan terdiri dari elemen `3` pada indeks `(0, 0, 0)`, `(1 , 1, 1)` dan `(2, 2, 2)` untuk membuat Tensor berbentuk `[3]`.
(b) Reduksi: Sumbu yang sesuai dengan label yang hanya muncul di satu subskrip masukan tetapi tidak di subskrip keluaran dijumlahkan sebelum kontraksi Tensor. Misalnya, pada persamaan `ab,bc->b`, label sumbu `a` dan `c` merupakan label sumbu reduksi.
(c) Dimensi Batch: Sumbu yang sesuai dengan label yang muncul di setiap subskrip masukan dan juga di subskrip keluaran membentuk dimensi batch dalam kontraksi Tensor. Label sumbu tanpa nama yang sesuai dengan elipsis (`...`) juga sesuai dengan dimensi batch. Misalnya, untuk persamaan yang menunjukkan perkalian matriks batch, `bij,bjk->bik`, label sumbu `b` berhubungan dengan dimensi batch.
(d) Kontraksi: Dalam kasus einsum biner, sumbu-sumbu yang berkaitan dengan label yang muncul pada dua masukan berbeda (dan bukan pada keluaran) dikontrak satu sama lain. Mengingat kembali persamaan perkalian matriks batch (`bij,bjk->bik`), label sumbu yang dikontrak adalah `j`.
(e) Perluas Diagonal: Jika subskrip keluaran berisi label sumbu yang berulang (eksplisit), operasi kebalikan dari (a) diterapkan. Misalnya, dalam persamaan `i->iii`, dan bentuk masukan `[3]`, keluaran dari bentuk `[3, 3, 3]` semuanya nol, kecuali untuk diagonal (umum) yang diisi dengan nilai dari masukan. Catatan: Operasi ini tidak didukung oleh `np.einsum` atau tf.einsum
; itu disediakan untuk memungkinkan komputasi gradien simbolik tf.einsum
.
Subskrip keluaran hanya boleh berisi label yang muncul di setidaknya salah satu subskrip masukan. Selain itu, semua dimensi yang dipetakan ke label sumbu yang sama harus sama.
Subskrip masukan dan keluaran mana pun boleh berisi paling banyak satu elipsis (`...`). Elipsis ini dipetakan berdasarkan dimensi yang tidak sesuai dengan label sumbu mana pun. Jika dua input berisi elipsis, maka input tersebut disiarkan sesuai dengan [aturan] penyiaran NumPy standar (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html).
Dimensi yang disiarkan ditempatkan di lokasi elipsis yang sesuai di subskrip keluaran. Jika dimensi yang disiarkan tidak kosong dan subskrip keluaran tidak berisi elipsis, maka kesalahan InvalidArgument akan muncul.
Konstanta
Rangkaian | OP_NAME | Nama operasi ini dikenal dengan mesin inti TensorFlow |
Metode Publik
Keluaran <T> | sebagai Keluaran () Mengembalikan pegangan simbolis tensor. |
statis <T memperluas TType > Einsum <T> | |
Keluaran <T> | keluaran () Tensor Keluaran dengan bentuk bergantung pada `persamaan`. |
Metode Warisan
Konstanta
String akhir statis publik OP_NAME
Nama operasi ini dikenal dengan mesin inti TensorFlow
Metode Publik
Keluaran publik <T> sebagai Keluaran ()
Mengembalikan pegangan simbolis tensor.
Masukan ke operasi TensorFlow adalah keluaran dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.
public static Einsum <T> buat ( Lingkup lingkup, input Iterable< Operand <T>>, persamaan String)
Metode pabrik untuk membuat kelas yang membungkus operasi Einsum baru.
Parameter
cakupan | ruang lingkup saat ini |
---|---|
masukan | Daftar 1 atau 2 Tensor. |
persamaan | String yang menjelaskan operasi Penjumlahan Einstein; dalam format np.einsum. |
Kembali
- contoh baru dari Einsum