Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 1906|Atbildi: 1

[Padomi] [Tulkojums]. NumSharp masīva sadalīšanas funkcija NET/C#

[Kopēt saiti]
Publicēts 2025-1-10 12:17:13 | | | |

Pateicoties NumSharp lieliskajām jaunajām masīvu sadalīšanas iespējām, .NET kopiena ir soli tuvāk jaudīgai atvērtā koda mašīnmācīšanās platformai.

Python ir mašīnmācīšanās valoda daļēji tāpēc, ka tai ir lieliskas bibliotēkas, piemēram, NumPy un TensorFlow. Tomēr C# izstrādātājiem ir arī liela vajadzība pēc jaudīgām atvērtā koda bibliotēkām mašīnmācībai un datu zinātnei. NumSharp, SciSharp STACK organizācijas NumPy C# ports, nesen ir spēris lielu soli uz priekšu, pilnībā ieviešot sadalīšanas iespējas, ļaujot izveidot patvaļīgas N-dimensiju masīvu apakškopas kā efektīvus neapstrādātu datu skatus. Tas padara to par noderīgu rīku C# izmantošanai mašīnmācīšanās kopā ar TensorFlow.NET.


Kas ir lielais darījums?

Ja neesat izmantojis NumPy, jūs, iespējams, nezināt, cik lieliska ir sagriešana. Python masīvi ļauj atgriezt masīva šķēli, indeksējot elementu sēriju šādi: a[start:stop:step]. Bet tikai ar NumPy sarežģīto masīvu ieviešanu sadalīšana kļūst par patiesi spēcīgu datu manipulācijas paņēmienu, bez kura mašīnmācīšanās vai datu zinātne nebūtu iedomājama.

Par laimi, tiem, kas nevar vai nevēlas pāriet uz Python mašīnmācībai (ko es arī izveidoju), NumSharp ienes šo iespēju .NET pasaulē. Kā viens no NumSharp izstrādātājiem esmu iepazīstinājis jūs ar dažiem svarīgiem sadalīšanas lietošanas gadījumiem ar koda fragmentu paraugiem C#. Ņemiet vērā, ka indeksēšanu C# nevar veikt tāpat kā Python valodas sintakses atšķirību dēļ. Tomēr mēs nolēmām saglabāt Python sintaksi šķēļu definīcijām, tāpēc mēs izmantojām virknes, lai indeksētu šķēles C#. Apskatiet šo piemēru, lai redzētu, cik tuvu NumSharp ir NumPy.




Izgrieziet kolonnu no matricas Python / NumPy

Rakstot C# ar NumSharp, kods ir gandrīz identisks. Ņemiet vērā, ka šķēles tiek indeksētas nedaudz atšķirīgi, izmantojot virknes kā indeksētāja parametrus.




Kolonnu izgriešana no matricas programmā C#/NumSharp

Kā redzat, NumSharp komanda ir ieguldījusi daudz pūļu, lai padarītu kodu pēc iespējas līdzīgāku Python. Tas ir ļoti svarīgi, jo šādā veidā esošo Python kodu, kas balstās uz NumPy, tagad var viegli pārnest uz C#.


Lietošanas piemērs: izmantojiet vairākus vienu un to pašu datu skatus



Iespēja nodot tikai lokālas pamatā esošo datu daļas (t.i., nelielus lielu attēlu gabalus) funkcijās bez kopēšanas ir kritiski svarīga izpildlaika veiktspējai, īpaši lielām datu kopām. Šķēles tiek indeksētas, izmantojot vietējās koordinātas, tāpēc algoritmam nav jāzina jūsu datu globālā struktūra, efektīvi vienkāršojot jūsu dzīvi un nodrošinot maksimālu veiktspēju, jo tiek novērsta nevajadzīga dublēšanās.


Lietošanas gadījumi: reti skati un rekursīva sadalīšana



Retu masīva skatu var izveidot, norādot darbības, kas pārsniedz šķēles diapazona sākumu un beigas. Cik es zinu, pat C # 8.0 ar jauno masīva šķēles sintaksi to nevar izdarīt. Šī funkcija kļūst ļoti svarīga, strādājot ar savstarpēji saistītiem datiem. Varat izstrādāt algoritmu tā, lai apstrādātu nepārtrauktus datus un nodrošinātu to ar retiem fragmentiem, kas atdarina nepārtrauktus datu avotus, samazinot algoritma sarežģītību.


Šķēlēs var sagriezt tālāk, kas ir ļoti svarīga funkcija, ja strādājat ar liela izmēra datiem. Tas arī palīdz samazināt algoritma sarežģītību, jo jūs varat samazināt datu dimensiju, rekursīvi sagriežot.


Lietošanas gadījums: efektīva augstas dimensijas datu apstrāde



Ja jums ir jādomā par datu masīvu kā apjomu un jāstrādā ar tā daļām, neveicot neticamus koordinātu transformācijas aprēķinus, tad .reshape() ir jūsu draugs.
Visi masīvi, kas izveidoti ar sadalīšanas operācijām vai sadalīšanas operācijām, ir .reshape() tikai sākotnējo datu skats. Atkārtojot, lasot vai rakstot elementus skatā, jūs piekļūstat neapstrādāto datu masīvam. NumSharp pārredzami veic atbilstošās indeksa transformācijas, lai jūs varētu indeksēt šķēles ar relatīvām koordinātām.


