Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mulai dari .NET 11, operasi tensor menggunakan aturan perataan bentuk yang konsisten. Tensor dan span kosong peringkat-nol default memiliki bentuk [0] yang efektif selama komputasi, dan operasi dapat mengabaikan dimensi singleton terkemuka yang berlebihan saat menyelaraskan bentuk.
Perubahan dikirimkan dalam paket System.Numerics.Tensors , termasuk kerangka kerja target yang didukung. Memperbarui paket dapat memengaruhi aplikasi yang menargetkan versi .NET sebelumnya.
Versi yang diperkenalkan
.NET 11
Perilaku sebelumnya
Operasi tensor menangani bentuk secara tidak konsisten. Beberapa operasi memerlukan kecocokan bentuk yang tepat, sementara yang lain menyelaraskan dimensi secara berbeda. Akibatnya, bentuk yang setara dengan dimensi singleton terkemuka yang berlebihan, seperti [1, 1, 3] dan [3], dapat ditolak atau ditafsirkan secara berbeda di seluruh operasi.
Tensor dan span kosong default mempertahankan metadata rank-zero, tetapi operasi tidak secara konsisten memperlakukannya sebagai vektor dengan bentuk efektif [0]. Operasi Stack dan concatenate juga dapat menginterpretasikan sumbu secara berbeda berdasarkan rank input.
Beberapa operasi juga mempersempit jumlah elemen logis atau offset ke int, yang mencegah span tensor yang didukung oleh native dengan lebih dari int.MaxValue elemen dilalui dengan benar. Operasi EqualsAny, GreaterThanOrEqualAny, GreaterThanAny, LessThanAny, dan LessThanOrEqualAny tidak secara konsisten memeriksa panjang input logis penuh, termasuk untuk input kosong.
Perilaku baru
Operasi tensor sekarang menggunakan aturan perataan bentuk bersama:
- Tensor kosong peringkat-nol default dan rentang memiliki bentuk efektif
[0]untuk komputasi.Rank,Lengths, danStridesyang tersimpan tidak berubah, dan bentuk kosong yang diberi peringkat secara eksplisit mempertahankan dimensinya. - Operasi dapat menambahkan atau menghapus dimensi singleton di awal yang berlebihan saat menyelaraskan bentuk. Misalnya,
[1, 1, 3]selaras dengan[3], tetapi[2, 1]dan[1, 2]tetap berbeda. Dimensi dengan panjang nol dan dimensi singleton non-terkemuka tetap signifikan. - Kesetaraan bentuk hanya mengabaikan dimensi singleton terkemuka yang berlebihan. Ini tidak mengirimkan dimensi lain.
- Operasi stack dan concatenate menginterpretasikan sumbu dengan menggunakan bentuk efektif input pertama. Input dan tujuan lain selaras dengan bentuk tersebut.
- Nilai kosong default dapat diteruskan ke
[2, 0]. Operasi biner antara bentuk efektif[0]dan[0, 2]menolak dimensi akhir yang tidak kompatibel. - Sumber dan tujuan mempertahankan metadata bentuk yang diminta saat operasi menyelaraskannya.
Span tensor yang didukung native kini dapat ditelusuri dengan panjang dan offset berukuran native, termasuk span dengan lebih dari int.MaxValue elemen logis. Tampilan kosong juga mempertahankan origin penyimpanan dalam sumbernya. Operasi EqualsAny, GreaterThanOrEqualAny, GreaterThanAny, LessThanAny, dan LessThanOrEqualAny sekarang memeriksa rentang input logis lengkap dan menangani input kosong dengan benar.
Jenis perubahan yang memutus kompatibilitas
Ini adalah perubahan perilaku.
Alasan perubahan
Aturan bentuk yang konsisten membuat operasi tensor lebih dapat diprediksi dan mempertahankan dimensi yang diminta secara eksplisit sambil memungkinkan bentuk yang setara untuk bekerja sama. Penelusuran berukuran native juga memungkinkan operasi mencakup seluruh rentang logis span yang didukung oleh penyimpanan yang lebih besar.
Untuk informasi selengkapnya, lihat dotnet/runtime#135060.
Tindakan yang disarankan
Tinjau kode yang bergantung pada operasi tensor yang menerima atau menolak kombinasi bentuk tertentu. Anggap nilai kosong peringkat-nol default dianggap memiliki bentuk yang efektif dari [0], dan agar dimensi singleton terkemuka yang berlebihan diabaikan selama perataan dan perbandingan bentuk. Dimensi panjang nol eksplisit dan dimensi singleton non-terkemuka tetap signifikan.
Untuk operasi tumpukan dan gabungkan, interpretasikan sumbu relatif terhadap bentuk efektif input pertama. Jika kode Anda memerlukan peringkat atau panjang yang disimpan dengan tepat, validasi metadata tersebut sebelum memanggil operasi. Metadata tersimpan untuk nilai kosong default tidak berubah.
API yang Terpengaruh
- Tensor.Broadcast, Tensor.BroadcastTo, dan Tensor.TryBroadcastTo
- Operasi elementwise dan penyalinan pada Tensor yang menyelaraskan bentuk tensor atau menulis ke tujuan yang disediakan pemanggil
- Tensor.Concatenate, Tensor.ConcatenateOnDimension, Tensor.Stack, dan Tensor.StackAlongDimension
- Tensor.Reshape, Tensor.Split, Tensor.SqueezeDimension, Tensor.Unsqueeze, Tensor.PermuteDimensions, Tensor.SetSlice, Tensor.SequenceEqual, Tensor.ResizeTo, Tensor.Reverse, dan Tensor.ReverseDimension
- Tensor.EqualsAny, , Tensor.GreaterThanAnyTensor.GreaterThanOrEqualAny, Tensor.LessThanAny, danTensor.LessThanOrEqualAny
- Tensor.IndexOfMax, Tensor.IndexOfMaxMagnitude, Tensor.IndexOfMin, dan Tensor.IndexOfMinMagnitude