Lietošanas gadījums: apgrieziet elementu secību bez papildu maksas

Šķēles, kas izmanto negatīvus soļus, faktiski maina šķēļu secību. Tās priekšrocība ir tā, ka tam nav nepieciešams kopēt vai uzskaitīt datus, lai to izdarītu, tāpat kā IEnumerable.Reverse(). Atšķirība ir tāda, ka skats (operācijas rezultāts a["::-1"]) parāda datus apgrieztā secībā, un jūs varat indeksēt šo apgriezto secību, to neuzskaitot.


Lietošanas gadījums: samaziniet sarežģītību, samazinot dimensijas

Strādājot ar augstas dimensijas datiem, arī šo datu algoritmi var kļūt ļoti sarežģīti. Lietošanā var izvadīt jebkuru lielu izmēru tilpumu. Kad ToString() NumSharp metode NDArray, es pamanīju, cik vienkāršs un skaists algoritms ir kļuvis, sistemātiski un rekursīvi sagriežot ND apjomus (N-1) D sējumos utt.

Šī dalīšanas un iekarošanas pieeja atgriež zemu dimensiju apakšapjomus, sagriežot diapazona simbolus, izmantojot NumSharp indeksa simbolus.

Diapazona simbols pret indeksa simbolu

Diapazona simbols ["start:stop:step"] ļauj piekļūt noteikta apjoma apakšdiapazonam ar tādu pašu dimensiju. Tātad, pat ja jūs izgriezāt tikai vienu 2D matricas kolonnu, jūs joprojām saņemsiet 2D matricu ar tikai vienu kolonnu. Šeit ir īss C# koda gabals, kas to parāda:



Kolonnas sadalīšana, izmantojot diapazona simbolu

Indeksa simbols norāda (N-1) dimensiju šķēli norādītajā N dimensiju vecākapjoma vietā. Tātad, izgriežot kolonnu no 2D matricas, izmantojot indeksa simbolus, tiek iegūts 1D vektors:


Kolonnu sadalīšana, izmantojot indeksa simbolus

Ja jūs neesat redzējis atšķirību acumirklī, šeit ir divas šķēles definīcijas iepriekš blakus, ange[":,2:3"] vs index[":,2"], kas lielā mērā ietekmē rezultātus. Pilna atsauce uz jauno šķēles simbolu ir atrodama NumSharp wiki.


Piezīme: <T>ArraySlice

Īstenojot N-dimensiju skatu sadalīšanu, es secināju, ka tas varētu būt interesants daudzām citām .NET jomām, tāpēc es to sadalīju savā atsevišķā bibliotēkā ar nosaukumu SliceAndDice. Tas ir viegls iesaiņojums jebkuras C# datu struktūras (piemēram, vai) ArraySlice indeksēšanai <T>un ļauj izmantot tos pašus pārveidošanas, sadalīšanas un skatīšanas mehānismus bez visiem pārējiem smagajiem skaitliskajiem aprēķiniem. Lai sasniegtu izcilas sadalīšanas iespējas, ir nepieciešami tikai daži simti koda rindiņu! T[]IList<T>


aptverošs

NumSharp nesen tika piešķirts tāds pats sadalīšanas un skatīšanās mehānisms, kas neapšaubāmi padara NumPy par vienu no svarīgākajām bibliotēkām Python mašīnmācīšanās ekosistēmā. SciSharp STACK ir atvērtā koda organizācija, kurā ir neliels skaits kvalificētu izstrādātāju, kuri ir ļoti smagi strādājuši, lai ieviestu tādu pašu funkcionalitāti .NET pasaulē. NumSharp jaunākie uzlabojumi ir svarīgs stūrakmens tā sasniegšanai.


Sākotnējā:Hipersaites pieteikšanās ir redzama.




Iepriekšējo:Git lfs lielu failu versiju izveides kontrole
Nākamo:Rocky Linux 9 pamošanās uz LAN
 Saimnieks| Publicēts 2025-1-10 12:18:43 |
NumSharp ir piemērots dažādiem scenārijiem, tostarp izglītības pētījumiem, finanšu analīzei, attēlu apstrādei, dziļai mācīšanai un daudz ko citu.

NumSharp kā daļa no SciSharp.org ir integrēts plašā klāstā NET zinātniskās skaitļošanas ekosistēma. Šeit ir daži saistītie un ļoti papildinoši priekšmeti, kurus ieteicams izpētīt tālāk:

ML.NET: Microsoft推出的开源机器学习框架, 用于训练和部署自定义的机器学习模型。
SciSharp.TensorFlow.Redist: 为.NET环境提供了TensorFlow的封装, 使开发者能够在.NET应用程序中使用TensorFlow执行深度学习任务。
MathNet.Numerics: 提供了一系列数学方法和统计计算工具, 与NumSharp相辅相成。

Visbeidzot, NumSharp ir ne tikai atsevišķa jaudīga bibliotēka, bet arī savienojums. Galvenais mezgls .NET zinātniskās skaitļošanas kopienā.

NumSharp projekta adrese:https://github.com/SciSharp/NumSharp
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com