| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614276152761627617276182761927620276212762227623276242762527626276272762827629276302763127632276332763427635276362763727638276392764027641276422764327644276452764627647276482764927650276512765227653276542765527656276572765827659276602766127662276632766427665276662766727668276692767027671276722767327674276752767627677276782767927680276812768227683276842768527686276872768827689276902769127692276932769427695276962769727698276992770027701277022770327704277052770627707277082770927710277112771227713277142771527716277172771827719277202772127722277232772427725277262772727728277292773027731277322773327734277352773627737277382773927740277412774227743277442774527746277472774827749277502775127752277532775427755277562775727758277592776027761277622776327764277652776627767277682776927770277712777227773277742777527776277772777827779277802778127782277832778427785277862778727788277892779027791277922779327794277952779627797277982779927800278012780227803278042780527806278072780827809278102781127812278132781427815278162781727818278192782027821278222782327824278252782627827278282782927830278312783227833278342783527836278372783827839278402784127842278432784427845278462784727848278492785027851278522785327854278552785627857278582785927860278612786227863278642786527866278672786827869278702787127872278732787427875278762787727878278792788027881278822788327884278852788627887278882788927890278912789227893278942789527896278972789827899279002790127902279032790427905279062790727908279092791027911279122791327914279152791627917279182791927920279212792227923279242792527926279272792827929279302793127932279332793427935279362793727938279392794027941279422794327944279452794627947279482794927950279512795227953279542795527956279572795827959279602796127962279632796427965279662796727968279692797027971279722797327974279752797627977279782797927980279812798227983279842798527986279872798827989279902799127992279932799427995279962799727998279992800028001280022800328004280052800628007280082800928010280112801228013280142801528016280172801828019280202802128022280232802428025280262802728028280292803028031280322803328034280352803628037280382803928040280412804228043280442804528046280472804828049280502805128052280532805428055280562805728058280592806028061280622806328064280652806628067280682806928070280712807228073280742807528076280772807828079280802808128082280832808428085280862808728088280892809028091280922809328094280952809628097280982809928100281012810228103281042810528106281072810828109281102811128112281132811428115281162811728118281192812028121281222812328124281252812628127281282812928130281312813228133281342813528136281372813828139281402814128142281432814428145281462814728148281492815028151281522815328154281552815628157281582815928160281612816228163281642816528166281672816828169281702817128172281732817428175281762817728178281792818028181281822818328184281852818628187281882818928190281912819228193281942819528196281972819828199282002820128202282032820428205282062820728208282092821028211282122821328214282152821628217282182821928220282212822228223282242822528226282272822828229282302823128232282332823428235282362823728238282392824028241282422824328244282452824628247282482824928250282512825228253282542825528256282572825828259282602826128262282632826428265282662826728268282692827028271282722827328274282752827628277282782827928280282812828228283282842828528286282872828828289282902829128292282932829428295282962829728298282992830028301283022830328304283052830628307283082830928310283112831228313283142831528316283172831828319283202832128322283232832428325283262832728328283292833028331283322833328334283352833628337283382833928340283412834228343283442834528346283472834828349283502835128352283532835428355283562835728358283592836028361283622836328364283652836628367283682836928370283712837228373283742837528376283772837828379283802838128382283832838428385283862838728388283892839028391283922839328394283952839628397283982839928400284012840228403284042840528406284072840828409284102841128412284132841428415284162841728418284192842028421284222842328424284252842628427284282842928430284312843228433284342843528436284372843828439284402844128442284432844428445284462844728448284492845028451284522845328454284552845628457284582845928460284612846228463284642846528466284672846828469284702847128472284732847428475284762847728478284792848028481284822848328484284852848628487284882848928490284912849228493284942849528496284972849828499285002850128502285032850428505285062850728508285092851028511285122851328514285152851628517285182851928520285212852228523285242852528526285272852828529285302853128532285332853428535285362853728538285392854028541285422854328544285452854628547285482854928550285512855228553285542855528556285572855828559285602856128562285632856428565285662856728568285692857028571285722857328574285752857628577285782857928580285812858228583285842858528586285872858828589285902859128592285932859428595285962859728598285992860028601286022860328604286052860628607286082860928610286112861228613286142861528616286172861828619286202862128622286232862428625286262862728628286292863028631286322863328634286352863628637286382863928640286412864228643286442864528646286472864828649286502865128652286532865428655286562865728658286592866028661286622866328664286652866628667286682866928670286712867228673286742867528676286772867828679286802868128682286832868428685286862868728688286892869028691286922869328694286952869628697286982869928700287012870228703287042870528706287072870828709287102871128712287132871428715287162871728718287192872028721287222872328724287252872628727287282872928730287312873228733287342873528736287372873828739287402874128742287432874428745287462874728748287492875028751287522875328754287552875628757287582875928760287612876228763287642876528766287672876828769287702877128772287732877428775287762877728778287792878028781287822878328784287852878628787287882878928790287912879228793287942879528796287972879828799288002880128802288032880428805288062880728808288092881028811288122881328814288152881628817288182881928820288212882228823288242882528826288272882828829288302883128832288332883428835288362883728838288392884028841288422884328844288452884628847288482884928850288512885228853288542885528856288572885828859288602886128862288632886428865288662886728868288692887028871288722887328874288752887628877288782887928880288812888228883288842888528886288872888828889288902889128892288932889428895288962889728898288992890028901289022890328904289052890628907289082890928910289112891228913289142891528916289172891828919289202892128922289232892428925289262892728928289292893028931289322893328934289352893628937289382893928940289412894228943289442894528946289472894828949289502895128952289532895428955289562895728958289592896028961289622896328964289652896628967289682896928970289712897228973289742897528976289772897828979289802898128982289832898428985289862898728988289892899028991289922899328994289952899628997289982899929000290012900229003290042900529006290072900829009290102901129012290132901429015290162901729018290192902029021290222902329024290252902629027290282902929030290312903229033290342903529036290372903829039290402904129042290432904429045290462904729048290492905029051290522905329054290552905629057290582905929060290612906229063290642906529066290672906829069290702907129072290732907429075290762907729078290792908029081290822908329084290852908629087290882908929090290912909229093290942909529096290972909829099291002910129102291032910429105291062910729108291092911029111291122911329114291152911629117291182911929120291212912229123291242912529126291272912829129291302913129132291332913429135291362913729138291392914029141291422914329144291452914629147291482914929150291512915229153291542915529156291572915829159291602916129162291632916429165291662916729168291692917029171291722917329174291752917629177291782917929180291812918229183291842918529186291872918829189291902919129192291932919429195291962919729198291992920029201292022920329204292052920629207292082920929210292112921229213292142921529216292172921829219292202922129222292232922429225292262922729228292292923029231292322923329234292352923629237292382923929240292412924229243292442924529246292472924829249292502925129252292532925429255292562925729258292592926029261292622926329264292652926629267292682926929270292712927229273292742927529276292772927829279292802928129282292832928429285292862928729288292892929029291292922929329294292952929629297292982929929300293012930229303293042930529306293072930829309293102931129312293132931429315293162931729318293192932029321293222932329324293252932629327293282932929330293312933229333293342933529336293372933829339293402934129342293432934429345293462934729348293492935029351293522935329354293552935629357293582935929360293612936229363293642936529366293672936829369293702937129372293732937429375293762937729378293792938029381293822938329384293852938629387293882938929390293912939229393293942939529396293972939829399294002940129402294032940429405294062940729408294092941029411294122941329414294152941629417294182941929420294212942229423294242942529426294272942829429294302943129432294332943429435294362943729438294392944029441294422944329444294452944629447294482944929450294512945229453294542945529456294572945829459294602946129462294632946429465294662946729468294692947029471294722947329474294752947629477294782947929480294812948229483294842948529486294872948829489294902949129492294932949429495294962949729498294992950029501295022950329504295052950629507295082950929510295112951229513295142951529516295172951829519295202952129522295232952429525295262952729528295292953029531295322953329534295352953629537295382953929540295412954229543295442954529546295472954829549295502955129552295532955429555295562955729558295592956029561295622956329564295652956629567295682956929570295712957229573295742957529576295772957829579295802958129582295832958429585295862958729588295892959029591295922959329594295952959629597295982959929600296012960229603296042960529606296072960829609296102961129612296132961429615296162961729618296192962029621296222962329624296252962629627296282962929630296312963229633296342963529636296372963829639296402964129642296432964429645296462964729648296492965029651296522965329654296552965629657296582965929660296612966229663296642966529666296672966829669296702967129672296732967429675296762967729678296792968029681296822968329684296852968629687296882968929690296912969229693296942969529696296972969829699297002970129702297032970429705297062970729708297092971029711297122971329714297152971629717297182971929720297212972229723297242972529726297272972829729297302973129732297332973429735297362973729738297392974029741297422974329744297452974629747297482974929750297512975229753297542975529756297572975829759297602976129762297632976429765297662976729768297692977029771297722977329774297752977629777297782977929780297812978229783297842978529786297872978829789297902979129792297932979429795297962979729798297992980029801298022980329804298052980629807298082980929810298112981229813298142981529816298172981829819298202982129822298232982429825298262982729828298292983029831298322983329834298352983629837298382983929840298412984229843298442984529846298472984829849298502985129852298532985429855298562985729858298592986029861298622986329864298652986629867298682986929870298712987229873298742987529876298772987829879298802988129882298832988429885298862988729888298892989029891298922989329894298952989629897298982989929900299012990229903299042990529906299072990829909299102991129912299132991429915299162991729918299192992029921299222992329924299252992629927299282992929930299312993229933299342993529936299372993829939299402994129942299432994429945299462994729948299492995029951299522995329954299552995629957299582995929960299612996229963299642996529966299672996829969299702997129972299732997429975299762997729978299792998029981299822998329984299852998629987299882998929990299912999229993299942999529996299972999829999300003000130002300033000430005300063000730008300093001030011300123001330014300153001630017300183001930020300213002230023300243002530026300273002830029300303003130032300333003430035300363003730038300393004030041300423004330044300453004630047300483004930050300513005230053300543005530056300573005830059300603006130062300633006430065300663006730068300693007030071300723007330074300753007630077300783007930080300813008230083300843008530086300873008830089300903009130092300933009430095300963009730098300993010030101301023010330104301053010630107301083010930110301113011230113301143011530116301173011830119301203012130122301233012430125301263012730128301293013030131301323013330134301353013630137301383013930140301413014230143301443014530146301473014830149301503015130152301533015430155301563015730158301593016030161301623016330164301653016630167301683016930170301713017230173301743017530176301773017830179301803018130182301833018430185301863018730188301893019030191301923019330194301953019630197301983019930200302013020230203302043020530206302073020830209302103021130212302133021430215302163021730218302193022030221302223022330224302253022630227302283022930230302313023230233302343023530236302373023830239302403024130242302433024430245302463024730248302493025030251302523025330254302553025630257302583025930260302613026230263302643026530266302673026830269302703027130272302733027430275302763027730278302793028030281302823028330284302853028630287302883028930290302913029230293302943029530296302973029830299303003030130302303033030430305303063030730308303093031030311303123031330314303153031630317303183031930320303213032230323303243032530326303273032830329303303033130332303333033430335303363033730338303393034030341303423034330344303453034630347303483034930350303513035230353303543035530356303573035830359303603036130362303633036430365303663036730368303693037030371303723037330374303753037630377303783037930380303813038230383303843038530386303873038830389303903039130392303933039430395303963039730398303993040030401304023040330404304053040630407304083040930410304113041230413304143041530416304173041830419304203042130422304233042430425304263042730428304293043030431304323043330434304353043630437304383043930440304413044230443304443044530446304473044830449304503045130452304533045430455304563045730458304593046030461304623046330464304653046630467304683046930470304713047230473304743047530476304773047830479304803048130482304833048430485304863048730488304893049030491304923049330494304953049630497304983049930500305013050230503305043050530506305073050830509305103051130512305133051430515305163051730518305193052030521305223052330524305253052630527305283052930530305313053230533305343053530536305373053830539305403054130542305433054430545305463054730548305493055030551305523055330554305553055630557305583055930560305613056230563305643056530566305673056830569305703057130572305733057430575305763057730578305793058030581305823058330584305853058630587305883058930590305913059230593305943059530596305973059830599306003060130602306033060430605306063060730608306093061030611306123061330614306153061630617306183061930620306213062230623306243062530626306273062830629306303063130632306333063430635306363063730638306393064030641306423064330644306453064630647306483064930650306513065230653306543065530656306573065830659306603066130662306633066430665306663066730668306693067030671306723067330674306753067630677306783067930680306813068230683306843068530686306873068830689306903069130692306933069430695306963069730698306993070030701307023070330704307053070630707307083070930710307113071230713307143071530716307173071830719307203072130722307233072430725307263072730728307293073030731307323073330734307353073630737307383073930740307413074230743307443074530746307473074830749307503075130752307533075430755307563075730758307593076030761307623076330764307653076630767307683076930770307713077230773307743077530776307773077830779307803078130782307833078430785307863078730788307893079030791307923079330794307953079630797307983079930800308013080230803308043080530806308073080830809308103081130812308133081430815308163081730818308193082030821308223082330824308253082630827308283082930830308313083230833308343083530836308373083830839308403084130842308433084430845308463084730848308493085030851308523085330854308553085630857308583085930860308613086230863308643086530866308673086830869308703087130872308733087430875308763087730878308793088030881308823088330884308853088630887308883088930890308913089230893308943089530896308973089830899309003090130902309033090430905309063090730908309093091030911309123091330914309153091630917309183091930920309213092230923309243092530926309273092830929309303093130932309333093430935309363093730938309393094030941309423094330944309453094630947309483094930950309513095230953309543095530956309573095830959309603096130962309633096430965309663096730968309693097030971309723097330974309753097630977309783097930980309813098230983309843098530986309873098830989309903099130992309933099430995309963099730998309993100031001310023100331004310053100631007310083100931010310113101231013310143101531016310173101831019310203102131022310233102431025310263102731028310293103031031310323103331034310353103631037310383103931040310413104231043310443104531046310473104831049310503105131052310533105431055310563105731058310593106031061310623106331064310653106631067310683106931070310713107231073310743107531076310773107831079310803108131082310833108431085310863108731088310893109031091310923109331094310953109631097310983109931100311013110231103311043110531106311073110831109311103111131112311133111431115311163111731118311193112031121311223112331124311253112631127311283112931130311313113231133311343113531136311373113831139311403114131142311433114431145311463114731148311493115031151311523115331154311553115631157311583115931160311613116231163311643116531166311673116831169311703117131172311733117431175311763117731178311793118031181311823118331184311853118631187311883118931190311913119231193311943119531196311973119831199312003120131202312033120431205312063120731208312093121031211312123121331214312153121631217312183121931220312213122231223312243122531226312273122831229312303123131232312333123431235312363123731238312393124031241312423124331244312453124631247312483124931250312513125231253312543125531256312573125831259312603126131262312633126431265312663126731268312693127031271312723127331274312753127631277312783127931280312813128231283312843128531286312873128831289312903129131292312933129431295312963129731298312993130031301313023130331304313053130631307313083130931310313113131231313313143131531316313173131831319313203132131322313233132431325313263132731328313293133031331313323133331334313353133631337313383133931340313413134231343313443134531346313473134831349313503135131352313533135431355313563135731358313593136031361313623136331364313653136631367313683136931370313713137231373313743137531376313773137831379313803138131382313833138431385313863138731388313893139031391313923139331394313953139631397313983139931400314013140231403314043140531406314073140831409314103141131412314133141431415314163141731418314193142031421314223142331424314253142631427314283142931430314313143231433314343143531436314373143831439314403144131442314433144431445314463144731448314493145031451314523145331454314553145631457314583145931460314613146231463314643146531466314673146831469314703147131472314733147431475314763147731478314793148031481314823148331484314853148631487314883148931490314913149231493314943149531496314973149831499315003150131502315033150431505315063150731508315093151031511315123151331514315153151631517315183151931520315213152231523315243152531526315273152831529315303153131532315333153431535315363153731538315393154031541315423154331544315453154631547315483154931550315513155231553315543155531556315573155831559315603156131562315633156431565315663156731568315693157031571315723157331574315753157631577315783157931580315813158231583315843158531586315873158831589315903159131592315933159431595315963159731598315993160031601316023160331604316053160631607316083160931610316113161231613316143161531616316173161831619316203162131622316233162431625316263162731628316293163031631316323163331634316353163631637316383163931640316413164231643316443164531646316473164831649316503165131652316533165431655316563165731658316593166031661316623166331664316653166631667316683166931670316713167231673316743167531676316773167831679316803168131682316833168431685316863168731688316893169031691316923169331694316953169631697316983169931700317013170231703317043170531706317073170831709317103171131712317133171431715317163171731718317193172031721317223172331724317253172631727317283172931730317313173231733317343173531736317373173831739317403174131742317433174431745317463174731748317493175031751317523175331754317553175631757317583175931760317613176231763317643176531766317673176831769317703177131772317733177431775317763177731778317793178031781317823178331784317853178631787317883178931790317913179231793317943179531796317973179831799318003180131802318033180431805318063180731808318093181031811318123181331814318153181631817318183181931820318213182231823318243182531826318273182831829318303183131832318333183431835318363183731838318393184031841318423184331844318453184631847318483184931850318513185231853318543185531856318573185831859318603186131862318633186431865318663186731868318693187031871318723187331874318753187631877318783187931880318813188231883318843188531886318873188831889318903189131892318933189431895318963189731898318993190031901319023190331904319053190631907319083190931910319113191231913319143191531916319173191831919319203192131922319233192431925319263192731928319293193031931319323193331934319353193631937319383193931940319413194231943319443194531946319473194831949319503195131952319533195431955319563195731958319593196031961319623196331964319653196631967319683196931970319713197231973319743197531976319773197831979319803198131982319833198431985319863198731988319893199031991319923199331994319953199631997319983199932000320013200232003320043200532006320073200832009320103201132012320133201432015320163201732018320193202032021320223202332024320253202632027320283202932030320313203232033320343203532036320373203832039320403204132042320433204432045320463204732048320493205032051320523205332054320553205632057320583205932060320613206232063320643206532066320673206832069320703207132072320733207432075320763207732078320793208032081320823208332084320853208632087320883208932090320913209232093320943209532096320973209832099321003210132102321033210432105321063210732108321093211032111321123211332114321153211632117321183211932120321213212232123321243212532126321273212832129321303213132132321333213432135321363213732138321393214032141321423214332144321453214632147321483214932150321513215232153321543215532156321573215832159321603216132162321633216432165321663216732168321693217032171321723217332174321753217632177321783217932180321813218232183321843218532186321873218832189321903219132192321933219432195321963219732198321993220032201322023220332204322053220632207322083220932210322113221232213322143221532216322173221832219322203222132222322233222432225322263222732228322293223032231322323223332234322353223632237322383223932240322413224232243322443224532246322473224832249322503225132252322533225432255322563225732258322593226032261322623226332264322653226632267322683226932270322713227232273322743227532276322773227832279322803228132282322833228432285322863228732288322893229032291322923229332294322953229632297322983229932300323013230232303323043230532306323073230832309323103231132312323133231432315323163231732318323193232032321323223232332324323253232632327323283232932330323313233232333323343233532336323373233832339323403234132342323433234432345323463234732348323493235032351323523235332354323553235632357323583235932360323613236232363323643236532366323673236832369323703237132372323733237432375323763237732378323793238032381323823238332384323853238632387323883238932390323913239232393323943239532396323973239832399324003240132402324033240432405324063240732408324093241032411324123241332414324153241632417324183241932420324213242232423324243242532426324273242832429324303243132432324333243432435324363243732438324393244032441324423244332444324453244632447324483244932450324513245232453324543245532456324573245832459324603246132462324633246432465324663246732468324693247032471324723247332474324753247632477324783247932480324813248232483324843248532486324873248832489324903249132492324933249432495324963249732498324993250032501325023250332504325053250632507325083250932510325113251232513325143251532516325173251832519325203252132522325233252432525325263252732528325293253032531325323253332534325353253632537325383253932540325413254232543325443254532546325473254832549325503255132552325533255432555325563255732558325593256032561325623256332564325653256632567325683256932570325713257232573325743257532576325773257832579325803258132582325833258432585325863258732588325893259032591325923259332594325953259632597325983259932600326013260232603326043260532606326073260832609326103261132612326133261432615326163261732618326193262032621326223262332624326253262632627326283262932630326313263232633326343263532636326373263832639326403264132642326433264432645326463264732648326493265032651326523265332654326553265632657326583265932660326613266232663326643266532666326673266832669326703267132672326733267432675326763267732678326793268032681326823268332684326853268632687326883268932690326913269232693326943269532696326973269832699327003270132702327033270432705327063270732708327093271032711327123271332714327153271632717327183271932720327213272232723327243272532726327273272832729327303273132732327333273432735327363273732738327393274032741327423274332744327453274632747327483274932750327513275232753327543275532756327573275832759327603276132762327633276432765327663276732768327693277032771327723277332774327753277632777327783277932780327813278232783327843278532786327873278832789327903279132792327933279432795327963279732798327993280032801328023280332804328053280632807328083280932810328113281232813328143281532816328173281832819328203282132822328233282432825328263282732828328293283032831328323283332834328353283632837328383283932840328413284232843328443284532846328473284832849328503285132852328533285432855328563285732858328593286032861328623286332864328653286632867328683286932870328713287232873328743287532876328773287832879328803288132882328833288432885328863288732888328893289032891328923289332894328953289632897328983289932900329013290232903329043290532906329073290832909329103291132912329133291432915329163291732918329193292032921329223292332924329253292632927329283292932930329313293232933329343293532936329373293832939329403294132942329433294432945329463294732948329493295032951329523295332954329553295632957329583295932960329613296232963329643296532966329673296832969329703297132972329733297432975329763297732978329793298032981329823298332984329853298632987329883298932990329913299232993329943299532996329973299832999330003300133002330033300433005330063300733008330093301033011330123301333014330153301633017330183301933020330213302233023330243302533026330273302833029330303303133032330333303433035330363303733038330393304033041330423304333044330453304633047330483304933050330513305233053330543305533056330573305833059330603306133062330633306433065330663306733068330693307033071330723307333074330753307633077330783307933080330813308233083330843308533086330873308833089330903309133092330933309433095330963309733098330993310033101331023310333104331053310633107331083310933110331113311233113331143311533116331173311833119331203312133122331233312433125331263312733128331293313033131331323313333134331353313633137331383313933140331413314233143331443314533146331473314833149331503315133152331533315433155331563315733158331593316033161331623316333164331653316633167331683316933170331713317233173331743317533176331773317833179331803318133182331833318433185331863318733188331893319033191331923319333194331953319633197331983319933200332013320233203332043320533206332073320833209332103321133212332133321433215332163321733218332193322033221332223322333224332253322633227332283322933230332313323233233332343323533236332373323833239332403324133242332433324433245332463324733248332493325033251332523325333254332553325633257332583325933260332613326233263332643326533266332673326833269332703327133272332733327433275332763327733278332793328033281332823328333284332853328633287332883328933290332913329233293332943329533296332973329833299333003330133302333033330433305333063330733308333093331033311333123331333314333153331633317333183331933320333213332233323333243332533326333273332833329333303333133332333333333433335333363333733338333393334033341333423334333344333453334633347333483334933350333513335233353333543335533356333573335833359333603336133362333633336433365333663336733368333693337033371333723337333374333753337633377333783337933380333813338233383333843338533386333873338833389333903339133392333933339433395333963339733398333993340033401334023340333404334053340633407334083340933410334113341233413334143341533416334173341833419334203342133422334233342433425334263342733428334293343033431334323343333434334353343633437334383343933440334413344233443334443344533446334473344833449334503345133452334533345433455334563345733458334593346033461334623346333464334653346633467334683346933470334713347233473334743347533476334773347833479334803348133482334833348433485334863348733488334893349033491334923349333494334953349633497334983349933500335013350233503335043350533506335073350833509335103351133512335133351433515335163351733518335193352033521335223352333524335253352633527335283352933530335313353233533335343353533536335373353833539335403354133542335433354433545335463354733548335493355033551335523355333554335553355633557335583355933560335613356233563335643356533566335673356833569335703357133572335733357433575335763357733578335793358033581335823358333584335853358633587335883358933590335913359233593335943359533596335973359833599336003360133602336033360433605336063360733608336093361033611336123361333614336153361633617336183361933620336213362233623336243362533626336273362833629336303363133632336333363433635336363363733638336393364033641336423364333644336453364633647336483364933650336513365233653336543365533656336573365833659336603366133662336633366433665336663366733668336693367033671336723367333674336753367633677336783367933680336813368233683336843368533686336873368833689336903369133692336933369433695336963369733698336993370033701337023370333704337053370633707337083370933710337113371233713337143371533716337173371833719337203372133722337233372433725337263372733728337293373033731337323373333734337353373633737337383373933740337413374233743337443374533746337473374833749337503375133752337533375433755337563375733758337593376033761337623376333764337653376633767337683376933770337713377233773337743377533776337773377833779337803378133782337833378433785337863378733788337893379033791337923379333794337953379633797337983379933800338013380233803338043380533806338073380833809338103381133812338133381433815338163381733818338193382033821338223382333824338253382633827338283382933830338313383233833338343383533836338373383833839338403384133842 |
- # @generated by tools/pyi/gen_pyi.py from torch/_C/_VariableFunctions.pyi.in
- # mypy: disable-error-code="type-arg"
- # mypy: allow-untyped-defs
- # ruff: noqa: F401,PYI054
- from collections.abc import Callable, Sequence
- from types import EllipsisType
- from typing import Any, Literal, overload, TypeVar
- import torch
- from torch import (
- contiguous_format,
- Generator,
- inf,
- memory_format,
- strided,
- SymInt,
- Tensor,
- )
- from torch._prims_common import DeviceLikeType
- from torch.types import (
- _bool,
- _complex,
- _device,
- _dtype,
- _float,
- _int,
- _layout,
- _qscheme,
- _size,
- Device,
- Number,
- )
- __all__ = [
- "__and__",
- "__lshift__",
- "__or__",
- "__rshift__",
- "__xor__",
- "_adaptive_avg_pool2d",
- "_adaptive_avg_pool3d",
- "_add_batch_dim",
- "_add_relu",
- "_add_relu_",
- "_addmm_activation",
- "_aminmax",
- "_amp_foreach_non_finite_check_and_unscale_",
- "_amp_update_scale_",
- "_assert_async",
- "_assert_scalar",
- "_assert_tensor_metadata",
- "_batch_norm_impl_index",
- "_cast_Byte",
- "_cast_Char",
- "_cast_Double",
- "_cast_Float",
- "_cast_Half",
- "_cast_Int",
- "_cast_Long",
- "_cast_Short",
- "_choose_qparams_per_tensor",
- "_chunk_cat",
- "_coalesce",
- "_compute_linear_combination",
- "_conj",
- "_conj_copy",
- "_conj_physical",
- "_convert_indices_from_coo_to_csr",
- "_convert_indices_from_csr_to_coo",
- "_convert_weight_to_int4pack",
- "_convert_weight_to_int4pack_for_cpu",
- "_convolution",
- "_convolution_mode",
- "_copy_from",
- "_copy_from_and_resize",
- "_cslt_compress",
- "_cslt_sparse_mm",
- "_cslt_sparse_mm_search",
- "_ctc_loss",
- "_cudnn_ctc_loss",
- "_cudnn_init_dropout_state",
- "_cudnn_rnn",
- "_cudnn_rnn_flatten_weight",
- "_cufft_clear_plan_cache",
- "_cufft_get_plan_cache_max_size",
- "_cufft_get_plan_cache_size",
- "_cufft_set_plan_cache_max_size",
- "_cummax_helper",
- "_cummin_helper",
- "_debug_has_internal_overlap",
- "_dim_arange",
- "_dirichlet_grad",
- "_disable_functionalization",
- "_dyn_quant_matmul_4bit",
- "_dyn_quant_pack_4bit_weight",
- "_efficientzerotensor",
- "_embedding_bag",
- "_embedding_bag_forward_only",
- "_empty_affine_quantized",
- "_empty_per_channel_affine_quantized",
- "_enable_functionalization",
- "_euclidean_dist",
- "_fake_quantize_learnable_per_channel_affine",
- "_fake_quantize_learnable_per_tensor_affine",
- "_fake_quantize_per_tensor_affine_cachemask_tensor_qparams",
- "_fft_c2c",
- "_fft_c2r",
- "_fft_r2c",
- "_fill_mem_eff_dropout_mask_",
- "_foobar",
- "_foreach_abs",
- "_foreach_abs_",
- "_foreach_acos",
- "_foreach_acos_",
- "_foreach_add",
- "_foreach_add_",
- "_foreach_addcdiv",
- "_foreach_addcdiv_",
- "_foreach_addcmul",
- "_foreach_addcmul_",
- "_foreach_asin",
- "_foreach_asin_",
- "_foreach_atan",
- "_foreach_atan_",
- "_foreach_ceil",
- "_foreach_ceil_",
- "_foreach_clamp_max",
- "_foreach_clamp_max_",
- "_foreach_clamp_min",
- "_foreach_clamp_min_",
- "_foreach_copy_",
- "_foreach_cos",
- "_foreach_cos_",
- "_foreach_cosh",
- "_foreach_cosh_",
- "_foreach_div",
- "_foreach_div_",
- "_foreach_erf",
- "_foreach_erf_",
- "_foreach_erfc",
- "_foreach_erfc_",
- "_foreach_exp",
- "_foreach_exp_",
- "_foreach_expm1",
- "_foreach_expm1_",
- "_foreach_floor",
- "_foreach_floor_",
- "_foreach_frac",
- "_foreach_frac_",
- "_foreach_lerp",
- "_foreach_lerp_",
- "_foreach_lgamma",
- "_foreach_lgamma_",
- "_foreach_log",
- "_foreach_log10",
- "_foreach_log10_",
- "_foreach_log1p",
- "_foreach_log1p_",
- "_foreach_log2",
- "_foreach_log2_",
- "_foreach_log_",
- "_foreach_max",
- "_foreach_maximum",
- "_foreach_maximum_",
- "_foreach_minimum",
- "_foreach_minimum_",
- "_foreach_mul",
- "_foreach_mul_",
- "_foreach_neg",
- "_foreach_neg_",
- "_foreach_norm",
- "_foreach_pow",
- "_foreach_pow_",
- "_foreach_powsum",
- "_foreach_reciprocal",
- "_foreach_reciprocal_",
- "_foreach_round",
- "_foreach_round_",
- "_foreach_rsqrt",
- "_foreach_rsqrt_",
- "_foreach_sigmoid",
- "_foreach_sigmoid_",
- "_foreach_sign",
- "_foreach_sign_",
- "_foreach_sin",
- "_foreach_sin_",
- "_foreach_sinh",
- "_foreach_sinh_",
- "_foreach_sqrt",
- "_foreach_sqrt_",
- "_foreach_sub",
- "_foreach_sub_",
- "_foreach_tan",
- "_foreach_tan_",
- "_foreach_tanh",
- "_foreach_tanh_",
- "_foreach_trunc",
- "_foreach_trunc_",
- "_foreach_zero_",
- "_from_functional_tensor",
- "_functional_assert_async",
- "_functional_assert_scalar",
- "_functional_sym_constrain_range",
- "_functional_sym_constrain_range_for_size",
- "_functionalize_apply_view_metas",
- "_functionalize_are_all_mutations_hidden_from_autograd",
- "_functionalize_are_all_mutations_under_no_grad_or_inference_mode",
- "_functionalize_commit_update",
- "_functionalize_has_metadata_mutation",
- "_functionalize_inductor_storage_resized_counter",
- "_functionalize_is_symbolic",
- "_functionalize_mark_mutation_hidden_from_autograd",
- "_functionalize_mark_storage_changed",
- "_functionalize_mutation_counter",
- "_functionalize_replace",
- "_functionalize_storage_changed_counter",
- "_functionalize_sync",
- "_functionalize_unsafe_set",
- "_functionalize_was_inductor_storage_resized",
- "_functionalize_was_storage_changed",
- "_fused_adagrad_",
- "_fused_adam_",
- "_fused_adamw_",
- "_fused_dropout",
- "_fused_moving_avg_obs_fq_helper",
- "_fused_rms_norm",
- "_fused_sdp_choice",
- "_fused_sgd_",
- "_fw_primal_copy",
- "_grid_sampler_2d_cpu_fallback",
- "_grouped_mm",
- "_has_compatible_shallow_copy_type",
- "_histogramdd_bin_edges",
- "_histogramdd_from_bin_cts",
- "_histogramdd_from_bin_tensors",
- "_index_put_impl_",
- "_indices_copy",
- "_int_mm",
- "_is_all_true",
- "_is_any_true",
- "_is_functional_tensor",
- "_is_functional_tensor_base",
- "_is_zerotensor",
- "_lazy_clone",
- "_linalg_check_errors",
- "_linalg_det",
- "_linalg_eigh",
- "_linalg_slogdet",
- "_linalg_solve_ex",
- "_linalg_svd",
- "_log_softmax",
- "_log_softmax_backward_data",
- "_logcumsumexp",
- "_lstm_mps",
- "_lu_with_info",
- "_make_dep_token",
- "_make_dual",
- "_make_dual_copy",
- "_make_per_channel_quantized_tensor",
- "_make_per_tensor_quantized_tensor",
- "_masked_scale",
- "_masked_softmax",
- "_mixed_dtypes_linear",
- "_mkldnn_reshape",
- "_mkldnn_transpose",
- "_mkldnn_transpose_",
- "_mps_convolution",
- "_mps_convolution_transpose",
- "_native_batch_norm_legit",
- "_native_batch_norm_legit_no_training",
- "_native_multi_head_attention",
- "_neg_view",
- "_neg_view_copy",
- "_nested_compute_contiguous_strides_offsets",
- "_nested_from_padded",
- "_nested_from_padded_and_nested_example",
- "_nested_from_padded_tensor",
- "_nested_get_jagged_dummy",
- "_nested_get_lengths",
- "_nested_get_max_seqlen",
- "_nested_get_min_seqlen",
- "_nested_get_offsets",
- "_nested_get_ragged_idx",
- "_nested_get_values",
- "_nested_get_values_copy",
- "_nested_tensor_from_mask",
- "_nested_tensor_from_mask_left_aligned",
- "_nested_tensor_from_tensor_list",
- "_nested_tensor_softmax_with_shape",
- "_nested_view_from_buffer",
- "_nested_view_from_buffer_copy",
- "_nested_view_from_jagged",
- "_nested_view_from_jagged_copy",
- "_nnpack_available",
- "_nnpack_spatial_convolution",
- "_pack_padded_sequence",
- "_pad_packed_sequence",
- "_pin_memory",
- "_prelu_kernel",
- "_print",
- "_propagate_xla_data",
- "_remove_batch_dim",
- "_reshape_alias_copy",
- "_reshape_from_tensor",
- "_resize_output_",
- "_rowwise_prune",
- "_safe_softmax",
- "_sample_dirichlet",
- "_saturate_weight_to_fp16",
- "_scaled_dot_product_attention_math",
- "_scaled_dot_product_attention_math_for_mps",
- "_scaled_dot_product_cudnn_attention",
- "_scaled_dot_product_efficient_attention",
- "_scaled_dot_product_flash_attention",
- "_scaled_dot_product_flash_attention_for_cpu",
- "_scaled_grouped_mm",
- "_scaled_grouped_mm_v2",
- "_scaled_mm",
- "_scaled_mm_v2",
- "_shape_as_tensor",
- "_sobol_engine_draw",
- "_sobol_engine_ff_",
- "_sobol_engine_initialize_state_",
- "_sobol_engine_scramble_",
- "_softmax",
- "_softmax_backward_data",
- "_sparse_broadcast_to",
- "_sparse_broadcast_to_copy",
- "_sparse_csr_prod",
- "_sparse_csr_sum",
- "_sparse_log_softmax_backward_data",
- "_sparse_semi_structured_addmm",
- "_sparse_semi_structured_apply",
- "_sparse_semi_structured_apply_dense",
- "_sparse_semi_structured_linear",
- "_sparse_semi_structured_mm",
- "_sparse_semi_structured_tile",
- "_sparse_softmax_backward_data",
- "_sparse_sparse_matmul",
- "_sparse_sum",
- "_stack",
- "_standard_gamma",
- "_standard_gamma_grad",
- "_sync",
- "_test_autograd_multiple_dispatch",
- "_test_autograd_multiple_dispatch_view",
- "_test_autograd_multiple_dispatch_view_copy",
- "_test_check_tensor",
- "_test_functorch_fallback",
- "_test_parallel_materialize",
- "_test_serialization_subcmul",
- "_to_cpu",
- "_to_functional_tensor",
- "_to_sparse_semi_structured",
- "_transform_bias_rescale_qkv",
- "_transformer_encoder_layer_fwd",
- "_trilinear",
- "_triton_multi_head_attention",
- "_triton_scaled_dot_attention",
- "_unique",
- "_unique2",
- "_unpack_dual",
- "_unsafe_index",
- "_unsafe_index_put",
- "_unsafe_masked_index",
- "_unsafe_masked_index_put_accumulate",
- "_use_cudnn_ctc_loss",
- "_use_cudnn_rnn_flatten_weight",
- "_use_miopen_ctc_loss",
- "_validate_compressed_sparse_indices",
- "_validate_sparse_bsc_tensor_args",
- "_validate_sparse_bsr_tensor_args",
- "_validate_sparse_compressed_tensor_args",
- "_validate_sparse_coo_tensor_args",
- "_validate_sparse_csc_tensor_args",
- "_validate_sparse_csr_tensor_args",
- "_values_copy",
- "_weight_int4pack_mm",
- "_weight_int4pack_mm_for_cpu",
- "_weight_int4pack_mm_with_scales_and_zeros",
- "_weight_int8pack_mm",
- "_weight_norm",
- "_weight_norm_interface",
- "_wrapped_linear_prepack",
- "_wrapped_quantized_linear_prepacked",
- "abs",
- "abs_",
- "absolute",
- "acos",
- "acos_",
- "acosh",
- "acosh_",
- "adaptive_avg_pool1d",
- "adaptive_max_pool1d",
- "add",
- "addbmm",
- "addcdiv",
- "addcmul",
- "addmm",
- "addmv",
- "addmv_",
- "addr",
- "adjoint",
- "affine_grid_generator",
- "alias_copy",
- "all",
- "allclose",
- "alpha_dropout",
- "alpha_dropout_",
- "amax",
- "amin",
- "aminmax",
- "angle",
- "any",
- "arange",
- "arccos",
- "arccos_",
- "arccosh",
- "arccosh_",
- "arcsin",
- "arcsin_",
- "arcsinh",
- "arcsinh_",
- "arctan",
- "arctan2",
- "arctan_",
- "arctanh",
- "arctanh_",
- "argmax",
- "argmin",
- "argsort",
- "argwhere",
- "as_strided",
- "as_strided_",
- "as_strided_copy",
- "as_strided_scatter",
- "as_tensor",
- "asarray",
- "asin",
- "asin_",
- "asinh",
- "asinh_",
- "atan",
- "atan2",
- "atan_",
- "atanh",
- "atanh_",
- "avg_pool1d",
- "baddbmm",
- "bartlett_window",
- "batch_norm",
- "batch_norm_backward_elemt",
- "batch_norm_backward_reduce",
- "batch_norm_elemt",
- "batch_norm_gather_stats",
- "batch_norm_gather_stats_with_counts",
- "batch_norm_stats",
- "batch_norm_update_stats",
- "bernoulli",
- "bilinear",
- "binary_cross_entropy_with_logits",
- "bincount",
- "binomial",
- "bitwise_and",
- "bitwise_left_shift",
- "bitwise_not",
- "bitwise_or",
- "bitwise_right_shift",
- "bitwise_xor",
- "blackman_window",
- "bmm",
- "broadcast_to",
- "bucketize",
- "can_cast",
- "cat",
- "ccol_indices_copy",
- "ceil",
- "ceil_",
- "celu",
- "celu_",
- "channel_shuffle",
- "cholesky",
- "cholesky_inverse",
- "cholesky_solve",
- "choose_qparams_optimized",
- "chunk",
- "clamp",
- "clamp_",
- "clamp_max",
- "clamp_max_",
- "clamp_min",
- "clamp_min_",
- "clip",
- "clip_",
- "clone",
- "col_indices_copy",
- "column_stack",
- "combinations",
- "complex",
- "concat",
- "concatenate",
- "conj",
- "conj_physical",
- "conj_physical_",
- "constant_pad_nd",
- "conv1d",
- "conv2d",
- "conv3d",
- "conv_tbc",
- "conv_transpose1d",
- "conv_transpose2d",
- "conv_transpose3d",
- "convolution",
- "copysign",
- "corrcoef",
- "cos",
- "cos_",
- "cosh",
- "cosh_",
- "cosine_embedding_loss",
- "cosine_similarity",
- "count_nonzero",
- "cov",
- "cross",
- "crow_indices_copy",
- "ctc_loss",
- "cudnn_affine_grid_generator",
- "cudnn_batch_norm",
- "cudnn_convolution",
- "cudnn_convolution_add_relu",
- "cudnn_convolution_relu",
- "cudnn_convolution_transpose",
- "cudnn_grid_sampler",
- "cudnn_is_acceptable",
- "cummax",
- "cummin",
- "cumprod",
- "cumsum",
- "cumulative_trapezoid",
- "deg2rad",
- "deg2rad_",
- "dequantize",
- "det",
- "detach",
- "detach_",
- "detach_copy",
- "diag",
- "diag_embed",
- "diagflat",
- "diagonal",
- "diagonal_copy",
- "diagonal_scatter",
- "diff",
- "digamma",
- "dist",
- "div",
- "divide",
- "dot",
- "dropout",
- "dropout_",
- "dsmm",
- "dsplit",
- "dstack",
- "embedding",
- "embedding_bag",
- "embedding_renorm_",
- "empty",
- "empty_like",
- "empty_permuted",
- "empty_quantized",
- "empty_strided",
- "eq",
- "equal",
- "erf",
- "erf_",
- "erfc",
- "erfc_",
- "erfinv",
- "exp",
- "exp2",
- "exp2_",
- "exp_",
- "expand_copy",
- "expm1",
- "expm1_",
- "eye",
- "fake_quantize_per_channel_affine",
- "fake_quantize_per_tensor_affine",
- "fbgemm_linear_fp16_weight",
- "fbgemm_linear_fp16_weight_fp32_activation",
- "fbgemm_linear_int8_weight",
- "fbgemm_linear_int8_weight_fp32_activation",
- "fbgemm_linear_quantize_weight",
- "fbgemm_pack_gemm_matrix_fp16",
- "fbgemm_pack_quantized_matrix",
- "feature_alpha_dropout",
- "feature_alpha_dropout_",
- "feature_dropout",
- "feature_dropout_",
- "fill",
- "fill_",
- "fix",
- "fix_",
- "flatten",
- "flip",
- "fliplr",
- "flipud",
- "float_power",
- "floor",
- "floor_",
- "floor_divide",
- "fmax",
- "fmin",
- "fmod",
- "frac",
- "frac_",
- "frexp",
- "frobenius_norm",
- "from_file",
- "from_numpy",
- "frombuffer",
- "full",
- "full_like",
- "fused_moving_avg_obs_fake_quant",
- "gather",
- "gcd",
- "gcd_",
- "ge",
- "geqrf",
- "ger",
- "get_default_dtype",
- "get_num_interop_threads",
- "get_num_threads",
- "gradient",
- "greater",
- "greater_equal",
- "grid_sampler",
- "grid_sampler_2d",
- "grid_sampler_3d",
- "group_norm",
- "gru",
- "gru_cell",
- "gt",
- "hamming_window",
- "hann_window",
- "hardshrink",
- "hash_tensor",
- "heaviside",
- "hinge_embedding_loss",
- "histc",
- "histogram",
- "histogramdd",
- "hsmm",
- "hsplit",
- "hspmm",
- "hstack",
- "hypot",
- "i0",
- "i0_",
- "igamma",
- "igammac",
- "imag",
- "index_add",
- "index_copy",
- "index_fill",
- "index_put",
- "index_put_",
- "index_reduce",
- "index_select",
- "indices_copy",
- "init_num_threads",
- "inner",
- "instance_norm",
- "int_repr",
- "inverse",
- "is_complex",
- "is_conj",
- "is_distributed",
- "is_floating_point",
- "is_grad_enabled",
- "is_inference",
- "is_inference_mode_enabled",
- "is_neg",
- "is_nonzero",
- "is_same_size",
- "is_signed",
- "is_vulkan_available",
- "isclose",
- "isfinite",
- "isin",
- "isinf",
- "isnan",
- "isneginf",
- "isposinf",
- "isreal",
- "istft",
- "kaiser_window",
- "kl_div",
- "kron",
- "kthvalue",
- "layer_norm",
- "lcm",
- "lcm_",
- "ldexp",
- "ldexp_",
- "le",
- "lerp",
- "less",
- "less_equal",
- "lgamma",
- "linspace",
- "log",
- "log10",
- "log10_",
- "log1p",
- "log1p_",
- "log2",
- "log2_",
- "log_",
- "log_softmax",
- "logaddexp",
- "logaddexp2",
- "logcumsumexp",
- "logdet",
- "logical_and",
- "logical_not",
- "logical_or",
- "logical_xor",
- "logit",
- "logit_",
- "logspace",
- "logsumexp",
- "lstm",
- "lstm_cell",
- "lt",
- "lu_solve",
- "lu_unpack",
- "margin_ranking_loss",
- "masked_fill",
- "masked_scatter",
- "masked_select",
- "matmul",
- "matrix_exp",
- "matrix_power",
- "max",
- "max_pool1d",
- "max_pool1d_with_indices",
- "max_pool2d",
- "max_pool3d",
- "maximum",
- "mean",
- "median",
- "min",
- "minimum",
- "miopen_batch_norm",
- "miopen_convolution",
- "miopen_convolution_add_relu",
- "miopen_convolution_relu",
- "miopen_convolution_transpose",
- "miopen_ctc_loss",
- "miopen_depthwise_convolution",
- "miopen_rnn",
- "mkldnn_adaptive_avg_pool2d",
- "mkldnn_convolution",
- "mkldnn_linear_backward_weights",
- "mkldnn_max_pool2d",
- "mkldnn_max_pool3d",
- "mkldnn_rnn_layer",
- "mm",
- "mode",
- "moveaxis",
- "movedim",
- "msort",
- "mul",
- "multinomial",
- "multiply",
- "mv",
- "mvlgamma",
- "nan_to_num",
- "nan_to_num_",
- "nanmean",
- "nanmedian",
- "nanquantile",
- "nansum",
- "narrow",
- "narrow_copy",
- "native_batch_norm",
- "native_channel_shuffle",
- "native_dropout",
- "native_group_norm",
- "native_layer_norm",
- "native_norm",
- "ne",
- "neg",
- "neg_",
- "negative",
- "negative_",
- "nextafter",
- "nonzero",
- "nonzero_static",
- "norm_except_dim",
- "normal",
- "not_equal",
- "nuclear_norm",
- "numel",
- "ones",
- "ones_like",
- "orgqr",
- "ormqr",
- "outer",
- "pairwise_distance",
- "pdist",
- "permute",
- "permute_copy",
- "pinverse",
- "pixel_shuffle",
- "pixel_unshuffle",
- "poisson",
- "poisson_nll_loss",
- "polar",
- "polygamma",
- "positive",
- "pow",
- "prelu",
- "prod",
- "promote_types",
- "put",
- "q_per_channel_axis",
- "q_per_channel_scales",
- "q_per_channel_zero_points",
- "q_scale",
- "q_zero_point",
- "qr",
- "quantile",
- "quantize_per_channel",
- "quantize_per_tensor",
- "quantize_per_tensor_dynamic",
- "quantized_batch_norm",
- "quantized_gru_cell",
- "quantized_lstm_cell",
- "quantized_max_pool1d",
- "quantized_max_pool2d",
- "quantized_max_pool3d",
- "quantized_rnn_relu_cell",
- "quantized_rnn_tanh_cell",
- "rad2deg",
- "rad2deg_",
- "rand",
- "rand_like",
- "randint",
- "randint_like",
- "randn",
- "randn_like",
- "randperm",
- "range",
- "ravel",
- "real",
- "reciprocal",
- "reciprocal_",
- "relu",
- "relu_",
- "remainder",
- "renorm",
- "repeat_interleave",
- "reshape",
- "resize_as_",
- "resize_as_sparse_",
- "resolve_conj",
- "resolve_neg",
- "result_type",
- "rms_norm",
- "rnn_relu",
- "rnn_relu_cell",
- "rnn_tanh",
- "rnn_tanh_cell",
- "roll",
- "rot90",
- "round",
- "round_",
- "row_indices_copy",
- "row_stack",
- "rrelu",
- "rrelu_",
- "rsqrt",
- "rsqrt_",
- "rsub",
- "saddmm",
- "scalar_tensor",
- "scatter",
- "scatter_add",
- "scatter_reduce",
- "searchsorted",
- "segment_reduce",
- "select",
- "select_copy",
- "select_scatter",
- "selu",
- "selu_",
- "set_flush_denormal",
- "set_num_interop_threads",
- "set_num_threads",
- "sgn",
- "sigmoid",
- "sigmoid_",
- "sign",
- "signbit",
- "sin",
- "sin_",
- "sinc",
- "sinc_",
- "sinh",
- "sinh_",
- "slice_copy",
- "slice_inverse",
- "slice_scatter",
- "slogdet",
- "smm",
- "softmax",
- "sort",
- "sparse_bsc_tensor",
- "sparse_bsr_tensor",
- "sparse_compressed_tensor",
- "sparse_coo_tensor",
- "sparse_csc_tensor",
- "sparse_csr_tensor",
- "split_copy",
- "split_with_sizes",
- "split_with_sizes_copy",
- "spmm",
- "sqrt",
- "sqrt_",
- "square",
- "square_",
- "squeeze",
- "squeeze_copy",
- "sspaddmm",
- "stack",
- "std",
- "std_mean",
- "sub",
- "subtract",
- "sum",
- "svd",
- "swapaxes",
- "swapdims",
- "sym_constrain_range",
- "sym_constrain_range_for_size",
- "t",
- "t_copy",
- "take",
- "take_along_dim",
- "tan",
- "tan_",
- "tanh",
- "tanh_",
- "tensor",
- "tensor_split",
- "threshold",
- "threshold_",
- "tile",
- "topk",
- "trace",
- "transpose",
- "transpose_copy",
- "trapezoid",
- "trapz",
- "triangular_solve",
- "tril",
- "tril_indices",
- "triplet_margin_loss",
- "triu",
- "triu_indices",
- "true_divide",
- "trunc",
- "trunc_",
- "unbind",
- "unbind_copy",
- "unflatten",
- "unfold_copy",
- "unique_dim",
- "unsafe_chunk",
- "unsafe_split",
- "unsafe_split_with_sizes",
- "unsqueeze",
- "unsqueeze_copy",
- "values_copy",
- "vander",
- "var",
- "var_mean",
- "vdot",
- "view_as_complex",
- "view_as_complex_copy",
- "view_as_real",
- "view_as_real_copy",
- "view_copy",
- "vsplit",
- "vstack",
- "where",
- "xlogy",
- "xlogy_",
- "zero_",
- "zeros",
- "zeros_like",
- ]
- @overload
- def __and__(input: Tensor, other: Tensor) -> Tensor: ...
- @overload
- def __and__(input: Tensor, other: Number | _complex) -> Tensor: ...
- @overload
- def __lshift__(input: Tensor, other: Tensor) -> Tensor: ...
- @overload
- def __lshift__(input: Tensor, other: Number | _complex) -> Tensor: ...
- @overload
- def __or__(input: Tensor, other: Tensor) -> Tensor: ...
- @overload
- def __or__(input: Tensor, other: Number | _complex) -> Tensor: ...
- @overload
- def __rshift__(input: Tensor, other: Tensor) -> Tensor: ...
- @overload
- def __rshift__(input: Tensor, other: Number | _complex) -> Tensor: ...
- @overload
- def __xor__(input: Tensor, other: Tensor) -> Tensor: ...
- @overload
- def __xor__(input: Tensor, other: Number | _complex) -> Tensor: ...
- def _adaptive_avg_pool2d(
- input: Tensor,
- output_size: _int | SymInt | Sequence[_int | SymInt],
- ) -> Tensor: ...
- def _adaptive_avg_pool3d(
- input: Tensor,
- output_size: _int | SymInt | Sequence[_int | SymInt],
- ) -> Tensor: ...
- def _add_batch_dim(input: Tensor, batch_dim: _int, level: _int) -> Tensor: ...
- @overload
- def _add_relu(
- input: Tensor,
- other: Tensor,
- *,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def _add_relu(
- input: Tensor,
- other: Number | _complex,
- alpha: Number | _complex = 1,
- ) -> Tensor: ...
- @overload
- def _add_relu_(
- input: Tensor,
- other: Tensor,
- *,
- alpha: Number | _complex = 1,
- ) -> Tensor: ...
- @overload
- def _add_relu_(
- input: Tensor,
- other: Number | _complex,
- alpha: Number | _complex = 1,
- ) -> Tensor: ...
- def _addmm_activation(
- input: Tensor,
- mat1: Tensor,
- mat2: Tensor,
- *,
- beta: Number | _complex = 1,
- alpha: Number | _complex = 1,
- use_gelu: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def _aminmax(input: Tensor) -> tuple[Tensor, Tensor]: ...
- @overload
- def _aminmax(
- input: Tensor,
- dim: _int,
- keepdim: _bool = False,
- ) -> tuple[Tensor, Tensor]: ...
- def _amp_foreach_non_finite_check_and_unscale_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- found_inf: Tensor,
- inv_scale: Tensor,
- ) -> None: ...
- def _amp_update_scale_(
- input: Tensor,
- growth_tracker: Tensor,
- found_inf: Tensor,
- scale_growth_factor: _float,
- scale_backoff_factor: _float,
- growth_interval: _int,
- ) -> Tensor: ...
- @overload
- def _assert_async(input: Tensor) -> None:
- r"""
- _assert_async(tensor) -> void
- Asynchronously assert that the contents of tensor are nonzero. For CPU tensors,
- this is equivalent to ``assert tensor`` or ``assert tensor.is_nonzero()``; for
- CUDA tensors, we DO NOT synchronize and you may only find out the assertion
- failed at a later CUDA kernel launch. Asynchronous assertion can be helpful for
- testing invariants in CUDA tensors without giving up performance. This function
- is NOT intended to be used for regular error checking, as it will trash your CUDA
- context if the assert fails (forcing you to restart your PyTorch process.)
- Args:
- tensor (Tensor): a one element tensor to test to see if it is nonzero. Zero
- elements (including False for boolean tensors) cause an assertion failure
- to be raised.
- """
- @overload
- def _assert_async(input: Tensor, assert_msg: str) -> None:
- r"""
- _assert_async(tensor) -> void
- Asynchronously assert that the contents of tensor are nonzero. For CPU tensors,
- this is equivalent to ``assert tensor`` or ``assert tensor.is_nonzero()``; for
- CUDA tensors, we DO NOT synchronize and you may only find out the assertion
- failed at a later CUDA kernel launch. Asynchronous assertion can be helpful for
- testing invariants in CUDA tensors without giving up performance. This function
- is NOT intended to be used for regular error checking, as it will trash your CUDA
- context if the assert fails (forcing you to restart your PyTorch process.)
- Args:
- tensor (Tensor): a one element tensor to test to see if it is nonzero. Zero
- elements (including False for boolean tensors) cause an assertion failure
- to be raised.
- """
- def _assert_scalar(self: Number | _complex, assert_msg: str) -> None: ...
- def _assert_tensor_metadata(
- a: Tensor,
- size: Sequence[_int | SymInt] | None = None,
- stride: Sequence[_int | SymInt] | None = None,
- dtype: _dtype | None = None,
- *,
- device: DeviceLikeType | None = None,
- layout: _layout | None = None,
- ) -> None: ...
- def _batch_norm_impl_index(
- input: Tensor,
- weight: Tensor | None,
- bias: Tensor | None,
- running_mean: Tensor | None,
- running_var: Tensor | None,
- training: _bool,
- momentum: _float,
- eps: _float,
- cudnn_enabled: _bool,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor, _int]: ...
- def _cast_Byte(input: Tensor, non_blocking: _bool = False) -> Tensor: ...
- def _cast_Char(input: Tensor, non_blocking: _bool = False) -> Tensor: ...
- def _cast_Double(input: Tensor, non_blocking: _bool = False) -> Tensor: ...
- def _cast_Float(input: Tensor, non_blocking: _bool = False) -> Tensor: ...
- def _cast_Half(input: Tensor, non_blocking: _bool = False) -> Tensor: ...
- def _cast_Int(input: Tensor, non_blocking: _bool = False) -> Tensor: ...
- def _cast_Long(input: Tensor, non_blocking: _bool = False) -> Tensor: ...
- def _cast_Short(input: Tensor, non_blocking: _bool = False) -> Tensor: ...
- def _choose_qparams_per_tensor(
- input: Tensor,
- reduce_range: _bool = False,
- ) -> tuple[_float, _int]: ...
- def _chunk_cat(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- dim: _int,
- num_chunks: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _coalesce(input: Tensor) -> Tensor: ...
- def _compute_linear_combination(
- input: Tensor,
- coefficients: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _conj(input: Tensor) -> Tensor: ...
- def _conj_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor: ...
- def _conj_physical(input: Tensor) -> Tensor: ...
- def _convert_indices_from_coo_to_csr(
- input: Tensor,
- size: _int,
- *,
- out_int32: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _convert_indices_from_csr_to_coo(
- crow_indices: Tensor,
- col_indices: Tensor,
- *,
- out_int32: _bool = False,
- transpose: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _convert_weight_to_int4pack(input: Tensor, innerKTiles: _int) -> Tensor: ...
- def _convert_weight_to_int4pack_for_cpu(
- input: Tensor,
- innerKTiles: _int,
- ) -> Tensor: ...
- @overload
- def _convolution(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- stride: Sequence[_int | SymInt],
- padding: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- transposed: _bool,
- output_padding: _size,
- groups: _int | SymInt,
- benchmark: _bool,
- deterministic: _bool,
- cudnn_enabled: _bool,
- ) -> Tensor: ...
- @overload
- def _convolution(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- stride: Sequence[_int | SymInt],
- padding: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- transposed: _bool,
- output_padding: Sequence[_int | SymInt],
- groups: _int | SymInt,
- benchmark: _bool,
- deterministic: _bool,
- cudnn_enabled: _bool,
- allow_tf32: _bool,
- ) -> Tensor: ...
- def _convolution_mode(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- stride: Sequence[_int | SymInt],
- padding: str,
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- ) -> Tensor: ...
- def _copy_from(
- input: Tensor,
- dst: Tensor,
- non_blocking: _bool = False,
- ) -> Tensor: ...
- def _copy_from_and_resize(input: Tensor, dst: Tensor) -> Tensor: ...
- def _cslt_compress(input: Tensor) -> Tensor: ...
- def _cslt_sparse_mm(
- compressed_A: Tensor,
- dense_B: Tensor,
- bias: Tensor | None = None,
- alpha: Tensor | None = None,
- out_dtype: _dtype | None = None,
- transpose_result: _bool = False,
- alg_id: _int = 0,
- split_k: _int = 1,
- split_k_mode: _int = -1,
- ) -> Tensor: ...
- def _cslt_sparse_mm_search(
- compressed_A: Tensor,
- dense_B: Tensor,
- bias: Tensor | None = None,
- alpha: Tensor | None = None,
- out_dtype: _dtype | None = None,
- transpose_result: _bool = False,
- ) -> _int: ...
- @overload
- def _ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: _size,
- target_lengths: _size,
- blank: _int = 0,
- zero_infinity: _bool = False,
- ) -> tuple[Tensor, Tensor]: ...
- @overload
- def _ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: Tensor,
- target_lengths: Tensor,
- blank: _int = 0,
- zero_infinity: _bool = False,
- ) -> tuple[Tensor, Tensor]: ...
- @overload
- def _cudnn_ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: _size,
- target_lengths: _size,
- blank: _int,
- deterministic: _bool,
- zero_infinity: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- @overload
- def _cudnn_ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: Tensor,
- target_lengths: Tensor,
- blank: _int,
- deterministic: _bool,
- zero_infinity: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- def _cudnn_init_dropout_state(
- dropout: _float,
- train: _bool,
- dropout_seed: _int,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor: ...
- def _cudnn_rnn(
- input: Tensor,
- weight: tuple[Tensor, ...] | list[Tensor] | None,
- weight_stride0: _int,
- weight_buf: Tensor | None,
- hx: Tensor,
- cx: Tensor | None,
- mode: _int,
- hidden_size: _int | SymInt,
- proj_size: _int | SymInt,
- num_layers: _int,
- batch_first: _bool,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- batch_sizes: Sequence[_int | SymInt],
- dropout_state: Tensor | None,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor, Tensor]: ...
- def _cudnn_rnn_flatten_weight(
- weight_arr: tuple[Tensor, ...] | list[Tensor] | None,
- weight_stride0: _int,
- input_size: _int | SymInt,
- mode: _int,
- hidden_size: _int | SymInt,
- proj_size: _int | SymInt,
- num_layers: _int,
- batch_first: _bool,
- bidirectional: _bool,
- ) -> Tensor: ...
- def _cufft_clear_plan_cache(device_index: _int) -> None: ...
- def _cufft_get_plan_cache_max_size(device_index: _int) -> _int: ...
- def _cufft_get_plan_cache_size(device_index: _int) -> _int: ...
- def _cufft_set_plan_cache_max_size(
- device_index: _int,
- max_size: _int,
- ) -> None: ...
- def _cummax_helper(
- input: Tensor,
- values: Tensor,
- indices: Tensor,
- dim: _int,
- ) -> None: ...
- def _cummin_helper(
- input: Tensor,
- values: Tensor,
- indices: Tensor,
- dim: _int,
- ) -> None: ...
- def _debug_has_internal_overlap(input: Tensor) -> _int: ...
- def _dim_arange(like: Tensor, dim: _int) -> Tensor: ...
- def _dirichlet_grad(x: Tensor, alpha: Tensor, total: Tensor) -> Tensor: ...
- def _disable_functionalization(): ...
- def _dyn_quant_matmul_4bit(
- inp: Tensor,
- packed_weights: Tensor,
- block_size: _int,
- in_features: _int,
- out_features: _int,
- ) -> Tensor: ...
- def _dyn_quant_pack_4bit_weight(
- weights: Tensor,
- scales_zeros: Tensor,
- bias: Tensor | None,
- block_size: _int,
- in_features: _int,
- out_features: _int,
- ) -> Tensor: ...
- @overload
- def _efficientzerotensor(
- size: Sequence[_int | SymInt],
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor: ...
- @overload
- def _efficientzerotensor(
- *size: _int | SymInt,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor: ...
- def _embedding_bag(
- weight: Tensor,
- indices: Tensor,
- offsets: Tensor,
- scale_grad_by_freq: _bool = False,
- mode: _int = 0,
- sparse: _bool = False,
- per_sample_weights: Tensor | None = None,
- include_last_offset: _bool = False,
- padding_idx: _int = -1,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor]: ...
- def _embedding_bag_forward_only(
- weight: Tensor,
- indices: Tensor,
- offsets: Tensor,
- scale_grad_by_freq: _bool = False,
- mode: _int = 0,
- sparse: _bool = False,
- per_sample_weights: Tensor | None = None,
- include_last_offset: _bool = False,
- padding_idx: _int = -1,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor]: ...
- @overload
- def _empty_affine_quantized(
- size: Sequence[_int | SymInt],
- *,
- scale: _float = 1,
- zero_point: _int = 0,
- memory_format: memory_format | None = contiguous_format,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor: ...
- @overload
- def _empty_affine_quantized(
- *size: _int | SymInt,
- scale: _float = 1,
- zero_point: _int = 0,
- memory_format: memory_format | None = contiguous_format,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor: ...
- @overload
- def _empty_per_channel_affine_quantized(
- size: Sequence[_int | SymInt],
- *,
- scales: Tensor,
- zero_points: Tensor,
- axis: _int,
- memory_format: memory_format | None = contiguous_format,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor: ...
- @overload
- def _empty_per_channel_affine_quantized(
- *size: _int | SymInt,
- scales: Tensor,
- zero_points: Tensor,
- axis: _int,
- memory_format: memory_format | None = contiguous_format,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor: ...
- def _enable_functionalization(*, reapply_views: _bool = False) -> None: ...
- def _euclidean_dist(x1: Tensor, x2: Tensor) -> Tensor: ...
- def _fake_quantize_learnable_per_channel_affine(
- input: Tensor,
- scale: Tensor,
- zero_point: Tensor,
- axis: _int,
- quant_min: _int,
- quant_max: _int,
- grad_factor: _float = 1.0,
- ) -> Tensor: ...
- def _fake_quantize_learnable_per_tensor_affine(
- input: Tensor,
- scale: Tensor,
- zero_point: Tensor,
- quant_min: _int,
- quant_max: _int,
- grad_factor: _float = 1.0,
- ) -> Tensor: ...
- def _fake_quantize_per_tensor_affine_cachemask_tensor_qparams(
- input: Tensor,
- scale: Tensor,
- zero_point: Tensor,
- fake_quant_enabled: Tensor,
- quant_min: _int,
- quant_max: _int,
- ) -> torch.return_types._fake_quantize_per_tensor_affine_cachemask_tensor_qparams: # fmt: skip
- ...
- def _fft_c2c(
- input: Tensor,
- dim: Sequence[_int | SymInt],
- normalization: _int,
- forward: _bool,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _fft_c2r(
- input: Tensor,
- dim: _size,
- normalization: _int,
- last_dim_size: _int | SymInt,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _fft_r2c(
- input: Tensor,
- dim: _size,
- normalization: _int,
- onesided: _bool,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _fill_mem_eff_dropout_mask_(
- input: Tensor,
- dropout_p: _float,
- seed: _int,
- offset: _int,
- ) -> Tensor: ...
- def _foobar(
- input: Tensor,
- arg1: _bool = True,
- arg2: _bool = True,
- *,
- arg3: _bool = True,
- ) -> Tensor: ...
- def _foreach_abs(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_abs(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.abs` to each Tensor of the input list.
- """
- def _foreach_abs_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_abs_(self: List[Tensor]) -> None
- Apply :func:`torch.abs` to each Tensor of the input list.
- """
- def _foreach_acos(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_acos(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.acos` to each Tensor of the input list.
- """
- def _foreach_acos_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_acos_(self: List[Tensor]) -> None
- Apply :func:`torch.acos` to each Tensor of the input list.
- """
- @overload
- def _foreach_add(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_add(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- alpha: Number | _complex = 1,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_add(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: Tensor,
- *,
- alpha: Number | _complex = 1,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_add(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_add_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_add_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- alpha: Number | _complex = 1,
- ) -> None: ...
- @overload
- def _foreach_add_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: Tensor,
- *,
- alpha: Number | _complex = 1,
- ) -> None: ...
- @overload
- def _foreach_add_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> None: ...
- @overload
- def _foreach_addcdiv(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_addcdiv(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Tensor,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_addcdiv(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- value: Number | _complex = 1,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_addcdiv_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_addcdiv_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Tensor,
- ) -> None: ...
- @overload
- def _foreach_addcdiv_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- value: Number | _complex = 1,
- ) -> None: ...
- @overload
- def _foreach_addcmul(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_addcmul(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Tensor,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_addcmul(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- value: Number | _complex = 1,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_addcmul_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_addcmul_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Tensor,
- ) -> None: ...
- @overload
- def _foreach_addcmul_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensor1: tuple[Tensor, ...] | list[Tensor] | None,
- tensor2: tuple[Tensor, ...] | list[Tensor] | None,
- value: Number | _complex = 1,
- ) -> None: ...
- def _foreach_asin(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_asin(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.asin` to each Tensor of the input list.
- """
- def _foreach_asin_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_asin_(self: List[Tensor]) -> None
- Apply :func:`torch.asin` to each Tensor of the input list.
- """
- def _foreach_atan(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_atan(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.atan` to each Tensor of the input list.
- """
- def _foreach_atan_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_atan_(self: List[Tensor]) -> None
- Apply :func:`torch.atan` to each Tensor of the input list.
- """
- def _foreach_ceil(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_ceil(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.ceil` to each Tensor of the input list.
- """
- def _foreach_ceil_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_ceil_(self: List[Tensor]) -> None
- Apply :func:`torch.ceil` to each Tensor of the input list.
- """
- @overload
- def _foreach_clamp_max(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_clamp_max(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_clamp_max(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_clamp_max_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_clamp_max_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> None: ...
- @overload
- def _foreach_clamp_max_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None: ...
- @overload
- def _foreach_clamp_min(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_clamp_min(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_clamp_min(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_clamp_min_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_clamp_min_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> None: ...
- @overload
- def _foreach_clamp_min_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None: ...
- def _foreach_copy_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- src: tuple[Tensor, ...] | list[Tensor] | None,
- non_blocking: _bool = False,
- ) -> None: ...
- def _foreach_cos(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_cos(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.cos` to each Tensor of the input list.
- """
- def _foreach_cos_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_cos_(self: List[Tensor]) -> None
- Apply :func:`torch.cos` to each Tensor of the input list.
- """
- def _foreach_cosh(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_cosh(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.cosh` to each Tensor of the input list.
- """
- def _foreach_cosh_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_cosh_(self: List[Tensor]) -> None
- Apply :func:`torch.cosh` to each Tensor of the input list.
- """
- @overload
- def _foreach_div(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_div(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: Tensor,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_div(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_div(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_div_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_div_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: Tensor,
- ) -> None: ...
- @overload
- def _foreach_div_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> None: ...
- @overload
- def _foreach_div_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None: ...
- def _foreach_erf(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_erf(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.erf` to each Tensor of the input list.
- """
- def _foreach_erf_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_erf_(self: List[Tensor]) -> None
- Apply :func:`torch.erf` to each Tensor of the input list.
- """
- def _foreach_erfc(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_erfc(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.erfc` to each Tensor of the input list.
- """
- def _foreach_erfc_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_erfc_(self: List[Tensor]) -> None
- Apply :func:`torch.erfc` to each Tensor of the input list.
- """
- def _foreach_exp(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_exp(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.exp` to each Tensor of the input list.
- """
- def _foreach_exp_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_exp_(self: List[Tensor]) -> None
- Apply :func:`torch.exp` to each Tensor of the input list.
- """
- def _foreach_expm1(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_expm1(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.expm1` to each Tensor of the input list.
- """
- def _foreach_expm1_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_expm1_(self: List[Tensor]) -> None
- Apply :func:`torch.expm1` to each Tensor of the input list.
- """
- def _foreach_floor(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_floor(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.floor` to each Tensor of the input list.
- """
- def _foreach_floor_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_floor_(self: List[Tensor]) -> None
- Apply :func:`torch.floor` to each Tensor of the input list.
- """
- def _foreach_frac(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_frac(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.frac` to each Tensor of the input list.
- """
- def _foreach_frac_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_frac_(self: List[Tensor]) -> None
- Apply :func:`torch.frac` to each Tensor of the input list.
- """
- @overload
- def _foreach_lerp(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensors1: tuple[Tensor, ...] | list[Tensor] | None,
- weight: Number | _complex,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_lerp(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensors1: tuple[Tensor, ...] | list[Tensor] | None,
- weight: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_lerp(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensors1: tuple[Tensor, ...] | list[Tensor] | None,
- weights: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_lerp_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensors1: tuple[Tensor, ...] | list[Tensor] | None,
- weight: Number | _complex,
- ) -> None: ...
- @overload
- def _foreach_lerp_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensors1: tuple[Tensor, ...] | list[Tensor] | None,
- weight: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_lerp_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- tensors1: tuple[Tensor, ...] | list[Tensor] | None,
- weights: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None: ...
- def _foreach_lgamma(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_lgamma(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.lgamma` to each Tensor of the input list.
- """
- def _foreach_lgamma_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None:
- r"""
- _foreach_lgamma_(self: List[Tensor]) -> None
- Apply :func:`torch.lgamma` to each Tensor of the input list.
- """
- def _foreach_log(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_log(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.log` to each Tensor of the input list.
- """
- def _foreach_log10(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_log10(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.log10` to each Tensor of the input list.
- """
- def _foreach_log10_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_log10_(self: List[Tensor]) -> None
- Apply :func:`torch.log10` to each Tensor of the input list.
- """
- def _foreach_log1p(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_log1p(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.log1p` to each Tensor of the input list.
- """
- def _foreach_log1p_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_log1p_(self: List[Tensor]) -> None
- Apply :func:`torch.log1p` to each Tensor of the input list.
- """
- def _foreach_log2(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_log2(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.log2` to each Tensor of the input list.
- """
- def _foreach_log2_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_log2_(self: List[Tensor]) -> None
- Apply :func:`torch.log2` to each Tensor of the input list.
- """
- def _foreach_log_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_log_(self: List[Tensor]) -> None
- Apply :func:`torch.log` to each Tensor of the input list.
- """
- def _foreach_max(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_maximum(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_maximum(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_maximum(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_maximum_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_maximum_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> None: ...
- @overload
- def _foreach_maximum_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None: ...
- @overload
- def _foreach_minimum(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_minimum(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_minimum(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_minimum_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_minimum_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> None: ...
- @overload
- def _foreach_minimum_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None: ...
- @overload
- def _foreach_mul(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_mul(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: Tensor,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_mul(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_mul(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_mul_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_mul_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: Tensor,
- ) -> None: ...
- @overload
- def _foreach_mul_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> None: ...
- @overload
- def _foreach_mul_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None: ...
- def _foreach_neg(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_neg(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.neg` to each Tensor of the input list.
- """
- def _foreach_neg_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_neg_(self: List[Tensor]) -> None
- Apply :func:`torch.neg` to each Tensor of the input list.
- """
- def _foreach_norm(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ord: Number | _complex = 2,
- dtype: _dtype | None = None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_pow(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- exponent: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_pow(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- exponent: Number | _complex,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_pow(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- exponent: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_pow(
- self: Number | _complex,
- exponent: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_pow_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- exponent: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_pow_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- exponent: Number | _complex,
- ) -> None: ...
- @overload
- def _foreach_pow_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- exponent: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None: ...
- def _foreach_powsum(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ord: Number | _complex = 2,
- dtype: _dtype | None = None,
- ) -> tuple[Tensor, ...]: ...
- def _foreach_reciprocal(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_reciprocal(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.reciprocal` to each Tensor of the input list.
- """
- def _foreach_reciprocal_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None:
- r"""
- _foreach_reciprocal_(self: List[Tensor]) -> None
- Apply :func:`torch.reciprocal` to each Tensor of the input list.
- """
- def _foreach_round(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_round(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.round` to each Tensor of the input list.
- """
- def _foreach_round_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_round_(self: List[Tensor]) -> None
- Apply :func:`torch.round` to each Tensor of the input list.
- """
- def _foreach_rsqrt(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- def _foreach_rsqrt_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None: ...
- def _foreach_sigmoid(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_sigmoid(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.sigmoid` to each Tensor of the input list.
- """
- def _foreach_sigmoid_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> None:
- r"""
- _foreach_sigmoid_(self: List[Tensor]) -> None
- Apply :func:`torch.sigmoid` to each Tensor of the input list.
- """
- def _foreach_sign(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- def _foreach_sign_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None: ...
- def _foreach_sin(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_sin(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.sin` to each Tensor of the input list.
- """
- def _foreach_sin_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_sin_(self: List[Tensor]) -> None
- Apply :func:`torch.sin` to each Tensor of the input list.
- """
- def _foreach_sinh(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_sinh(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.sinh` to each Tensor of the input list.
- """
- def _foreach_sinh_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_sinh_(self: List[Tensor]) -> None
- Apply :func:`torch.sinh` to each Tensor of the input list.
- """
- def _foreach_sqrt(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_sqrt(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.sqrt` to each Tensor of the input list.
- """
- def _foreach_sqrt_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_sqrt_(self: List[Tensor]) -> None
- Apply :func:`torch.sqrt` to each Tensor of the input list.
- """
- @overload
- def _foreach_sub(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_sub(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- alpha: Number | _complex = 1,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_sub(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> tuple[Tensor, ...]: ...
- @overload
- def _foreach_sub_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalars: Sequence[Number | _complex],
- ) -> None: ...
- @overload
- def _foreach_sub_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- other: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- alpha: Number | _complex = 1,
- ) -> None: ...
- @overload
- def _foreach_sub_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- scalar: Number | _complex,
- ) -> None: ...
- def _foreach_tan(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_tan(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.tan` to each Tensor of the input list.
- """
- def _foreach_tan_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_tan_(self: List[Tensor]) -> None
- Apply :func:`torch.tan` to each Tensor of the input list.
- """
- def _foreach_tanh(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_tanh(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.tanh` to each Tensor of the input list.
- """
- def _foreach_tanh_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_tanh_(self: List[Tensor]) -> None
- Apply :func:`torch.tanh` to each Tensor of the input list.
- """
- def _foreach_trunc(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- _foreach_trunc(self: List[Tensor]) -> List[Tensor]
- Apply :func:`torch.trunc` to each Tensor of the input list.
- """
- def _foreach_trunc_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_trunc_(self: List[Tensor]) -> None
- Apply :func:`torch.trunc` to each Tensor of the input list.
- """
- def _foreach_zero_(self: tuple[Tensor, ...] | list[Tensor] | None) -> None:
- r"""
- _foreach_zero_(self: List[Tensor]) -> None
- Apply :func:`torch.zero` to each Tensor of the input list.
- """
- def _from_functional_tensor(t: Tensor) -> Tensor: ...
- def _functional_assert_async(
- input: Tensor,
- assert_msg: str,
- dep_token: Tensor,
- ) -> Tensor: ...
- def _functional_assert_scalar(
- self: Number | _complex,
- assert_msg: str,
- dep_token: Tensor,
- ) -> Tensor: ...
- def _functional_sym_constrain_range(
- size: Number | _complex,
- min: _int | None,
- max: _int | None,
- dep_token: Tensor,
- ) -> Tensor: ...
- def _functional_sym_constrain_range_for_size(
- size: Number | _complex,
- min: _int | None,
- max: _int | None,
- dep_token: Tensor,
- ) -> Tensor: ...
- def _functionalize_apply_view_metas(tensor: Tensor, base: Tensor) -> Tensor: ...
- def _functionalize_are_all_mutations_hidden_from_autograd(
- t: Tensor,
- ) -> _bool: ...
- def _functionalize_are_all_mutations_under_no_grad_or_inference_mode(
- t: Tensor,
- ) -> _bool: ...
- def _functionalize_commit_update(t: Tensor) -> None: ...
- def _functionalize_has_metadata_mutation(tensor: Tensor) -> _bool: ...
- def _functionalize_inductor_storage_resized_counter(t: Tensor) -> _int: ...
- def _functionalize_is_symbolic(tensor: Tensor) -> _bool: ...
- def _functionalize_mark_mutation_hidden_from_autograd(t: Tensor) -> None: ...
- def _functionalize_mark_storage_changed(tensor: Tensor) -> _bool: ...
- def _functionalize_mutation_counter(t: Tensor) -> _int: ...
- def _functionalize_replace(self_: Tensor, other: Tensor) -> None: ...
- def _functionalize_storage_changed_counter(t: Tensor) -> _int: ...
- def _functionalize_sync(t: Tensor) -> None: ...
- def _functionalize_unsafe_set(dst: Tensor, src: Tensor) -> None: ...
- def _functionalize_was_inductor_storage_resized(t: Tensor) -> _bool: ...
- def _functionalize_was_storage_changed(tensor: Tensor) -> _bool: ...
- @overload
- def _fused_adagrad_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- grads: tuple[Tensor, ...] | list[Tensor] | None,
- state_sums: tuple[Tensor, ...] | list[Tensor] | None,
- state_steps: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- lr: Tensor,
- lr_decay: _float,
- weight_decay: _float,
- eps: _float,
- maximize: _bool,
- grad_scale: Tensor | None = None,
- found_inf: Tensor | None = None,
- ) -> None: ...
- @overload
- def _fused_adagrad_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- grads: tuple[Tensor, ...] | list[Tensor] | None,
- state_sums: tuple[Tensor, ...] | list[Tensor] | None,
- state_steps: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- lr: _float,
- lr_decay: _float,
- weight_decay: _float,
- eps: _float,
- maximize: _bool,
- grad_scale: Tensor | None = None,
- found_inf: Tensor | None = None,
- ) -> None: ...
- @overload
- def _fused_adam_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- grads: tuple[Tensor, ...] | list[Tensor] | None,
- exp_avgs: tuple[Tensor, ...] | list[Tensor] | None,
- exp_avg_sqs: tuple[Tensor, ...] | list[Tensor] | None,
- max_exp_avg_sqs: tuple[Tensor, ...] | list[Tensor] | None,
- state_steps: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- lr: Tensor,
- beta1: _float,
- beta2: _float,
- weight_decay: _float,
- eps: _float,
- amsgrad: _bool,
- maximize: _bool,
- grad_scale: Tensor | None = None,
- found_inf: Tensor | None = None,
- ) -> None: ...
- @overload
- def _fused_adam_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- grads: tuple[Tensor, ...] | list[Tensor] | None,
- exp_avgs: tuple[Tensor, ...] | list[Tensor] | None,
- exp_avg_sqs: tuple[Tensor, ...] | list[Tensor] | None,
- max_exp_avg_sqs: tuple[Tensor, ...] | list[Tensor] | None,
- state_steps: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- lr: _float,
- beta1: _float,
- beta2: _float,
- weight_decay: _float,
- eps: _float,
- amsgrad: _bool,
- maximize: _bool,
- grad_scale: Tensor | None = None,
- found_inf: Tensor | None = None,
- ) -> None: ...
- @overload
- def _fused_adamw_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- grads: tuple[Tensor, ...] | list[Tensor] | None,
- exp_avgs: tuple[Tensor, ...] | list[Tensor] | None,
- exp_avg_sqs: tuple[Tensor, ...] | list[Tensor] | None,
- max_exp_avg_sqs: tuple[Tensor, ...] | list[Tensor] | None,
- state_steps: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- lr: Tensor,
- beta1: _float,
- beta2: _float,
- weight_decay: _float,
- eps: _float,
- amsgrad: _bool,
- maximize: _bool,
- grad_scale: Tensor | None = None,
- found_inf: Tensor | None = None,
- ) -> None: ...
- @overload
- def _fused_adamw_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- grads: tuple[Tensor, ...] | list[Tensor] | None,
- exp_avgs: tuple[Tensor, ...] | list[Tensor] | None,
- exp_avg_sqs: tuple[Tensor, ...] | list[Tensor] | None,
- max_exp_avg_sqs: tuple[Tensor, ...] | list[Tensor] | None,
- state_steps: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- lr: _float,
- beta1: _float,
- beta2: _float,
- weight_decay: _float,
- eps: _float,
- amsgrad: _bool,
- maximize: _bool,
- grad_scale: Tensor | None = None,
- found_inf: Tensor | None = None,
- ) -> None: ...
- def _fused_dropout(
- input: Tensor,
- p: _float,
- generator: Generator | None = None,
- ) -> tuple[Tensor, Tensor]: ...
- def _fused_moving_avg_obs_fq_helper(
- input: Tensor,
- observer_on: Tensor,
- fake_quant_on: Tensor,
- running_min: Tensor,
- running_max: Tensor,
- scale: Tensor,
- zero_point: Tensor,
- averaging_const: _float,
- quant_min: _int,
- quant_max: _int,
- ch_axis: _int,
- per_row_fake_quant: _bool = False,
- symmetric_quant: _bool = False,
- ) -> torch.return_types._fused_moving_avg_obs_fq_helper: ...
- def _fused_rms_norm(
- input: Tensor,
- normalized_shape: _size,
- weight: Tensor | None,
- eps: _float | None,
- ) -> tuple[Tensor, Tensor]: ...
- def _fused_sdp_choice(
- query: Tensor,
- key: Tensor,
- value: Tensor,
- attn_mask: Tensor | None = None,
- dropout_p: _float = 0.0,
- is_causal: _bool = False,
- *,
- scale: _float | None = None,
- enable_gqa: _bool = False,
- ) -> _int: ...
- @overload
- def _fused_sgd_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- grads: tuple[Tensor, ...] | list[Tensor] | None,
- momentum_buffer_list: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- weight_decay: _float,
- momentum: _float,
- lr: Tensor,
- dampening: _float,
- nesterov: _bool,
- maximize: _bool,
- is_first_step: _bool,
- grad_scale: Tensor | None = None,
- found_inf: Tensor | None = None,
- ) -> None: ...
- @overload
- def _fused_sgd_(
- self: tuple[Tensor, ...] | list[Tensor] | None,
- grads: tuple[Tensor, ...] | list[Tensor] | None,
- momentum_buffer_list: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- weight_decay: _float,
- momentum: _float,
- lr: _float,
- dampening: _float,
- nesterov: _bool,
- maximize: _bool,
- is_first_step: _bool,
- grad_scale: Tensor | None = None,
- found_inf: Tensor | None = None,
- ) -> None: ...
- def _fw_primal_copy(
- input: Tensor,
- level: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _grid_sampler_2d_cpu_fallback(
- input: Tensor,
- grid: Tensor,
- interpolation_mode: _int,
- padding_mode: _int,
- align_corners: _bool,
- ) -> Tensor: ...
- def _grouped_mm(
- input: Tensor,
- mat2: Tensor,
- offs: Tensor | None = None,
- bias: Tensor | None = None,
- out_dtype: _dtype | None = None,
- ) -> Tensor: ...
- def _has_compatible_shallow_copy_type(
- input: Tensor,
- from_: Tensor,
- ) -> _bool: ...
- def _histogramdd_bin_edges(
- input: Tensor,
- bins: _size,
- *,
- range: Sequence[_float] | None = None,
- weight: Tensor | None = None,
- density: _bool = False,
- ) -> tuple[Tensor, ...]: ...
- def _histogramdd_from_bin_cts(
- input: Tensor,
- bins: _size,
- *,
- range: Sequence[_float] | None = None,
- weight: Tensor | None = None,
- density: _bool = False,
- ) -> Tensor: ...
- def _histogramdd_from_bin_tensors(
- input: Tensor,
- bins: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- weight: Tensor | None = None,
- density: _bool = False,
- ) -> Tensor: ...
- def _index_put_impl_(
- input: Tensor,
- indices: tuple[Tensor, ...] | list[Tensor] | None,
- values: Tensor,
- accumulate: _bool = False,
- unsafe: _bool = False,
- ) -> Tensor: ...
- def _indices_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor: ...
- def _int_mm(
- input: Tensor,
- mat2: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _is_all_true(input: Tensor) -> Tensor: ...
- def _is_any_true(input: Tensor) -> Tensor: ...
- def _is_functional_tensor(t: Tensor) -> _bool: ...
- def _is_functional_tensor_base(t: Tensor) -> _bool: ...
- def _is_zerotensor(input: Tensor) -> _bool: ...
- def _lazy_clone(input: Tensor) -> Tensor: ...
- def _linalg_check_errors(
- info: Tensor,
- api_name: str,
- *,
- is_matrix: _bool,
- ) -> None: ...
- def _linalg_det(
- A: Tensor,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types._linalg_det: ...
- def _linalg_eigh(
- A: Tensor,
- UPLO: str = "L",
- compute_v: _bool = True,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types._linalg_eigh: ...
- def _linalg_slogdet(
- A: Tensor,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types._linalg_slogdet: ...
- def _linalg_solve_ex(
- A: Tensor,
- B: Tensor,
- *,
- left: _bool = True,
- check_errors: _bool = False,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types._linalg_solve_ex: ...
- def _linalg_svd(
- A: Tensor,
- full_matrices: _bool = False,
- compute_uv: _bool = True,
- *,
- driver: str | None = None,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types._linalg_svd: ...
- def _log_softmax(
- input: Tensor,
- dim: _int,
- half_to_float: _bool,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _log_softmax_backward_data(
- grad_output: Tensor,
- output: Tensor,
- dim: _int,
- input_dtype: _dtype,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _logcumsumexp(
- input: Tensor,
- dim: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _lstm_mps(
- input: Tensor,
- hx: tuple[Tensor, ...] | list[Tensor] | None,
- params: tuple[Tensor, ...] | list[Tensor] | None,
- has_biases: _bool,
- num_layers: _int,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- batch_first: _bool,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor, Tensor, Tensor]: ...
- def _lu_with_info(
- input: Tensor,
- pivot: _bool = True,
- check_errors: _bool = True,
- ) -> torch.return_types._lu_with_info: ...
- def _make_dep_token(
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor: ...
- def _make_dual(primal: Tensor, tangent: Tensor, level: _int) -> Tensor: ...
- def _make_dual_copy(
- primal: Tensor,
- tangent: Tensor,
- level: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _make_per_channel_quantized_tensor(
- input: Tensor,
- scale: Tensor,
- zero_point: Tensor,
- axis: _int,
- ) -> Tensor: ...
- def _make_per_tensor_quantized_tensor(
- input: Tensor,
- scale: _float,
- zero_point: _int,
- ) -> Tensor: ...
- def _masked_scale(input: Tensor, mask: Tensor, scale: _float) -> Tensor: ...
- def _masked_softmax(
- input: Tensor,
- mask: Tensor,
- dim: _int | None = None,
- mask_type: _int | None = None,
- ) -> Tensor: ...
- def _mixed_dtypes_linear(
- input: Tensor,
- weight: Tensor,
- scale: Tensor,
- *,
- bias: Tensor | None = None,
- activation: str | None = None,
- ) -> Tensor: ...
- def _mkldnn_reshape(input: Tensor, shape: _size) -> Tensor: ...
- def _mkldnn_transpose(input: Tensor, dim0: _int, dim1: _int) -> Tensor: ...
- def _mkldnn_transpose_(input: Tensor, dim0: _int, dim1: _int) -> Tensor: ...
- def _mps_convolution(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- padding: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- ) -> Tensor: ...
- def _mps_convolution_transpose(
- input: Tensor,
- weight: Tensor,
- padding: Sequence[_int | SymInt],
- output_padding: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- ) -> Tensor: ...
- @overload
- def _native_batch_norm_legit(
- input: Tensor,
- weight: Tensor | None,
- bias: Tensor | None,
- running_mean: Tensor,
- running_var: Tensor,
- training: _bool,
- momentum: _float,
- eps: _float,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- @overload
- def _native_batch_norm_legit(
- input: Tensor,
- weight: Tensor | None,
- bias: Tensor | None,
- training: _bool,
- momentum: _float,
- eps: _float,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- def _native_batch_norm_legit_no_training(
- input: Tensor,
- weight: Tensor | None,
- bias: Tensor | None,
- running_mean: Tensor,
- running_var: Tensor,
- momentum: _float,
- eps: _float,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- def _native_multi_head_attention(
- query: Tensor,
- key: Tensor,
- value: Tensor,
- embed_dim: _int,
- num_head: _int,
- qkv_weight: Tensor,
- qkv_bias: Tensor,
- proj_weight: Tensor,
- proj_bias: Tensor,
- mask: Tensor | None = None,
- need_weights: _bool = True,
- average_attn_weights: _bool = True,
- mask_type: _int | None = None,
- ) -> tuple[Tensor, Tensor]: ...
- def _neg_view(input: Tensor) -> Tensor: ...
- def _neg_view_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor: ...
- def _nested_compute_contiguous_strides_offsets(
- nested_size: Tensor,
- ) -> tuple[Tensor, Tensor]: ...
- def _nested_from_padded(
- padded: Tensor,
- cpu_nested_shape_example: Tensor,
- fuse_transform_0213: _bool = False,
- ) -> Tensor: ...
- def _nested_from_padded_and_nested_example(
- padded: Tensor,
- nt_example: Tensor,
- ) -> Tensor: ...
- def _nested_from_padded_tensor(
- padded: Tensor,
- offsets: Tensor,
- dummy: Tensor,
- ragged_idx: _int = 1,
- min_seqlen: Tensor | None = None,
- max_seqlen: Tensor | None = None,
- sum_S: _int | SymInt | None = None,
- ) -> Tensor: ...
- def _nested_get_jagged_dummy(any: Tensor) -> Tensor: ...
- def _nested_get_lengths(input: Tensor) -> Tensor: ...
- def _nested_get_max_seqlen(input: Tensor) -> Tensor: ...
- def _nested_get_min_seqlen(input: Tensor) -> Tensor: ...
- def _nested_get_offsets(input: Tensor) -> Tensor: ...
- def _nested_get_ragged_idx(input: Tensor) -> _int: ...
- def _nested_get_values(input: Tensor) -> Tensor: ...
- def _nested_get_values_copy(
- input: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _nested_tensor_from_mask(
- t: Tensor,
- mask: Tensor,
- mask_check: _bool = True,
- ) -> Tensor: ...
- def _nested_tensor_from_mask_left_aligned(t: Tensor, mask: Tensor) -> _bool: ...
- def _nested_tensor_from_tensor_list(
- list: tuple[Tensor, ...] | list[Tensor] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = None,
- ) -> Tensor: ...
- def _nested_tensor_softmax_with_shape(
- input: Tensor,
- query: Tensor,
- ) -> Tensor: ...
- def _nested_view_from_buffer(
- input: Tensor,
- nested_size: Tensor,
- nested_strides: Tensor,
- offsets: Tensor,
- ) -> Tensor: ...
- def _nested_view_from_buffer_copy(
- input: Tensor,
- nested_size: Tensor,
- nested_strides: Tensor,
- offsets: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _nested_view_from_jagged(
- input: Tensor,
- offsets: Tensor,
- dummy: Tensor,
- lengths: Tensor | None = None,
- ragged_idx: _int = 1,
- min_seqlen: Tensor | None = None,
- max_seqlen: Tensor | None = None,
- ) -> Tensor: ...
- def _nested_view_from_jagged_copy(
- input: Tensor,
- offsets: Tensor,
- dummy: Tensor,
- lengths: Tensor | None = None,
- ragged_idx: _int = 1,
- min_seqlen: Tensor | None = None,
- max_seqlen: Tensor | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _nnpack_available() -> _bool: ...
- def _nnpack_spatial_convolution(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- padding: _int | SymInt | Sequence[_int | SymInt],
- stride: _int | SymInt | Sequence[_int | SymInt] = 1,
- ) -> Tensor: ...
- def _pack_padded_sequence(
- input: Tensor,
- lengths: Tensor,
- batch_first: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- def _pad_packed_sequence(
- data: Tensor,
- batch_sizes: Tensor,
- batch_first: _bool,
- padding_value: Number | _complex,
- total_length: _int,
- ) -> tuple[Tensor, Tensor]: ...
- def _pin_memory(
- input: Tensor,
- device: DeviceLikeType | None = None,
- ) -> Tensor: ...
- def _prelu_kernel(input: Tensor, weight: Tensor) -> Tensor: ...
- def _print(s: str) -> None: ...
- def _propagate_xla_data(input: Tensor, output: Tensor) -> None: ...
- def _remove_batch_dim(
- input: Tensor,
- level: _int,
- batch_size: _int | SymInt,
- out_dim: _int,
- ) -> Tensor: ...
- def _reshape_alias_copy(
- input: Tensor,
- size: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _reshape_from_tensor(input: Tensor, shape: Tensor) -> Tensor: ...
- def _resize_output_(
- input: Tensor,
- size: Sequence[_int | SymInt],
- device: DeviceLikeType | None,
- ) -> Tensor: ...
- def _rowwise_prune(
- weight: Tensor,
- mask: Tensor,
- compressed_indices_dtype: _dtype,
- ) -> tuple[Tensor, Tensor]: ...
- def _safe_softmax(
- input: Tensor,
- dim: _int,
- dtype: _dtype | None = None,
- ) -> Tensor: ...
- def _sample_dirichlet(
- input: Tensor,
- generator: Generator | None = None,
- ) -> Tensor: ...
- def _saturate_weight_to_fp16(weight: Tensor) -> Tensor: ...
- def _scaled_dot_product_attention_math(
- query: Tensor,
- key: Tensor,
- value: Tensor,
- attn_mask: Tensor | None = None,
- dropout_p: _float = 0.0,
- is_causal: _bool = False,
- dropout_mask: Tensor | None = None,
- *,
- scale: _float | None = None,
- enable_gqa: _bool = False,
- ) -> tuple[Tensor, Tensor]: ...
- def _scaled_dot_product_attention_math_for_mps(
- query: Tensor,
- key: Tensor,
- value: Tensor,
- attn_mask: Tensor | None = None,
- dropout_p: _float = 0.0,
- is_causal: _bool = False,
- dropout_mask: Tensor | None = None,
- *,
- scale: _float | None = None,
- ) -> tuple[Tensor, Tensor]: ...
- def _scaled_dot_product_cudnn_attention(
- query: Tensor,
- key: Tensor,
- value: Tensor,
- attn_bias: Tensor | None,
- compute_log_sumexp: _bool,
- dropout_p: _float = 0.0,
- is_causal: _bool = False,
- return_debug_mask: _bool = False,
- *,
- scale: _float | None = None,
- ) -> torch.return_types._scaled_dot_product_cudnn_attention: ...
- def _scaled_dot_product_efficient_attention(
- query: Tensor,
- key: Tensor,
- value: Tensor,
- attn_bias: Tensor | None,
- compute_log_sumexp: _bool,
- dropout_p: _float = 0.0,
- is_causal: _bool = False,
- *,
- scale: _float | None = None,
- ) -> torch.return_types._scaled_dot_product_efficient_attention: ...
- @overload
- def _scaled_dot_product_flash_attention(
- query: Tensor,
- key: Tensor,
- value: Tensor,
- q_descale: Tensor | None,
- k_descale: Tensor | None,
- v_descale: Tensor | None,
- dropout_p: _float = 0.0,
- is_causal: _bool = False,
- return_debug_mask: _bool = False,
- *,
- scale: _float | None = None,
- ) -> torch.return_types._scaled_dot_product_flash_attention: ...
- @overload
- def _scaled_dot_product_flash_attention(
- query: Tensor,
- key: Tensor,
- value: Tensor,
- dropout_p: _float = 0.0,
- is_causal: _bool = False,
- return_debug_mask: _bool = False,
- *,
- scale: _float | None = None,
- ) -> torch.return_types._scaled_dot_product_flash_attention: ...
- def _scaled_dot_product_flash_attention_for_cpu(
- query: Tensor,
- key: Tensor,
- value: Tensor,
- dropout_p: _float = 0.0,
- is_causal: _bool = False,
- *,
- attn_mask: Tensor | None = None,
- scale: _float | None = None,
- ) -> torch.return_types._scaled_dot_product_flash_attention_for_cpu: ...
- def _scaled_grouped_mm(
- input: Tensor,
- mat2: Tensor,
- scale_a: Tensor,
- scale_b: Tensor,
- offs: Tensor | None = None,
- bias: Tensor | None = None,
- scale_result: Tensor | None = None,
- out_dtype: _dtype | None = None,
- use_fast_accum: _bool = False,
- ) -> Tensor: ...
- def _scaled_grouped_mm_v2(
- input: Tensor,
- mat2: Tensor,
- scale_a: tuple[Tensor, ...] | list[Tensor] | None,
- recipe_a: _size,
- swizzle_a: _size,
- scale_b: tuple[Tensor, ...] | list[Tensor] | None,
- recipe_b: _size,
- swizzle_b: _size,
- offs: Tensor | None = None,
- bias: Tensor | None = None,
- out_dtype: _dtype | None = None,
- contraction_dim: _size = (),
- use_fast_accum: _bool = False,
- ) -> Tensor: ...
- def _scaled_mm(
- input: Tensor,
- mat2: Tensor,
- scale_a: Tensor,
- scale_b: Tensor,
- bias: Tensor | None = None,
- scale_result: Tensor | None = None,
- out_dtype: _dtype | None = None,
- use_fast_accum: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _scaled_mm_v2(
- input: Tensor,
- mat2: Tensor,
- scale_a: tuple[Tensor, ...] | list[Tensor] | None,
- recipe_a: _size,
- swizzle_a: _size,
- scale_b: tuple[Tensor, ...] | list[Tensor] | None,
- recipe_b: _size,
- swizzle_b: _size,
- bias: Tensor | None,
- out_dtype: _dtype | None,
- contraction_dim: _size = (),
- use_fast_accum: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _shape_as_tensor(input: Tensor) -> Tensor: ...
- def _sobol_engine_draw(
- quasi: Tensor,
- n: _int,
- sobolstate: Tensor,
- dimension: _int,
- num_generated: _int,
- dtype: _dtype | None,
- ) -> tuple[Tensor, Tensor]: ...
- def _sobol_engine_ff_(
- input: Tensor,
- n: _int,
- sobolstate: Tensor,
- dimension: _int,
- num_generated: _int,
- ) -> Tensor: ...
- def _sobol_engine_initialize_state_(
- input: Tensor,
- dimension: _int,
- ) -> Tensor: ...
- def _sobol_engine_scramble_(
- input: Tensor,
- ltm: Tensor,
- dimension: _int,
- ) -> Tensor: ...
- def _softmax(
- input: Tensor,
- dim: _int,
- half_to_float: _bool,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _softmax_backward_data(
- grad_output: Tensor,
- output: Tensor,
- dim: _int,
- input_dtype: _dtype,
- *,
- grad_input: Tensor | None = None,
- ) -> Tensor: ...
- def _sparse_broadcast_to(input: Tensor, size: _size) -> Tensor: ...
- def _sparse_broadcast_to_copy(
- input: Tensor,
- size: _size,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _sparse_csr_prod(
- input: Tensor,
- dim: _int | _size,
- keepdim: _bool = False,
- *,
- dtype: _dtype | None = None,
- ) -> Tensor: ...
- def _sparse_csr_sum(
- input: Tensor,
- dim: _int | _size,
- keepdim: _bool = False,
- *,
- dtype: _dtype | None = None,
- ) -> Tensor: ...
- def _sparse_log_softmax_backward_data(
- grad_output: Tensor,
- output: Tensor,
- dim: _int,
- input: Tensor,
- ) -> Tensor: ...
- def _sparse_semi_structured_addmm(
- input: Tensor,
- mat1: Tensor,
- mat1_meta: Tensor,
- mat2: Tensor,
- *,
- alpha: Number | _complex = 1,
- beta: Number | _complex = 1,
- out_dtype: _dtype | None = None,
- ) -> Tensor: ...
- def _sparse_semi_structured_apply(
- input: Tensor,
- thread_masks: Tensor,
- ) -> tuple[Tensor, Tensor]: ...
- def _sparse_semi_structured_apply_dense(
- input: Tensor,
- thread_masks: Tensor,
- ) -> Tensor: ...
- def _sparse_semi_structured_linear(
- input: Tensor,
- weight: Tensor,
- meta: Tensor,
- *,
- bias: Tensor | None = None,
- activation: str | None = None,
- out_dtype: _dtype | None = None,
- ) -> Tensor: ...
- def _sparse_semi_structured_mm(
- mat1: Tensor,
- mat1_meta: Tensor,
- mat2: Tensor,
- *,
- out_dtype: _dtype | None = None,
- ) -> Tensor: ...
- def _sparse_semi_structured_tile(
- input: Tensor,
- algorithm: str = "",
- use_cutlass: _bool = True,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor, Tensor]: ...
- def _sparse_softmax_backward_data(
- grad_output: Tensor,
- output: Tensor,
- dim: _int,
- input: Tensor,
- ) -> Tensor: ...
- def _sparse_sparse_matmul(input: Tensor, other: Tensor) -> Tensor: ...
- @overload
- def _sparse_sum(input: Tensor) -> Tensor: ...
- @overload
- def _sparse_sum(input: Tensor, *, dtype: _dtype) -> Tensor: ...
- @overload
- def _sparse_sum(input: Tensor, dim: _int | _size) -> Tensor: ...
- @overload
- def _sparse_sum(
- input: Tensor,
- dim: _int | _size,
- *,
- dtype: _dtype,
- ) -> Tensor: ...
- def _stack(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- dim: _int = 0,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _standard_gamma(
- input: Tensor,
- generator: Generator | None = None,
- ) -> Tensor: ...
- def _standard_gamma_grad(input: Tensor, output: Tensor) -> Tensor: ...
- def _sync(t: Tensor) -> None: ...
- @overload
- def _test_autograd_multiple_dispatch(input: Tensor) -> Tensor: ...
- @overload
- def _test_autograd_multiple_dispatch(input: Tensor, b: _bool) -> Tensor: ...
- def _test_autograd_multiple_dispatch_view(input: Tensor) -> Tensor: ...
- def _test_autograd_multiple_dispatch_view_copy(
- input: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def _test_check_tensor(input: Tensor) -> Tensor: ...
- def _test_functorch_fallback(input: Tensor, other: Tensor) -> Tensor: ...
- def _test_parallel_materialize(
- input: Tensor,
- num_parallel: _int,
- skip_first: _bool = False,
- ) -> Tensor: ...
- def _test_serialization_subcmul(
- input: Tensor,
- other: Tensor,
- alpha: Number | _complex = 1,
- ) -> Tensor: ...
- def _to_cpu(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]: ...
- def _to_functional_tensor(t: Tensor) -> Tensor: ...
- def _to_sparse_semi_structured(dense: Tensor) -> tuple[Tensor, Tensor]: ...
- def _transform_bias_rescale_qkv(
- qkv: Tensor,
- qkv_bias: Tensor,
- num_heads: _int,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- def _transformer_encoder_layer_fwd(
- src: Tensor,
- embed_dim: _int,
- num_heads: _int,
- qkv_weight: Tensor,
- qkv_bias: Tensor,
- proj_weight: Tensor,
- proj_bias: Tensor,
- use_gelu: _bool,
- norm_first: _bool,
- eps: _float,
- norm_weight_1: Tensor,
- norm_bias_1: Tensor,
- norm_weight_2: Tensor,
- norm_bias_2: Tensor,
- ffn_weight_1: Tensor,
- ffn_bias_1: Tensor,
- ffn_weight_2: Tensor,
- ffn_bias_2: Tensor,
- mask: Tensor | None = None,
- mask_type: _int | None = None,
- ) -> Tensor: ...
- def _trilinear(
- i1: Tensor,
- i2: Tensor,
- i3: Tensor,
- expand1: _size,
- expand2: _size,
- expand3: _size,
- sumdim: _size,
- unroll_dim: _int = 1,
- ) -> Tensor: ...
- def _triton_multi_head_attention(
- query: Tensor,
- key: Tensor,
- value: Tensor,
- embed_dim: _int,
- num_head: _int,
- qkv_weight: Tensor,
- qkv_bias: Tensor,
- proj_weight: Tensor,
- proj_bias: Tensor,
- mask: Tensor | None = None,
- ) -> Tensor: ...
- def _triton_scaled_dot_attention(
- q: Tensor,
- k: Tensor,
- v: Tensor,
- dropout_p: _float = 0.0,
- ) -> Tensor: ...
- def _unique(
- input: Tensor,
- sorted: _bool = True,
- return_inverse: _bool = False,
- ) -> tuple[Tensor, Tensor]: ...
- def _unique2(
- input: Tensor,
- sorted: _bool = True,
- return_inverse: _bool = False,
- return_counts: _bool = False,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- def _unpack_dual(
- dual: Tensor,
- level: _int,
- ) -> torch.return_types._unpack_dual: ...
- def _unsafe_index(
- input: Tensor,
- indices: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> Tensor: ...
- def _unsafe_index_put(
- input: Tensor,
- indices: tuple[Tensor, ...] | list[Tensor] | None,
- values: Tensor,
- accumulate: _bool = False,
- ) -> Tensor: ...
- def _unsafe_masked_index(
- input: Tensor,
- mask: Tensor,
- indices: tuple[Tensor, ...] | list[Tensor] | None,
- fill: Number | _complex,
- ) -> Tensor: ...
- def _unsafe_masked_index_put_accumulate(
- input: Tensor,
- mask: Tensor,
- indices: tuple[Tensor, ...] | list[Tensor] | None,
- values: Tensor,
- ) -> Tensor: ...
- @overload
- def _use_cudnn_ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: Tensor,
- target_lengths: Tensor,
- blank: _int,
- ) -> _bool: ...
- @overload
- def _use_cudnn_ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: _size,
- target_lengths: _size,
- blank: _int,
- ) -> _bool: ...
- def _use_cudnn_rnn_flatten_weight() -> _bool: ...
- @overload
- def _use_miopen_ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: Tensor,
- target_lengths: Tensor,
- blank: _int,
- ) -> _bool: ...
- @overload
- def _use_miopen_ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: _size,
- target_lengths: _size,
- blank: _int,
- ) -> _bool: ...
- def _validate_compressed_sparse_indices(
- is_crow: _bool,
- compressed_idx: Tensor,
- plain_idx: Tensor,
- cdim: _int,
- dim: _int,
- nnz: _int,
- ) -> None: ...
- def _validate_sparse_bsc_tensor_args(
- ccol_indices: Tensor,
- row_indices: Tensor,
- values: Tensor,
- size: _size,
- check_pinning: _bool | None = None,
- ) -> None: ...
- def _validate_sparse_bsr_tensor_args(
- crow_indices: Tensor,
- col_indices: Tensor,
- values: Tensor,
- size: _size,
- check_pinning: _bool | None = None,
- ) -> None: ...
- def _validate_sparse_compressed_tensor_args(
- compressed_indices: Tensor,
- plain_indices: Tensor,
- values: Tensor,
- size: _size,
- layout: _layout,
- check_pinning: _bool | None = None,
- ) -> None: ...
- def _validate_sparse_coo_tensor_args(
- indices: Tensor,
- values: Tensor,
- size: _size,
- is_coalesced: _bool | None = None,
- check_pinning: _bool | None = None,
- ) -> None: ...
- def _validate_sparse_csc_tensor_args(
- ccol_indices: Tensor,
- row_indices: Tensor,
- values: Tensor,
- size: _size,
- check_pinning: _bool | None = None,
- ) -> None: ...
- def _validate_sparse_csr_tensor_args(
- crow_indices: Tensor,
- col_indices: Tensor,
- values: Tensor,
- size: _size,
- check_pinning: _bool | None = None,
- ) -> None: ...
- def _values_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor: ...
- def _weight_int4pack_mm(
- input: Tensor,
- mat2: Tensor,
- qGroupSize: _int,
- qScaleAndZeros: Tensor,
- ) -> Tensor: ...
- def _weight_int4pack_mm_for_cpu(
- input: Tensor,
- mat2: Tensor,
- qGroupSize: _int,
- qScaleAndZeros: Tensor,
- ) -> Tensor: ...
- def _weight_int4pack_mm_with_scales_and_zeros(
- input: Tensor,
- mat2: Tensor,
- qGroupSize: _int,
- qScale: Tensor,
- qZeros: Tensor,
- ) -> Tensor: ...
- def _weight_int8pack_mm(
- input: Tensor,
- mat2: Tensor,
- scales: Tensor,
- ) -> Tensor: ...
- def _weight_norm(v: Tensor, g: Tensor, dim: _int = 0) -> Tensor: ...
- def _weight_norm_interface(
- v: Tensor,
- g: Tensor,
- dim: _int = 0,
- ) -> tuple[Tensor, Tensor]: ...
- def _wrapped_linear_prepack(
- weight: Tensor,
- weight_scale: Tensor,
- weight_zero_point: Tensor,
- bias: Tensor,
- ) -> Tensor: ...
- def _wrapped_quantized_linear_prepacked(
- input: Tensor,
- input_scale: Tensor,
- input_zero_point: Tensor,
- packed_weight: Tensor,
- output_scale: Tensor,
- output_zero_point: Tensor,
- out_channel: _int,
- ) -> Tensor: ...
- def abs(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- abs(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Computes the absolute value of each element in :attr:`input`.
- .. math::
- \text{out}_{i} = |\text{input}_{i}|
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.abs(torch.tensor([-1, -2, 3]))
- tensor([ 1, 2, 3])
- """
- def abs_(input: Tensor) -> Tensor: ...
- def absolute(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- absolute(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Alias for :func:`torch.abs`
- """
- def acos(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- acos(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Returns a new tensor with the arccosine (in radians) of each element in :attr:`input`.
- .. math::
- \text{out}_{i} = \cos^{-1}(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.3348, -0.5889, 0.2005, -0.1584])
- >>> torch.acos(a)
- tensor([ 1.2294, 2.2004, 1.3690, 1.7298])
- """
- def acos_(input: Tensor) -> Tensor: ...
- def acosh(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- acosh(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Returns a new tensor with the inverse hyperbolic cosine of the elements of :attr:`input`.
- .. math::
- \text{out}_{i} = \cosh^{-1}(\text{input}_{i})
- Note:
- The domain of the inverse hyperbolic cosine is `[1, inf)` and values outside this range
- will be mapped to ``NaN``, except for `+ INF` for which the output is mapped to `+ INF`.
- Args:
- input (Tensor): the input tensor.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4).uniform_(1, 2)
- >>> a
- tensor([ 1.3192, 1.9915, 1.9674, 1.7151 ])
- >>> torch.acosh(a)
- tensor([ 0.7791, 1.3120, 1.2979, 1.1341 ])
- """
- def acosh_(input: Tensor) -> Tensor: ...
- def adaptive_avg_pool1d(input: Tensor, output_size: _int | _size) -> Tensor: ...
- def adaptive_max_pool1d(
- input: Tensor,
- output_size: _int | _size,
- ) -> tuple[Tensor, Tensor]: ...
- @overload
- def add(
- input: Tensor | Number | _complex,
- other: Tensor | Number | _complex,
- *,
- alpha: Number | _complex | None = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- add(input, other, *, alpha=1, out=None) -> Tensor
- Adds :attr:`other`, scaled by :attr:`alpha`, to :attr:`input`.
- .. math::
- \text{{out}}_i = \text{{input}}_i + \text{{alpha}} \times \text{{other}}_i
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer, float, and complex inputs.
- Args:
- input (Tensor): the input tensor.
- other (Tensor or Number): the tensor or number to add to :attr:`input`.
- Keyword arguments:
- alpha (Number): the multiplier for :attr:`other`.
- out (Tensor, optional): the output tensor.
- Examples::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.0202, 1.0985, 1.3506, -0.6056])
- >>> torch.add(a, 20)
- tensor([ 20.0202, 21.0985, 21.3506, 19.3944])
- >>> b = torch.randn(4)
- >>> b
- tensor([-0.9732, -0.3497, 0.6245, 0.4022])
- >>> c = torch.randn(4, 1)
- >>> c
- tensor([[ 0.3743],
- [-1.7724],
- [-0.5811],
- [-0.8017]])
- >>> torch.add(b, c, alpha=10)
- tensor([[ 2.7695, 3.3930, 4.3672, 4.1450],
- [-18.6971, -18.0736, -17.0994, -17.3216],
- [ -6.7845, -6.1610, -5.1868, -5.4090],
- [ -8.9902, -8.3667, -7.3925, -7.6147]])
- """
- @overload
- def add(self: Tensor, alpha: Number | _complex, other: Tensor) -> Tensor:
- r"""
- add(input, other, *, alpha=1, out=None) -> Tensor
- Adds :attr:`other`, scaled by :attr:`alpha`, to :attr:`input`.
- .. math::
- \text{{out}}_i = \text{{input}}_i + \text{{alpha}} \times \text{{other}}_i
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer, float, and complex inputs.
- Args:
- input (Tensor): the input tensor.
- other (Tensor or Number): the tensor or number to add to :attr:`input`.
- Keyword arguments:
- alpha (Number): the multiplier for :attr:`other`.
- out (Tensor, optional): the output tensor.
- Examples::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.0202, 1.0985, 1.3506, -0.6056])
- >>> torch.add(a, 20)
- tensor([ 20.0202, 21.0985, 21.3506, 19.3944])
- >>> b = torch.randn(4)
- >>> b
- tensor([-0.9732, -0.3497, 0.6245, 0.4022])
- >>> c = torch.randn(4, 1)
- >>> c
- tensor([[ 0.3743],
- [-1.7724],
- [-0.5811],
- [-0.8017]])
- >>> torch.add(b, c, alpha=10)
- tensor([[ 2.7695, 3.3930, 4.3672, 4.1450],
- [-18.6971, -18.0736, -17.0994, -17.3216],
- [ -6.7845, -6.1610, -5.1868, -5.4090],
- [ -8.9902, -8.3667, -7.3925, -7.6147]])
- """
- @overload
- def add(
- self: Tensor,
- alpha: Number | _complex,
- other: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- add(input, other, *, alpha=1, out=None) -> Tensor
- Adds :attr:`other`, scaled by :attr:`alpha`, to :attr:`input`.
- .. math::
- \text{{out}}_i = \text{{input}}_i + \text{{alpha}} \times \text{{other}}_i
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer, float, and complex inputs.
- Args:
- input (Tensor): the input tensor.
- other (Tensor or Number): the tensor or number to add to :attr:`input`.
- Keyword arguments:
- alpha (Number): the multiplier for :attr:`other`.
- out (Tensor, optional): the output tensor.
- Examples::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.0202, 1.0985, 1.3506, -0.6056])
- >>> torch.add(a, 20)
- tensor([ 20.0202, 21.0985, 21.3506, 19.3944])
- >>> b = torch.randn(4)
- >>> b
- tensor([-0.9732, -0.3497, 0.6245, 0.4022])
- >>> c = torch.randn(4, 1)
- >>> c
- tensor([[ 0.3743],
- [-1.7724],
- [-0.5811],
- [-0.8017]])
- >>> torch.add(b, c, alpha=10)
- tensor([[ 2.7695, 3.3930, 4.3672, 4.1450],
- [-18.6971, -18.0736, -17.0994, -17.3216],
- [ -6.7845, -6.1610, -5.1868, -5.4090],
- [ -8.9902, -8.3667, -7.3925, -7.6147]])
- """
- @overload
- def addbmm(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- batch1: Tensor,
- batch2: Tensor,
- ) -> Tensor:
- r"""
- addbmm(input, batch1, batch2, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices stored
- in :attr:`batch1` and :attr:`batch2`,
- with a reduced add step (all matrix multiplications get accumulated
- along the first dimension).
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the
- same number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- .. math::
- out = \beta\ \text{input} + \alpha\ (\sum_{i=0}^{b-1} \text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and :attr:`alpha`
- must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for `batch1 @ batch2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.addbmm(M, batch1, batch2)
- tensor([[ 6.6311, 0.0503, 6.9768, -12.0362, -2.1653],
- [ -4.8185, -1.4255, -6.6760, 8.9453, 2.5743],
- [ -3.8202, 4.3691, 1.0943, -1.1109, 5.4730]])
- """
- @overload
- def addbmm(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- batch1: Tensor,
- batch2: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- addbmm(input, batch1, batch2, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices stored
- in :attr:`batch1` and :attr:`batch2`,
- with a reduced add step (all matrix multiplications get accumulated
- along the first dimension).
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the
- same number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- .. math::
- out = \beta\ \text{input} + \alpha\ (\sum_{i=0}^{b-1} \text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and :attr:`alpha`
- must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for `batch1 @ batch2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.addbmm(M, batch1, batch2)
- tensor([[ 6.6311, 0.0503, 6.9768, -12.0362, -2.1653],
- [ -4.8185, -1.4255, -6.6760, 8.9453, 2.5743],
- [ -3.8202, 4.3691, 1.0943, -1.1109, 5.4730]])
- """
- @overload
- def addbmm(
- input: Tensor,
- batch1: Tensor,
- batch2: Tensor,
- *,
- beta: Number | _complex = 1,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- addbmm(input, batch1, batch2, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices stored
- in :attr:`batch1` and :attr:`batch2`,
- with a reduced add step (all matrix multiplications get accumulated
- along the first dimension).
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the
- same number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- .. math::
- out = \beta\ \text{input} + \alpha\ (\sum_{i=0}^{b-1} \text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and :attr:`alpha`
- must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for `batch1 @ batch2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.addbmm(M, batch1, batch2)
- tensor([[ 6.6311, 0.0503, 6.9768, -12.0362, -2.1653],
- [ -4.8185, -1.4255, -6.6760, 8.9453, 2.5743],
- [ -3.8202, 4.3691, 1.0943, -1.1109, 5.4730]])
- """
- @overload
- def addbmm(
- beta: Number | _complex,
- self: Tensor,
- batch1: Tensor,
- batch2: Tensor,
- ) -> Tensor:
- r"""
- addbmm(input, batch1, batch2, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices stored
- in :attr:`batch1` and :attr:`batch2`,
- with a reduced add step (all matrix multiplications get accumulated
- along the first dimension).
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the
- same number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- .. math::
- out = \beta\ \text{input} + \alpha\ (\sum_{i=0}^{b-1} \text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and :attr:`alpha`
- must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for `batch1 @ batch2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.addbmm(M, batch1, batch2)
- tensor([[ 6.6311, 0.0503, 6.9768, -12.0362, -2.1653],
- [ -4.8185, -1.4255, -6.6760, 8.9453, 2.5743],
- [ -3.8202, 4.3691, 1.0943, -1.1109, 5.4730]])
- """
- @overload
- def addbmm(
- beta: Number | _complex,
- self: Tensor,
- batch1: Tensor,
- batch2: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- addbmm(input, batch1, batch2, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices stored
- in :attr:`batch1` and :attr:`batch2`,
- with a reduced add step (all matrix multiplications get accumulated
- along the first dimension).
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the
- same number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- .. math::
- out = \beta\ \text{input} + \alpha\ (\sum_{i=0}^{b-1} \text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and :attr:`alpha`
- must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for `batch1 @ batch2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.addbmm(M, batch1, batch2)
- tensor([[ 6.6311, 0.0503, 6.9768, -12.0362, -2.1653],
- [ -4.8185, -1.4255, -6.6760, 8.9453, 2.5743],
- [ -3.8202, 4.3691, 1.0943, -1.1109, 5.4730]])
- """
- @overload
- def addcdiv(
- self: Tensor,
- value: Number | _complex,
- tensor1: Tensor,
- tensor2: Tensor,
- ) -> Tensor:
- r"""
- addcdiv(input, tensor1, tensor2, *, value=1, out=None) -> Tensor
- Performs the element-wise division of :attr:`tensor1` by :attr:`tensor2`,
- multiplies the result by the scalar :attr:`value` and adds it to :attr:`input`.
- .. warning::
- Integer division with addcdiv is no longer supported, and in a future
- release addcdiv will perform a true division of tensor1 and tensor2.
- The historic addcdiv behavior can be implemented as
- (input + value * torch.trunc(tensor1 / tensor2)).to(input.dtype)
- for integer inputs and as (input + value * tensor1 / tensor2) for float inputs.
- The future addcdiv behavior is just the latter implementation:
- (input + value * tensor1 / tensor2), for all dtypes.
- .. math::
- \text{out}_i = \text{input}_i + \text{value} \times \frac{\text{tensor1}_i}{\text{tensor2}_i}
- The shapes of :attr:`input`, :attr:`tensor1`, and :attr:`tensor2` must be
- :ref:`broadcastable <broadcasting-semantics>`.
- For inputs of type `FloatTensor` or `DoubleTensor`, :attr:`value` must be
- a real number, otherwise an integer.
- Args:
- input (Tensor): the tensor to be added
- tensor1 (Tensor): the numerator tensor
- tensor2 (Tensor): the denominator tensor
- Keyword args:
- value (Number, optional): multiplier for :math:`\text{tensor1} / \text{tensor2}`
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.randn(1, 3)
- >>> t1 = torch.randn(3, 1)
- >>> t2 = torch.randn(1, 3)
- >>> torch.addcdiv(t, t1, t2, value=0.1)
- tensor([[-0.2312, -3.6496, 0.1312],
- [-1.0428, 3.4292, -0.1030],
- [-0.5369, -0.9829, 0.0430]])
- """
- @overload
- def addcdiv(
- self: Tensor,
- value: Number | _complex,
- tensor1: Tensor,
- tensor2: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- addcdiv(input, tensor1, tensor2, *, value=1, out=None) -> Tensor
- Performs the element-wise division of :attr:`tensor1` by :attr:`tensor2`,
- multiplies the result by the scalar :attr:`value` and adds it to :attr:`input`.
- .. warning::
- Integer division with addcdiv is no longer supported, and in a future
- release addcdiv will perform a true division of tensor1 and tensor2.
- The historic addcdiv behavior can be implemented as
- (input + value * torch.trunc(tensor1 / tensor2)).to(input.dtype)
- for integer inputs and as (input + value * tensor1 / tensor2) for float inputs.
- The future addcdiv behavior is just the latter implementation:
- (input + value * tensor1 / tensor2), for all dtypes.
- .. math::
- \text{out}_i = \text{input}_i + \text{value} \times \frac{\text{tensor1}_i}{\text{tensor2}_i}
- The shapes of :attr:`input`, :attr:`tensor1`, and :attr:`tensor2` must be
- :ref:`broadcastable <broadcasting-semantics>`.
- For inputs of type `FloatTensor` or `DoubleTensor`, :attr:`value` must be
- a real number, otherwise an integer.
- Args:
- input (Tensor): the tensor to be added
- tensor1 (Tensor): the numerator tensor
- tensor2 (Tensor): the denominator tensor
- Keyword args:
- value (Number, optional): multiplier for :math:`\text{tensor1} / \text{tensor2}`
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.randn(1, 3)
- >>> t1 = torch.randn(3, 1)
- >>> t2 = torch.randn(1, 3)
- >>> torch.addcdiv(t, t1, t2, value=0.1)
- tensor([[-0.2312, -3.6496, 0.1312],
- [-1.0428, 3.4292, -0.1030],
- [-0.5369, -0.9829, 0.0430]])
- """
- @overload
- def addcdiv(
- input: Tensor,
- tensor1: Tensor,
- tensor2: Tensor,
- *,
- value: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- addcdiv(input, tensor1, tensor2, *, value=1, out=None) -> Tensor
- Performs the element-wise division of :attr:`tensor1` by :attr:`tensor2`,
- multiplies the result by the scalar :attr:`value` and adds it to :attr:`input`.
- .. warning::
- Integer division with addcdiv is no longer supported, and in a future
- release addcdiv will perform a true division of tensor1 and tensor2.
- The historic addcdiv behavior can be implemented as
- (input + value * torch.trunc(tensor1 / tensor2)).to(input.dtype)
- for integer inputs and as (input + value * tensor1 / tensor2) for float inputs.
- The future addcdiv behavior is just the latter implementation:
- (input + value * tensor1 / tensor2), for all dtypes.
- .. math::
- \text{out}_i = \text{input}_i + \text{value} \times \frac{\text{tensor1}_i}{\text{tensor2}_i}
- The shapes of :attr:`input`, :attr:`tensor1`, and :attr:`tensor2` must be
- :ref:`broadcastable <broadcasting-semantics>`.
- For inputs of type `FloatTensor` or `DoubleTensor`, :attr:`value` must be
- a real number, otherwise an integer.
- Args:
- input (Tensor): the tensor to be added
- tensor1 (Tensor): the numerator tensor
- tensor2 (Tensor): the denominator tensor
- Keyword args:
- value (Number, optional): multiplier for :math:`\text{tensor1} / \text{tensor2}`
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.randn(1, 3)
- >>> t1 = torch.randn(3, 1)
- >>> t2 = torch.randn(1, 3)
- >>> torch.addcdiv(t, t1, t2, value=0.1)
- tensor([[-0.2312, -3.6496, 0.1312],
- [-1.0428, 3.4292, -0.1030],
- [-0.5369, -0.9829, 0.0430]])
- """
- @overload
- def addcmul(
- self: Tensor,
- value: Number | _complex,
- tensor1: Tensor,
- tensor2: Tensor,
- ) -> Tensor:
- r"""
- addcmul(input, tensor1, tensor2, *, value=1, out=None) -> Tensor
- Performs the element-wise multiplication of :attr:`tensor1`
- by :attr:`tensor2`, multiplies the result by the scalar :attr:`value`
- and adds it to :attr:`input`.
- .. math::
- \text{out}_i = \text{input}_i + \text{value} \times \text{tensor1}_i \times \text{tensor2}_i
- The shapes of :attr:`tensor`, :attr:`tensor1`, and :attr:`tensor2` must be
- :ref:`broadcastable <broadcasting-semantics>`.
- For inputs of type `FloatTensor` or `DoubleTensor`, :attr:`value` must be
- a real number, otherwise an integer.
- Args:
- input (Tensor): the tensor to be added
- tensor1 (Tensor): the tensor to be multiplied
- tensor2 (Tensor): the tensor to be multiplied
- Keyword args:
- value (Number, optional): multiplier for :math:`tensor1 .* tensor2`
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.randn(1, 3)
- >>> t1 = torch.randn(3, 1)
- >>> t2 = torch.randn(1, 3)
- >>> torch.addcmul(t, t1, t2, value=0.1)
- tensor([[-0.8635, -0.6391, 1.6174],
- [-0.7617, -0.5879, 1.7388],
- [-0.8353, -0.6249, 1.6511]])
- """
- @overload
- def addcmul(
- self: Tensor,
- value: Number | _complex,
- tensor1: Tensor,
- tensor2: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- addcmul(input, tensor1, tensor2, *, value=1, out=None) -> Tensor
- Performs the element-wise multiplication of :attr:`tensor1`
- by :attr:`tensor2`, multiplies the result by the scalar :attr:`value`
- and adds it to :attr:`input`.
- .. math::
- \text{out}_i = \text{input}_i + \text{value} \times \text{tensor1}_i \times \text{tensor2}_i
- The shapes of :attr:`tensor`, :attr:`tensor1`, and :attr:`tensor2` must be
- :ref:`broadcastable <broadcasting-semantics>`.
- For inputs of type `FloatTensor` or `DoubleTensor`, :attr:`value` must be
- a real number, otherwise an integer.
- Args:
- input (Tensor): the tensor to be added
- tensor1 (Tensor): the tensor to be multiplied
- tensor2 (Tensor): the tensor to be multiplied
- Keyword args:
- value (Number, optional): multiplier for :math:`tensor1 .* tensor2`
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.randn(1, 3)
- >>> t1 = torch.randn(3, 1)
- >>> t2 = torch.randn(1, 3)
- >>> torch.addcmul(t, t1, t2, value=0.1)
- tensor([[-0.8635, -0.6391, 1.6174],
- [-0.7617, -0.5879, 1.7388],
- [-0.8353, -0.6249, 1.6511]])
- """
- @overload
- def addcmul(
- input: Tensor,
- tensor1: Tensor,
- tensor2: Tensor,
- *,
- value: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- addcmul(input, tensor1, tensor2, *, value=1, out=None) -> Tensor
- Performs the element-wise multiplication of :attr:`tensor1`
- by :attr:`tensor2`, multiplies the result by the scalar :attr:`value`
- and adds it to :attr:`input`.
- .. math::
- \text{out}_i = \text{input}_i + \text{value} \times \text{tensor1}_i \times \text{tensor2}_i
- The shapes of :attr:`tensor`, :attr:`tensor1`, and :attr:`tensor2` must be
- :ref:`broadcastable <broadcasting-semantics>`.
- For inputs of type `FloatTensor` or `DoubleTensor`, :attr:`value` must be
- a real number, otherwise an integer.
- Args:
- input (Tensor): the tensor to be added
- tensor1 (Tensor): the tensor to be multiplied
- tensor2 (Tensor): the tensor to be multiplied
- Keyword args:
- value (Number, optional): multiplier for :math:`tensor1 .* tensor2`
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.randn(1, 3)
- >>> t1 = torch.randn(3, 1)
- >>> t2 = torch.randn(1, 3)
- >>> torch.addcmul(t, t1, t2, value=0.1)
- tensor([[-0.8635, -0.6391, 1.6174],
- [-0.7617, -0.5879, 1.7388],
- [-0.8353, -0.6249, 1.6511]])
- """
- @overload
- def addmm(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- mat1: Tensor,
- mat2: Tensor,
- ) -> Tensor:
- r"""
- addmm(input, mat1, mat2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix multiplication of the matrices :attr:`mat1` and :attr:`mat2`.
- The matrix :attr:`input` is added to the final result.
- If :attr:`mat1` is a :math:`(n \times m)` tensor, :attr:`mat2` is a
- :math:`(m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat1` and :attr:`mat2` and the added matrix :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat1}_i \mathbin{@} \text{mat2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operation has support for arguments with :ref:`sparse layouts<sparse-docs>`. If
- :attr:`input` is sparse the result will have the same layout and if :attr:`out`
- is provided it must have the same layout as :attr:`input`.
- .. warning::
- Sparse support is a beta feature and some layout(s)/dtype/device combinations may not be supported,
- or may not have autograd support. If you notice missing functionality please
- open a feature request.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- mat1 (Tensor): the first matrix to be matrix multiplied
- mat2 (Tensor): the second matrix to be matrix multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat1 @ mat2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2, 3)
- >>> mat1 = torch.randn(2, 3)
- >>> mat2 = torch.randn(3, 3)
- >>> torch.addmm(M, mat1, mat2)
- tensor([[-4.8716, 1.4671, -1.3746],
- [ 0.7573, -3.9555, -2.8681]])
- """
- @overload
- def addmm(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- mat1: Tensor,
- mat2: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- addmm(input, mat1, mat2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix multiplication of the matrices :attr:`mat1` and :attr:`mat2`.
- The matrix :attr:`input` is added to the final result.
- If :attr:`mat1` is a :math:`(n \times m)` tensor, :attr:`mat2` is a
- :math:`(m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat1` and :attr:`mat2` and the added matrix :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat1}_i \mathbin{@} \text{mat2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operation has support for arguments with :ref:`sparse layouts<sparse-docs>`. If
- :attr:`input` is sparse the result will have the same layout and if :attr:`out`
- is provided it must have the same layout as :attr:`input`.
- .. warning::
- Sparse support is a beta feature and some layout(s)/dtype/device combinations may not be supported,
- or may not have autograd support. If you notice missing functionality please
- open a feature request.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- mat1 (Tensor): the first matrix to be matrix multiplied
- mat2 (Tensor): the second matrix to be matrix multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat1 @ mat2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2, 3)
- >>> mat1 = torch.randn(2, 3)
- >>> mat2 = torch.randn(3, 3)
- >>> torch.addmm(M, mat1, mat2)
- tensor([[-4.8716, 1.4671, -1.3746],
- [ 0.7573, -3.9555, -2.8681]])
- """
- @overload
- def addmm(
- input: Tensor,
- mat1: Tensor,
- mat2: Tensor,
- *,
- beta: Number | _complex = 1,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- addmm(input, mat1, mat2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix multiplication of the matrices :attr:`mat1` and :attr:`mat2`.
- The matrix :attr:`input` is added to the final result.
- If :attr:`mat1` is a :math:`(n \times m)` tensor, :attr:`mat2` is a
- :math:`(m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat1` and :attr:`mat2` and the added matrix :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat1}_i \mathbin{@} \text{mat2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operation has support for arguments with :ref:`sparse layouts<sparse-docs>`. If
- :attr:`input` is sparse the result will have the same layout and if :attr:`out`
- is provided it must have the same layout as :attr:`input`.
- .. warning::
- Sparse support is a beta feature and some layout(s)/dtype/device combinations may not be supported,
- or may not have autograd support. If you notice missing functionality please
- open a feature request.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- mat1 (Tensor): the first matrix to be matrix multiplied
- mat2 (Tensor): the second matrix to be matrix multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat1 @ mat2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2, 3)
- >>> mat1 = torch.randn(2, 3)
- >>> mat2 = torch.randn(3, 3)
- >>> torch.addmm(M, mat1, mat2)
- tensor([[-4.8716, 1.4671, -1.3746],
- [ 0.7573, -3.9555, -2.8681]])
- """
- @overload
- def addmm(
- input: Tensor,
- mat1: Tensor,
- mat2: Tensor,
- out_dtype: _dtype,
- *,
- beta: Number | _complex = 1,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- addmm(input, mat1, mat2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix multiplication of the matrices :attr:`mat1` and :attr:`mat2`.
- The matrix :attr:`input` is added to the final result.
- If :attr:`mat1` is a :math:`(n \times m)` tensor, :attr:`mat2` is a
- :math:`(m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat1` and :attr:`mat2` and the added matrix :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat1}_i \mathbin{@} \text{mat2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operation has support for arguments with :ref:`sparse layouts<sparse-docs>`. If
- :attr:`input` is sparse the result will have the same layout and if :attr:`out`
- is provided it must have the same layout as :attr:`input`.
- .. warning::
- Sparse support is a beta feature and some layout(s)/dtype/device combinations may not be supported,
- or may not have autograd support. If you notice missing functionality please
- open a feature request.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- mat1 (Tensor): the first matrix to be matrix multiplied
- mat2 (Tensor): the second matrix to be matrix multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat1 @ mat2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2, 3)
- >>> mat1 = torch.randn(2, 3)
- >>> mat2 = torch.randn(3, 3)
- >>> torch.addmm(M, mat1, mat2)
- tensor([[-4.8716, 1.4671, -1.3746],
- [ 0.7573, -3.9555, -2.8681]])
- """
- @overload
- def addmm(
- beta: Number | _complex,
- self: Tensor,
- mat1: Tensor,
- mat2: Tensor,
- ) -> Tensor:
- r"""
- addmm(input, mat1, mat2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix multiplication of the matrices :attr:`mat1` and :attr:`mat2`.
- The matrix :attr:`input` is added to the final result.
- If :attr:`mat1` is a :math:`(n \times m)` tensor, :attr:`mat2` is a
- :math:`(m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat1` and :attr:`mat2` and the added matrix :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat1}_i \mathbin{@} \text{mat2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operation has support for arguments with :ref:`sparse layouts<sparse-docs>`. If
- :attr:`input` is sparse the result will have the same layout and if :attr:`out`
- is provided it must have the same layout as :attr:`input`.
- .. warning::
- Sparse support is a beta feature and some layout(s)/dtype/device combinations may not be supported,
- or may not have autograd support. If you notice missing functionality please
- open a feature request.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- mat1 (Tensor): the first matrix to be matrix multiplied
- mat2 (Tensor): the second matrix to be matrix multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat1 @ mat2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2, 3)
- >>> mat1 = torch.randn(2, 3)
- >>> mat2 = torch.randn(3, 3)
- >>> torch.addmm(M, mat1, mat2)
- tensor([[-4.8716, 1.4671, -1.3746],
- [ 0.7573, -3.9555, -2.8681]])
- """
- @overload
- def addmm(
- beta: Number | _complex,
- self: Tensor,
- mat1: Tensor,
- mat2: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- addmm(input, mat1, mat2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix multiplication of the matrices :attr:`mat1` and :attr:`mat2`.
- The matrix :attr:`input` is added to the final result.
- If :attr:`mat1` is a :math:`(n \times m)` tensor, :attr:`mat2` is a
- :math:`(m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
- and :attr:`out` will be a :math:`(n \times p)` tensor.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat1` and :attr:`mat2` and the added matrix :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat1}_i \mathbin{@} \text{mat2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operation has support for arguments with :ref:`sparse layouts<sparse-docs>`. If
- :attr:`input` is sparse the result will have the same layout and if :attr:`out`
- is provided it must have the same layout as :attr:`input`.
- .. warning::
- Sparse support is a beta feature and some layout(s)/dtype/device combinations may not be supported,
- or may not have autograd support. If you notice missing functionality please
- open a feature request.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): matrix to be added
- mat1 (Tensor): the first matrix to be matrix multiplied
- mat2 (Tensor): the second matrix to be matrix multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat1 @ mat2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2, 3)
- >>> mat1 = torch.randn(2, 3)
- >>> mat2 = torch.randn(3, 3)
- >>> torch.addmm(M, mat1, mat2)
- tensor([[-4.8716, 1.4671, -1.3746],
- [ 0.7573, -3.9555, -2.8681]])
- """
- @overload
- def addmv(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- mat: Tensor,
- vec: Tensor,
- ) -> Tensor:
- r"""
- addmv(input, mat, vec, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix-vector product of the matrix :attr:`mat` and
- the vector :attr:`vec`.
- The vector :attr:`input` is added to the final result.
- If :attr:`mat` is a :math:`(n \times m)` tensor, :attr:`vec` is a 1-D tensor of
- size `m`, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a 1-D tensor of size `n` and
- :attr:`out` will be 1-D tensor of size `n`.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat` and :attr:`vec` and the added tensor :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat} \mathbin{@} \text{vec})
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- Args:
- input (Tensor): vector to be added
- mat (Tensor): matrix to be matrix multiplied
- vec (Tensor): vector to be matrix multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat @ vec` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2)
- >>> mat = torch.randn(2, 3)
- >>> vec = torch.randn(3)
- >>> torch.addmv(M, mat, vec)
- tensor([-0.3768, -5.5565])
- """
- @overload
- def addmv(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- mat: Tensor,
- vec: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- addmv(input, mat, vec, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix-vector product of the matrix :attr:`mat` and
- the vector :attr:`vec`.
- The vector :attr:`input` is added to the final result.
- If :attr:`mat` is a :math:`(n \times m)` tensor, :attr:`vec` is a 1-D tensor of
- size `m`, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a 1-D tensor of size `n` and
- :attr:`out` will be 1-D tensor of size `n`.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat` and :attr:`vec` and the added tensor :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat} \mathbin{@} \text{vec})
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- Args:
- input (Tensor): vector to be added
- mat (Tensor): matrix to be matrix multiplied
- vec (Tensor): vector to be matrix multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat @ vec` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2)
- >>> mat = torch.randn(2, 3)
- >>> vec = torch.randn(3)
- >>> torch.addmv(M, mat, vec)
- tensor([-0.3768, -5.5565])
- """
- @overload
- def addmv(
- input: Tensor,
- mat: Tensor,
- vec: Tensor,
- *,
- beta: Number | _complex = 1,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- addmv(input, mat, vec, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix-vector product of the matrix :attr:`mat` and
- the vector :attr:`vec`.
- The vector :attr:`input` is added to the final result.
- If :attr:`mat` is a :math:`(n \times m)` tensor, :attr:`vec` is a 1-D tensor of
- size `m`, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a 1-D tensor of size `n` and
- :attr:`out` will be 1-D tensor of size `n`.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat` and :attr:`vec` and the added tensor :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat} \mathbin{@} \text{vec})
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- Args:
- input (Tensor): vector to be added
- mat (Tensor): matrix to be matrix multiplied
- vec (Tensor): vector to be matrix multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat @ vec` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2)
- >>> mat = torch.randn(2, 3)
- >>> vec = torch.randn(3)
- >>> torch.addmv(M, mat, vec)
- tensor([-0.3768, -5.5565])
- """
- @overload
- def addmv(
- beta: Number | _complex,
- self: Tensor,
- mat: Tensor,
- vec: Tensor,
- ) -> Tensor:
- r"""
- addmv(input, mat, vec, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix-vector product of the matrix :attr:`mat` and
- the vector :attr:`vec`.
- The vector :attr:`input` is added to the final result.
- If :attr:`mat` is a :math:`(n \times m)` tensor, :attr:`vec` is a 1-D tensor of
- size `m`, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a 1-D tensor of size `n` and
- :attr:`out` will be 1-D tensor of size `n`.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat` and :attr:`vec` and the added tensor :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat} \mathbin{@} \text{vec})
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- Args:
- input (Tensor): vector to be added
- mat (Tensor): matrix to be matrix multiplied
- vec (Tensor): vector to be matrix multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat @ vec` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2)
- >>> mat = torch.randn(2, 3)
- >>> vec = torch.randn(3)
- >>> torch.addmv(M, mat, vec)
- tensor([-0.3768, -5.5565])
- """
- @overload
- def addmv(
- beta: Number | _complex,
- self: Tensor,
- mat: Tensor,
- vec: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- addmv(input, mat, vec, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a matrix-vector product of the matrix :attr:`mat` and
- the vector :attr:`vec`.
- The vector :attr:`input` is added to the final result.
- If :attr:`mat` is a :math:`(n \times m)` tensor, :attr:`vec` is a 1-D tensor of
- size `m`, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a 1-D tensor of size `n` and
- :attr:`out` will be 1-D tensor of size `n`.
- :attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
- :attr:`mat` and :attr:`vec` and the added tensor :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{mat} \mathbin{@} \text{vec})
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- Args:
- input (Tensor): vector to be added
- mat (Tensor): matrix to be matrix multiplied
- vec (Tensor): vector to be matrix multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat @ vec` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(2)
- >>> mat = torch.randn(2, 3)
- >>> vec = torch.randn(3)
- >>> torch.addmv(M, mat, vec)
- tensor([-0.3768, -5.5565])
- """
- @overload
- def addmv_(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- mat: Tensor,
- vec: Tensor,
- ) -> Tensor: ...
- @overload
- def addmv_(
- input: Tensor,
- mat: Tensor,
- vec: Tensor,
- *,
- beta: Number | _complex = 1,
- alpha: Number | _complex = 1,
- ) -> Tensor: ...
- @overload
- def addmv_(
- beta: Number | _complex,
- self: Tensor,
- mat: Tensor,
- vec: Tensor,
- ) -> Tensor: ...
- @overload
- def addr(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- vec1: Tensor,
- vec2: Tensor,
- ) -> Tensor:
- r"""
- addr(input, vec1, vec2, *, beta=1, alpha=1, out=None) -> Tensor
- Performs the outer-product of vectors :attr:`vec1` and :attr:`vec2`
- and adds it to the matrix :attr:`input`.
- Optional values :attr:`beta` and :attr:`alpha` are scaling factors on the
- outer product between :attr:`vec1` and :attr:`vec2` and the added matrix
- :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{vec1} \otimes \text{vec2})
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- If :attr:`vec1` is a vector of size `n` and :attr:`vec2` is a vector
- of size `m`, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a matrix of size
- :math:`(n \times m)` and :attr:`out` will be a matrix of size
- :math:`(n \times m)`.
- Args:
- input (Tensor): matrix to be added
- vec1 (Tensor): the first vector of the outer product
- vec2 (Tensor): the second vector of the outer product
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{vec1} \otimes \text{vec2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> vec1 = torch.arange(1., 4.)
- >>> vec2 = torch.arange(1., 3.)
- >>> M = torch.zeros(3, 2)
- >>> torch.addr(M, vec1, vec2)
- tensor([[ 1., 2.],
- [ 2., 4.],
- [ 3., 6.]])
- """
- @overload
- def addr(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- vec1: Tensor,
- vec2: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- addr(input, vec1, vec2, *, beta=1, alpha=1, out=None) -> Tensor
- Performs the outer-product of vectors :attr:`vec1` and :attr:`vec2`
- and adds it to the matrix :attr:`input`.
- Optional values :attr:`beta` and :attr:`alpha` are scaling factors on the
- outer product between :attr:`vec1` and :attr:`vec2` and the added matrix
- :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{vec1} \otimes \text{vec2})
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- If :attr:`vec1` is a vector of size `n` and :attr:`vec2` is a vector
- of size `m`, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a matrix of size
- :math:`(n \times m)` and :attr:`out` will be a matrix of size
- :math:`(n \times m)`.
- Args:
- input (Tensor): matrix to be added
- vec1 (Tensor): the first vector of the outer product
- vec2 (Tensor): the second vector of the outer product
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{vec1} \otimes \text{vec2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> vec1 = torch.arange(1., 4.)
- >>> vec2 = torch.arange(1., 3.)
- >>> M = torch.zeros(3, 2)
- >>> torch.addr(M, vec1, vec2)
- tensor([[ 1., 2.],
- [ 2., 4.],
- [ 3., 6.]])
- """
- @overload
- def addr(
- input: Tensor,
- vec1: Tensor,
- vec2: Tensor,
- *,
- beta: Number | _complex = 1,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- addr(input, vec1, vec2, *, beta=1, alpha=1, out=None) -> Tensor
- Performs the outer-product of vectors :attr:`vec1` and :attr:`vec2`
- and adds it to the matrix :attr:`input`.
- Optional values :attr:`beta` and :attr:`alpha` are scaling factors on the
- outer product between :attr:`vec1` and :attr:`vec2` and the added matrix
- :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{vec1} \otimes \text{vec2})
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- If :attr:`vec1` is a vector of size `n` and :attr:`vec2` is a vector
- of size `m`, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a matrix of size
- :math:`(n \times m)` and :attr:`out` will be a matrix of size
- :math:`(n \times m)`.
- Args:
- input (Tensor): matrix to be added
- vec1 (Tensor): the first vector of the outer product
- vec2 (Tensor): the second vector of the outer product
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{vec1} \otimes \text{vec2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> vec1 = torch.arange(1., 4.)
- >>> vec2 = torch.arange(1., 3.)
- >>> M = torch.zeros(3, 2)
- >>> torch.addr(M, vec1, vec2)
- tensor([[ 1., 2.],
- [ 2., 4.],
- [ 3., 6.]])
- """
- @overload
- def addr(
- beta: Number | _complex,
- self: Tensor,
- vec1: Tensor,
- vec2: Tensor,
- ) -> Tensor:
- r"""
- addr(input, vec1, vec2, *, beta=1, alpha=1, out=None) -> Tensor
- Performs the outer-product of vectors :attr:`vec1` and :attr:`vec2`
- and adds it to the matrix :attr:`input`.
- Optional values :attr:`beta` and :attr:`alpha` are scaling factors on the
- outer product between :attr:`vec1` and :attr:`vec2` and the added matrix
- :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{vec1} \otimes \text{vec2})
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- If :attr:`vec1` is a vector of size `n` and :attr:`vec2` is a vector
- of size `m`, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a matrix of size
- :math:`(n \times m)` and :attr:`out` will be a matrix of size
- :math:`(n \times m)`.
- Args:
- input (Tensor): matrix to be added
- vec1 (Tensor): the first vector of the outer product
- vec2 (Tensor): the second vector of the outer product
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{vec1} \otimes \text{vec2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> vec1 = torch.arange(1., 4.)
- >>> vec2 = torch.arange(1., 3.)
- >>> M = torch.zeros(3, 2)
- >>> torch.addr(M, vec1, vec2)
- tensor([[ 1., 2.],
- [ 2., 4.],
- [ 3., 6.]])
- """
- @overload
- def addr(
- beta: Number | _complex,
- self: Tensor,
- vec1: Tensor,
- vec2: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- addr(input, vec1, vec2, *, beta=1, alpha=1, out=None) -> Tensor
- Performs the outer-product of vectors :attr:`vec1` and :attr:`vec2`
- and adds it to the matrix :attr:`input`.
- Optional values :attr:`beta` and :attr:`alpha` are scaling factors on the
- outer product between :attr:`vec1` and :attr:`vec2` and the added matrix
- :attr:`input` respectively.
- .. math::
- \text{out} = \beta\ \text{input} + \alpha\ (\text{vec1} \otimes \text{vec2})
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- If :attr:`vec1` is a vector of size `n` and :attr:`vec2` is a vector
- of size `m`, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a matrix of size
- :math:`(n \times m)` and :attr:`out` will be a matrix of size
- :math:`(n \times m)`.
- Args:
- input (Tensor): matrix to be added
- vec1 (Tensor): the first vector of the outer product
- vec2 (Tensor): the second vector of the outer product
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{vec1} \otimes \text{vec2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> vec1 = torch.arange(1., 4.)
- >>> vec2 = torch.arange(1., 3.)
- >>> M = torch.zeros(3, 2)
- >>> torch.addr(M, vec1, vec2)
- tensor([[ 1., 2.],
- [ 2., 4.],
- [ 3., 6.]])
- """
- def adjoint(input: Tensor) -> Tensor:
- r"""
- adjoint(input: Tensor) -> Tensor
- Returns a view of the tensor conjugated and with the last two dimensions transposed.
- ``x.adjoint()`` is equivalent to ``x.transpose(-2, -1).conj()`` for complex tensors and
- to ``x.transpose(-2, -1)`` for real tensors.
- Args:
- {input}
- Example::
- >>> x = torch.arange(4, dtype=torch.float)
- >>> A = torch.complex(x, x).reshape(2, 2)
- >>> A
- tensor([[0.+0.j, 1.+1.j],
- [2.+2.j, 3.+3.j]])
- >>> A.adjoint()
- tensor([[0.-0.j, 2.-2.j],
- [1.-1.j, 3.-3.j]])
- >>> (A.adjoint() == A.mH).all()
- tensor(True)
- """
- def affine_grid_generator(
- theta: Tensor,
- size: Sequence[_int | SymInt],
- align_corners: _bool,
- ) -> Tensor: ...
- def alias_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.alias`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- @overload
- def all(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- all(input: Tensor, *, out=None) -> Tensor
- Tests if all elements in :attr:`input` evaluate to `True`.
- .. note:: This function matches the behaviour of NumPy in returning
- output of dtype `bool` for all supported dtypes except `uint8`.
- For `uint8` the dtype of output is `uint8` itself.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(1, 2).bool()
- >>> a
- tensor([[False, True]], dtype=torch.bool)
- >>> torch.all(a)
- tensor(False, dtype=torch.bool)
- >>> a = torch.arange(0, 3)
- >>> a
- tensor([0, 1, 2])
- >>> torch.all(a)
- tensor(False)
- .. function:: all(input, dim, keepdim=False, *, out=None) -> Tensor
- :noindex:
- For each row of :attr:`input` in the given dimension :attr:`dim`,
- returns `True` if all elements in the row evaluate to `True` and `False` otherwise.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(4, 2).bool()
- >>> a
- tensor([[True, True],
- [True, False],
- [True, True],
- [True, True]], dtype=torch.bool)
- >>> torch.all(a, dim=1)
- tensor([ True, False, True, True], dtype=torch.bool)
- >>> torch.all(a, dim=0)
- tensor([ True, False], dtype=torch.bool)
- """
- @overload
- def all(
- input: Tensor,
- dim: _size | None = None,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- all(input: Tensor, *, out=None) -> Tensor
- Tests if all elements in :attr:`input` evaluate to `True`.
- .. note:: This function matches the behaviour of NumPy in returning
- output of dtype `bool` for all supported dtypes except `uint8`.
- For `uint8` the dtype of output is `uint8` itself.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(1, 2).bool()
- >>> a
- tensor([[False, True]], dtype=torch.bool)
- >>> torch.all(a)
- tensor(False, dtype=torch.bool)
- >>> a = torch.arange(0, 3)
- >>> a
- tensor([0, 1, 2])
- >>> torch.all(a)
- tensor(False)
- .. function:: all(input, dim, keepdim=False, *, out=None) -> Tensor
- :noindex:
- For each row of :attr:`input` in the given dimension :attr:`dim`,
- returns `True` if all elements in the row evaluate to `True` and `False` otherwise.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(4, 2).bool()
- >>> a
- tensor([[True, True],
- [True, False],
- [True, True],
- [True, True]], dtype=torch.bool)
- >>> torch.all(a, dim=1)
- tensor([ True, False, True, True], dtype=torch.bool)
- >>> torch.all(a, dim=0)
- tensor([ True, False], dtype=torch.bool)
- """
- @overload
- def all(
- input: Tensor,
- dim: _int,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- all(input: Tensor, *, out=None) -> Tensor
- Tests if all elements in :attr:`input` evaluate to `True`.
- .. note:: This function matches the behaviour of NumPy in returning
- output of dtype `bool` for all supported dtypes except `uint8`.
- For `uint8` the dtype of output is `uint8` itself.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(1, 2).bool()
- >>> a
- tensor([[False, True]], dtype=torch.bool)
- >>> torch.all(a)
- tensor(False, dtype=torch.bool)
- >>> a = torch.arange(0, 3)
- >>> a
- tensor([0, 1, 2])
- >>> torch.all(a)
- tensor(False)
- .. function:: all(input, dim, keepdim=False, *, out=None) -> Tensor
- :noindex:
- For each row of :attr:`input` in the given dimension :attr:`dim`,
- returns `True` if all elements in the row evaluate to `True` and `False` otherwise.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(4, 2).bool()
- >>> a
- tensor([[True, True],
- [True, False],
- [True, True],
- [True, True]], dtype=torch.bool)
- >>> torch.all(a, dim=1)
- tensor([ True, False, True, True], dtype=torch.bool)
- >>> torch.all(a, dim=0)
- tensor([ True, False], dtype=torch.bool)
- """
- @overload
- def all(
- input: Tensor,
- dim: str | EllipsisType | None,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- all(input: Tensor, *, out=None) -> Tensor
- Tests if all elements in :attr:`input` evaluate to `True`.
- .. note:: This function matches the behaviour of NumPy in returning
- output of dtype `bool` for all supported dtypes except `uint8`.
- For `uint8` the dtype of output is `uint8` itself.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(1, 2).bool()
- >>> a
- tensor([[False, True]], dtype=torch.bool)
- >>> torch.all(a)
- tensor(False, dtype=torch.bool)
- >>> a = torch.arange(0, 3)
- >>> a
- tensor([0, 1, 2])
- >>> torch.all(a)
- tensor(False)
- .. function:: all(input, dim, keepdim=False, *, out=None) -> Tensor
- :noindex:
- For each row of :attr:`input` in the given dimension :attr:`dim`,
- returns `True` if all elements in the row evaluate to `True` and `False` otherwise.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(4, 2).bool()
- >>> a
- tensor([[True, True],
- [True, False],
- [True, True],
- [True, True]], dtype=torch.bool)
- >>> torch.all(a, dim=1)
- tensor([ True, False, True, True], dtype=torch.bool)
- >>> torch.all(a, dim=0)
- tensor([ True, False], dtype=torch.bool)
- """
- def allclose(
- input: Tensor,
- other: Tensor,
- rtol: _float = 1e-05,
- atol: _float = 1e-08,
- equal_nan: _bool = False,
- ) -> _bool:
- r"""
- allclose(input: Tensor, other: Tensor, rtol: float = 1e-05, atol: float = 1e-08, equal_nan: bool = False) -> bool
- This function checks if :attr:`input` and :attr:`other` satisfy the condition:
- .. math::
- \lvert \text{input}_i - \text{other}_i \rvert \leq \texttt{atol} + \texttt{rtol} \times \lvert \text{other}_i \rvert
- elementwise, for all elements of :attr:`input` and :attr:`other`. The behaviour of this function is analogous to
- `numpy.allclose <https://numpy.org/doc/stable/reference/generated/numpy.allclose.html>`_
- Args:
- input (Tensor): first tensor to compare
- other (Tensor): second tensor to compare
- atol (float, optional): absolute tolerance. Default: 1e-08
- rtol (float, optional): relative tolerance. Default: 1e-05
- equal_nan (bool, optional): if ``True``, then two ``NaN`` s will be considered equal. Default: ``False``
- Example::
- >>> torch.allclose(torch.tensor([10000., 1e-07]), torch.tensor([10000.1, 1e-08]))
- False
- >>> torch.allclose(torch.tensor([10000., 1e-08]), torch.tensor([10000.1, 1e-09]))
- True
- >>> torch.allclose(torch.tensor([1.0, float('nan')]), torch.tensor([1.0, float('nan')]))
- False
- >>> torch.allclose(torch.tensor([1.0, float('nan')]), torch.tensor([1.0, float('nan')]), equal_nan=True)
- True
- """
- def alpha_dropout(input: Tensor, p: _float, train: _bool) -> Tensor: ...
- def alpha_dropout_(input: Tensor, p: _float, train: _bool) -> Tensor: ...
- def amax(
- input: Tensor,
- dim: _int | _size = (),
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- amax(input, dim, keepdim=False, *, out=None) -> Tensor
- Returns the maximum value of each slice of the :attr:`input` tensor in the given
- dimension(s) :attr:`dim`.
- .. note::
- The difference between ``max``/``min`` and ``amax``/``amin`` is:
- - ``amax``/``amin`` supports reducing on multiple dimensions,
- - ``amax``/``amin`` does not return indices.
- Both ``amax``/``amin`` evenly distribute gradients between equal values
- when there are multiple input elements with the same minimum or maximum value.
- For ``max``/``min``:
- - If reduce over all dimensions(no dim specified), gradients evenly distribute between equally ``max``/``min`` values.
- - If reduce over one specified axis, only propagate to the indexed element.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.8177, 1.4878, -0.2491, 0.9130],
- [-0.7158, 1.1775, 2.0992, 0.4817],
- [-0.0053, 0.0164, -1.3738, -0.0507],
- [ 1.9700, 1.1106, -1.0318, -1.0816]])
- >>> torch.amax(a, 1)
- tensor([1.4878, 2.0992, 0.0164, 1.9700])
- """
- def amin(
- input: Tensor,
- dim: _int | _size = (),
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- amin(input, dim, keepdim=False, *, out=None) -> Tensor
- Returns the minimum value of each slice of the :attr:`input` tensor in the given
- dimension(s) :attr:`dim`.
- .. note::
- The difference between ``max``/``min`` and ``amax``/``amin`` is:
- - ``amax``/``amin`` supports reducing on multiple dimensions,
- - ``amax``/``amin`` does not return indices.
- Both ``amax``/``amin`` evenly distribute gradients between equal values
- when there are multiple input elements with the same minimum or maximum value.
- For ``max``/``min``:
- - If reduce over all dimensions(no dim specified), gradients evenly distribute between equally ``max``/``min`` values.
- - If reduce over one specified axis, only propagate to the indexed element.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.6451, -0.4866, 0.2987, -1.3312],
- [-0.5744, 1.2980, 1.8397, -0.2713],
- [ 0.9128, 0.9214, -1.7268, -0.2995],
- [ 0.9023, 0.4853, 0.9075, -1.6165]])
- >>> torch.amin(a, 1)
- tensor([-1.3312, -0.5744, -1.7268, -1.6165])
- """
- def aminmax(
- input: Tensor,
- *,
- dim: _int | None = None,
- keepdim: _bool = False,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.aminmax:
- r"""
- aminmax(input, *, dim=None, keepdim=False, out=None) -> (Tensor min, Tensor max)
- Computes the minimum and maximum values of the :attr:`input` tensor.
- Args:
- input (Tensor):
- The input tensor
- Keyword Args:
- dim (Optional[int]):
- The dimension along which to compute the values. If `None`,
- computes the values over the entire :attr:`input` tensor.
- Default is `None`.
- keepdim (bool):
- If `True`, the reduced dimensions will be kept in the output
- tensor as dimensions with size 1 for broadcasting, otherwise
- they will be removed, as if calling (:func:`torch.squeeze`).
- Default is `False`.
- out (Optional[Tuple[Tensor, Tensor]]):
- Optional tensors on which to write the result. Must have the same
- shape and dtype as the expected output.
- Default is `None`.
- Returns:
- A named tuple `(min, max)` containing the minimum and maximum values.
- Raises:
- RuntimeError
- If any of the dimensions to compute the values over has size 0.
- .. note::
- NaN values are propagated to the output if at least one value is NaN.
- .. seealso::
- :func:`torch.amin` computes just the minimum value
- :func:`torch.amax` computes just the maximum value
- Example::
- >>> torch.aminmax(torch.tensor([1, -3, 5]))
- torch.return_types.aminmax(
- min=tensor(-3),
- max=tensor(5))
- >>> # aminmax propagates NaNs
- >>> torch.aminmax(torch.tensor([1, -3, 5, torch.nan]))
- torch.return_types.aminmax(
- min=tensor(nan),
- max=tensor(nan))
- >>> t = torch.arange(10).view(2, 5)
- >>> t
- tensor([[0, 1, 2, 3, 4],
- [5, 6, 7, 8, 9]])
- >>> t.aminmax(dim=0, keepdim=True)
- torch.return_types.aminmax(
- min=tensor([[0, 1, 2, 3, 4]]),
- max=tensor([[5, 6, 7, 8, 9]]))
- """
- def angle(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- angle(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Computes the element-wise angle (in radians) of the given :attr:`input` tensor.
- .. math::
- \text{out}_{i} = angle(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- .. note:: Starting in PyTorch 1.8, angle returns pi for negative real numbers,
- zero for non-negative real numbers, and propagates NaNs. Previously
- the function would return zero for all real numbers and not propagate
- floating-point NaNs.
- Example::
- >>> torch.angle(torch.tensor([-1 + 1j, -2 + 2j, 3 - 3j]))*180/3.14159
- tensor([ 135., 135, -45])
- """
- @overload
- def any(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- any(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Tests if any element in :attr:`input` evaluates to `True`.
- .. note:: This function matches the behaviour of NumPy in returning
- output of dtype `bool` for all supported dtypes except `uint8`.
- For `uint8` the dtype of output is `uint8` itself.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(1, 2).bool()
- >>> a
- tensor([[False, True]], dtype=torch.bool)
- >>> torch.any(a)
- tensor(True, dtype=torch.bool)
- >>> a = torch.arange(0, 3)
- >>> a
- tensor([0, 1, 2])
- >>> torch.any(a)
- tensor(True)
- .. function:: any(input, dim, keepdim=False, *, out=None) -> Tensor
- :noindex:
- For each row of :attr:`input` in the given dimension :attr:`dim`,
- returns `True` if any element in the row evaluate to `True` and `False` otherwise.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4, 2) < 0
- >>> a
- tensor([[ True, True],
- [False, True],
- [ True, True],
- [False, False]])
- >>> torch.any(a, 1)
- tensor([ True, True, True, False])
- >>> torch.any(a, 0)
- tensor([True, True])
- """
- @overload
- def any(
- input: Tensor,
- dim: _size | None = None,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- any(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Tests if any element in :attr:`input` evaluates to `True`.
- .. note:: This function matches the behaviour of NumPy in returning
- output of dtype `bool` for all supported dtypes except `uint8`.
- For `uint8` the dtype of output is `uint8` itself.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(1, 2).bool()
- >>> a
- tensor([[False, True]], dtype=torch.bool)
- >>> torch.any(a)
- tensor(True, dtype=torch.bool)
- >>> a = torch.arange(0, 3)
- >>> a
- tensor([0, 1, 2])
- >>> torch.any(a)
- tensor(True)
- .. function:: any(input, dim, keepdim=False, *, out=None) -> Tensor
- :noindex:
- For each row of :attr:`input` in the given dimension :attr:`dim`,
- returns `True` if any element in the row evaluate to `True` and `False` otherwise.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4, 2) < 0
- >>> a
- tensor([[ True, True],
- [False, True],
- [ True, True],
- [False, False]])
- >>> torch.any(a, 1)
- tensor([ True, True, True, False])
- >>> torch.any(a, 0)
- tensor([True, True])
- """
- @overload
- def any(
- input: Tensor,
- dim: _int,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- any(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Tests if any element in :attr:`input` evaluates to `True`.
- .. note:: This function matches the behaviour of NumPy in returning
- output of dtype `bool` for all supported dtypes except `uint8`.
- For `uint8` the dtype of output is `uint8` itself.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(1, 2).bool()
- >>> a
- tensor([[False, True]], dtype=torch.bool)
- >>> torch.any(a)
- tensor(True, dtype=torch.bool)
- >>> a = torch.arange(0, 3)
- >>> a
- tensor([0, 1, 2])
- >>> torch.any(a)
- tensor(True)
- .. function:: any(input, dim, keepdim=False, *, out=None) -> Tensor
- :noindex:
- For each row of :attr:`input` in the given dimension :attr:`dim`,
- returns `True` if any element in the row evaluate to `True` and `False` otherwise.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4, 2) < 0
- >>> a
- tensor([[ True, True],
- [False, True],
- [ True, True],
- [False, False]])
- >>> torch.any(a, 1)
- tensor([ True, True, True, False])
- >>> torch.any(a, 0)
- tensor([True, True])
- """
- @overload
- def any(
- input: Tensor,
- dim: str | EllipsisType | None,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- any(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Tests if any element in :attr:`input` evaluates to `True`.
- .. note:: This function matches the behaviour of NumPy in returning
- output of dtype `bool` for all supported dtypes except `uint8`.
- For `uint8` the dtype of output is `uint8` itself.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(1, 2).bool()
- >>> a
- tensor([[False, True]], dtype=torch.bool)
- >>> torch.any(a)
- tensor(True, dtype=torch.bool)
- >>> a = torch.arange(0, 3)
- >>> a
- tensor([0, 1, 2])
- >>> torch.any(a)
- tensor(True)
- .. function:: any(input, dim, keepdim=False, *, out=None) -> Tensor
- :noindex:
- For each row of :attr:`input` in the given dimension :attr:`dim`,
- returns `True` if any element in the row evaluate to `True` and `False` otherwise.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4, 2) < 0
- >>> a
- tensor([[ True, True],
- [False, True],
- [ True, True],
- [False, False]])
- >>> torch.any(a, 1)
- tensor([ True, True, True, False])
- >>> torch.any(a, 0)
- tensor([True, True])
- """
- @overload
- def arange(
- start: Number,
- end: Number,
- step: Number,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- arange(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a 1-D tensor of size :math:`\left\lceil \frac{\text{end} - \text{start}}{\text{step}} \right\rceil`
- with values from the interval ``[start, end)`` taken with common difference
- :attr:`step` beginning from `start`.
- Note: When using floating-point dtypes (especially reduced precision types like ``bfloat16``),
- the results may be affected by floating-point rounding behavior. Some values in the sequence
- might not be exactly representable in certain floating-point formats, which can lead to
- repeated values or unexpected rounding. For precise sequences, it is recommended to use
- integer dtypes instead of floating-point dtypes.
- Note that non-integer :attr:`step` is subject to floating point rounding errors when
- comparing against :attr:`end`; to avoid inconsistency, we advise subtracting a small epsilon from :attr:`end`
- in such cases.
- .. math::
- \text{out}_{{i+1}} = \text{out}_{i} + \text{step}
- Args:
- start (Number, optional): the starting value for the set of points. Default: ``0``.
- end (Number): the ending value for the set of points
- step (Number, optional): the gap between each pair of adjacent points. Default: ``1``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). If `dtype` is not given, infer the data type from the other input
- arguments. If any of `start`, `end`, or `stop` are floating-point, the
- `dtype` is inferred to be the default dtype, see
- :meth:`~torch.get_default_dtype`. Otherwise, the `dtype` is inferred to
- be `torch.int64`.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.arange(5)
- tensor([ 0, 1, 2, 3, 4])
- >>> torch.arange(1, 4)
- tensor([ 1, 2, 3])
- >>> torch.arange(1, 2.5, 0.5)
- tensor([ 1.0000, 1.5000, 2.0000])
- """
- @overload
- def arange(
- start: Number,
- end: Number,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- arange(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a 1-D tensor of size :math:`\left\lceil \frac{\text{end} - \text{start}}{\text{step}} \right\rceil`
- with values from the interval ``[start, end)`` taken with common difference
- :attr:`step` beginning from `start`.
- Note: When using floating-point dtypes (especially reduced precision types like ``bfloat16``),
- the results may be affected by floating-point rounding behavior. Some values in the sequence
- might not be exactly representable in certain floating-point formats, which can lead to
- repeated values or unexpected rounding. For precise sequences, it is recommended to use
- integer dtypes instead of floating-point dtypes.
- Note that non-integer :attr:`step` is subject to floating point rounding errors when
- comparing against :attr:`end`; to avoid inconsistency, we advise subtracting a small epsilon from :attr:`end`
- in such cases.
- .. math::
- \text{out}_{{i+1}} = \text{out}_{i} + \text{step}
- Args:
- start (Number, optional): the starting value for the set of points. Default: ``0``.
- end (Number): the ending value for the set of points
- step (Number, optional): the gap between each pair of adjacent points. Default: ``1``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). If `dtype` is not given, infer the data type from the other input
- arguments. If any of `start`, `end`, or `stop` are floating-point, the
- `dtype` is inferred to be the default dtype, see
- :meth:`~torch.get_default_dtype`. Otherwise, the `dtype` is inferred to
- be `torch.int64`.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.arange(5)
- tensor([ 0, 1, 2, 3, 4])
- >>> torch.arange(1, 4)
- tensor([ 1, 2, 3])
- >>> torch.arange(1, 2.5, 0.5)
- tensor([ 1.0000, 1.5000, 2.0000])
- """
- @overload
- def arange(
- end: Number,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- arange(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a 1-D tensor of size :math:`\left\lceil \frac{\text{end} - \text{start}}{\text{step}} \right\rceil`
- with values from the interval ``[start, end)`` taken with common difference
- :attr:`step` beginning from `start`.
- Note: When using floating-point dtypes (especially reduced precision types like ``bfloat16``),
- the results may be affected by floating-point rounding behavior. Some values in the sequence
- might not be exactly representable in certain floating-point formats, which can lead to
- repeated values or unexpected rounding. For precise sequences, it is recommended to use
- integer dtypes instead of floating-point dtypes.
- Note that non-integer :attr:`step` is subject to floating point rounding errors when
- comparing against :attr:`end`; to avoid inconsistency, we advise subtracting a small epsilon from :attr:`end`
- in such cases.
- .. math::
- \text{out}_{{i+1}} = \text{out}_{i} + \text{step}
- Args:
- start (Number, optional): the starting value for the set of points. Default: ``0``.
- end (Number): the ending value for the set of points
- step (Number, optional): the gap between each pair of adjacent points. Default: ``1``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). If `dtype` is not given, infer the data type from the other input
- arguments. If any of `start`, `end`, or `stop` are floating-point, the
- `dtype` is inferred to be the default dtype, see
- :meth:`~torch.get_default_dtype`. Otherwise, the `dtype` is inferred to
- be `torch.int64`.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.arange(5)
- tensor([ 0, 1, 2, 3, 4])
- >>> torch.arange(1, 4)
- tensor([ 1, 2, 3])
- >>> torch.arange(1, 2.5, 0.5)
- tensor([ 1.0000, 1.5000, 2.0000])
- """
- @overload
- def arange(
- end: Number | _complex,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- arange(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a 1-D tensor of size :math:`\left\lceil \frac{\text{end} - \text{start}}{\text{step}} \right\rceil`
- with values from the interval ``[start, end)`` taken with common difference
- :attr:`step` beginning from `start`.
- Note: When using floating-point dtypes (especially reduced precision types like ``bfloat16``),
- the results may be affected by floating-point rounding behavior. Some values in the sequence
- might not be exactly representable in certain floating-point formats, which can lead to
- repeated values or unexpected rounding. For precise sequences, it is recommended to use
- integer dtypes instead of floating-point dtypes.
- Note that non-integer :attr:`step` is subject to floating point rounding errors when
- comparing against :attr:`end`; to avoid inconsistency, we advise subtracting a small epsilon from :attr:`end`
- in such cases.
- .. math::
- \text{out}_{{i+1}} = \text{out}_{i} + \text{step}
- Args:
- start (Number, optional): the starting value for the set of points. Default: ``0``.
- end (Number): the ending value for the set of points
- step (Number, optional): the gap between each pair of adjacent points. Default: ``1``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). If `dtype` is not given, infer the data type from the other input
- arguments. If any of `start`, `end`, or `stop` are floating-point, the
- `dtype` is inferred to be the default dtype, see
- :meth:`~torch.get_default_dtype`. Otherwise, the `dtype` is inferred to
- be `torch.int64`.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.arange(5)
- tensor([ 0, 1, 2, 3, 4])
- >>> torch.arange(1, 4)
- tensor([ 1, 2, 3])
- >>> torch.arange(1, 2.5, 0.5)
- tensor([ 1.0000, 1.5000, 2.0000])
- """
- @overload
- def arange(
- start: Number | _complex,
- end: Number | _complex,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- arange(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a 1-D tensor of size :math:`\left\lceil \frac{\text{end} - \text{start}}{\text{step}} \right\rceil`
- with values from the interval ``[start, end)`` taken with common difference
- :attr:`step` beginning from `start`.
- Note: When using floating-point dtypes (especially reduced precision types like ``bfloat16``),
- the results may be affected by floating-point rounding behavior. Some values in the sequence
- might not be exactly representable in certain floating-point formats, which can lead to
- repeated values or unexpected rounding. For precise sequences, it is recommended to use
- integer dtypes instead of floating-point dtypes.
- Note that non-integer :attr:`step` is subject to floating point rounding errors when
- comparing against :attr:`end`; to avoid inconsistency, we advise subtracting a small epsilon from :attr:`end`
- in such cases.
- .. math::
- \text{out}_{{i+1}} = \text{out}_{i} + \text{step}
- Args:
- start (Number, optional): the starting value for the set of points. Default: ``0``.
- end (Number): the ending value for the set of points
- step (Number, optional): the gap between each pair of adjacent points. Default: ``1``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). If `dtype` is not given, infer the data type from the other input
- arguments. If any of `start`, `end`, or `stop` are floating-point, the
- `dtype` is inferred to be the default dtype, see
- :meth:`~torch.get_default_dtype`. Otherwise, the `dtype` is inferred to
- be `torch.int64`.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.arange(5)
- tensor([ 0, 1, 2, 3, 4])
- >>> torch.arange(1, 4)
- tensor([ 1, 2, 3])
- >>> torch.arange(1, 2.5, 0.5)
- tensor([ 1.0000, 1.5000, 2.0000])
- """
- @overload
- def arange(
- start: Number | _complex,
- end: Number | _complex,
- step: Number | _complex = 1,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- arange(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a 1-D tensor of size :math:`\left\lceil \frac{\text{end} - \text{start}}{\text{step}} \right\rceil`
- with values from the interval ``[start, end)`` taken with common difference
- :attr:`step` beginning from `start`.
- Note: When using floating-point dtypes (especially reduced precision types like ``bfloat16``),
- the results may be affected by floating-point rounding behavior. Some values in the sequence
- might not be exactly representable in certain floating-point formats, which can lead to
- repeated values or unexpected rounding. For precise sequences, it is recommended to use
- integer dtypes instead of floating-point dtypes.
- Note that non-integer :attr:`step` is subject to floating point rounding errors when
- comparing against :attr:`end`; to avoid inconsistency, we advise subtracting a small epsilon from :attr:`end`
- in such cases.
- .. math::
- \text{out}_{{i+1}} = \text{out}_{i} + \text{step}
- Args:
- start (Number, optional): the starting value for the set of points. Default: ``0``.
- end (Number): the ending value for the set of points
- step (Number, optional): the gap between each pair of adjacent points. Default: ``1``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). If `dtype` is not given, infer the data type from the other input
- arguments. If any of `start`, `end`, or `stop` are floating-point, the
- `dtype` is inferred to be the default dtype, see
- :meth:`~torch.get_default_dtype`. Otherwise, the `dtype` is inferred to
- be `torch.int64`.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.arange(5)
- tensor([ 0, 1, 2, 3, 4])
- >>> torch.arange(1, 4)
- tensor([ 1, 2, 3])
- >>> torch.arange(1, 2.5, 0.5)
- tensor([ 1.0000, 1.5000, 2.0000])
- """
- def arccos(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- arccos(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Alias for :func:`torch.acos`.
- """
- def arccos_(input: Tensor) -> Tensor: ...
- def arccosh(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- arccosh(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Alias for :func:`torch.acosh`.
- """
- def arccosh_(input: Tensor) -> Tensor: ...
- def arcsin(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- arcsin(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Alias for :func:`torch.asin`.
- """
- def arcsin_(input: Tensor) -> Tensor: ...
- def arcsinh(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- arcsinh(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Alias for :func:`torch.asinh`.
- """
- def arcsinh_(input: Tensor) -> Tensor: ...
- def arctan(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- arctan(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Alias for :func:`torch.atan`.
- """
- def arctan2(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- arctan2(input: Tensor, other: Tensor, *, out: Optional[Tensor]) -> Tensor
- Alias for :func:`torch.atan2`.
- """
- def arctan_(input: Tensor) -> Tensor: ...
- def arctanh(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- arctanh(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Alias for :func:`torch.atanh`.
- """
- def arctanh_(input: Tensor) -> Tensor: ...
- def argmax(
- input: Tensor,
- dim: _int | None = None,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- argmax(input) -> LongTensor
- Returns the indices of the maximum value of all elements in the :attr:`input` tensor.
- This is the second value returned by :meth:`torch.max`. See its
- documentation for the exact semantics of this method.
- .. note:: If there are multiple maximal values then the indices of the first maximal value are returned.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 1.3398, 0.2663, -0.2686, 0.2450],
- [-0.7401, -0.8805, -0.3402, -1.1936],
- [ 0.4907, -1.3948, -1.0691, -0.3132],
- [-1.6092, 0.5419, -0.2993, 0.3195]])
- >>> torch.argmax(a)
- tensor(0)
- .. function:: argmax(input, dim, keepdim=False) -> LongTensor
- :noindex:
- Returns the indices of the maximum values of a tensor across a dimension.
- This is the second value returned by :meth:`torch.max`. See its
- documentation for the exact semantics of this method.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, the argmax of the flattened input is returned.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 1.3398, 0.2663, -0.2686, 0.2450],
- [-0.7401, -0.8805, -0.3402, -1.1936],
- [ 0.4907, -1.3948, -1.0691, -0.3132],
- [-1.6092, 0.5419, -0.2993, 0.3195]])
- >>> torch.argmax(a, dim=1)
- tensor([ 0, 2, 0, 1])
- """
- def argmin(
- input: Tensor,
- dim: _int | None = None,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- argmin(input, dim=None, keepdim=False) -> LongTensor
- Returns the indices of the minimum value(s) of the flattened tensor or along a dimension
- This is the second value returned by :meth:`torch.min`. See its
- documentation for the exact semantics of this method.
- .. note:: If there are multiple minimal values then the indices of the first minimal value are returned.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, the argmin of the flattened input is returned.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.1139, 0.2254, -0.1381, 0.3687],
- [ 1.0100, -1.1975, -0.0102, -0.4732],
- [-0.9240, 0.1207, -0.7506, -1.0213],
- [ 1.7809, -1.2960, 0.9384, 0.1438]])
- >>> torch.argmin(a)
- tensor(13)
- >>> torch.argmin(a, dim=1)
- tensor([ 2, 1, 3, 1])
- >>> torch.argmin(a, dim=1, keepdim=True)
- tensor([[2],
- [1],
- [3],
- [1]])
- """
- @overload
- def argsort(
- input: Tensor,
- *,
- stable: _bool,
- dim: _int = -1,
- descending: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- argsort(input, dim=-1, descending=False, *, stable=False) -> Tensor
- Returns the indices that sort a tensor along a given dimension in ascending
- order by value.
- This is the second value returned by :meth:`torch.sort`. See its documentation
- for the exact semantics of this method.
- If :attr:`stable` is ``True`` then the sorting routine becomes stable, preserving
- the order of equivalent elements. If ``False``, the relative order of values
- which compare equal is not guaranteed. ``True`` is slower.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to sort along
- descending (bool, optional): controls the sorting order (ascending or descending)
- Keyword args:
- stable (bool, optional): controls the relative order of equivalent elements
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.0785, 1.5267, -0.8521, 0.4065],
- [ 0.1598, 0.0788, -0.0745, -1.2700],
- [ 1.2208, 1.0722, -0.7064, 1.2564],
- [ 0.0669, -0.2318, -0.8229, -0.9280]])
- >>> torch.argsort(a, dim=1)
- tensor([[2, 0, 3, 1],
- [3, 2, 1, 0],
- [2, 1, 0, 3],
- [3, 2, 1, 0]])
- """
- @overload
- def argsort(
- input: Tensor,
- dim: _int = -1,
- descending: _bool = False,
- ) -> Tensor:
- r"""
- argsort(input, dim=-1, descending=False, *, stable=False) -> Tensor
- Returns the indices that sort a tensor along a given dimension in ascending
- order by value.
- This is the second value returned by :meth:`torch.sort`. See its documentation
- for the exact semantics of this method.
- If :attr:`stable` is ``True`` then the sorting routine becomes stable, preserving
- the order of equivalent elements. If ``False``, the relative order of values
- which compare equal is not guaranteed. ``True`` is slower.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to sort along
- descending (bool, optional): controls the sorting order (ascending or descending)
- Keyword args:
- stable (bool, optional): controls the relative order of equivalent elements
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.0785, 1.5267, -0.8521, 0.4065],
- [ 0.1598, 0.0788, -0.0745, -1.2700],
- [ 1.2208, 1.0722, -0.7064, 1.2564],
- [ 0.0669, -0.2318, -0.8229, -0.9280]])
- >>> torch.argsort(a, dim=1)
- tensor([[2, 0, 3, 1],
- [3, 2, 1, 0],
- [2, 1, 0, 3],
- [3, 2, 1, 0]])
- """
- @overload
- def argsort(
- input: Tensor,
- dim: str | EllipsisType | None,
- descending: _bool = False,
- ) -> Tensor:
- r"""
- argsort(input, dim=-1, descending=False, *, stable=False) -> Tensor
- Returns the indices that sort a tensor along a given dimension in ascending
- order by value.
- This is the second value returned by :meth:`torch.sort`. See its documentation
- for the exact semantics of this method.
- If :attr:`stable` is ``True`` then the sorting routine becomes stable, preserving
- the order of equivalent elements. If ``False``, the relative order of values
- which compare equal is not guaranteed. ``True`` is slower.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to sort along
- descending (bool, optional): controls the sorting order (ascending or descending)
- Keyword args:
- stable (bool, optional): controls the relative order of equivalent elements
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.0785, 1.5267, -0.8521, 0.4065],
- [ 0.1598, 0.0788, -0.0745, -1.2700],
- [ 1.2208, 1.0722, -0.7064, 1.2564],
- [ 0.0669, -0.2318, -0.8229, -0.9280]])
- >>> torch.argsort(a, dim=1)
- tensor([[2, 0, 3, 1],
- [3, 2, 1, 0],
- [2, 1, 0, 3],
- [3, 2, 1, 0]])
- """
- def argwhere(input: Tensor) -> Tensor:
- r"""
- argwhere(input) -> Tensor
- Returns a tensor containing the indices of all non-zero elements of
- :attr:`input`. Each row in the result contains the indices of a non-zero
- element in :attr:`input`. The result is sorted lexicographically, with
- the last index changing the fastest (C-style).
- If :attr:`input` has :math:`n` dimensions, then the resulting indices tensor
- :attr:`out` is of size :math:`(z \times n)`, where :math:`z` is the total number of
- non-zero elements in the :attr:`input` tensor.
- .. note::
- This function is similar to NumPy's `argwhere`.
- When :attr:`input` is on CUDA, this function causes host-device synchronization.
- Args:
- {input}
- Example::
- >>> t = torch.tensor([1, 0, 1])
- >>> torch.argwhere(t)
- tensor([[0],
- [2]])
- >>> t = torch.tensor([[1, 0, 1], [0, 1, 1]])
- >>> torch.argwhere(t)
- tensor([[0, 0],
- [0, 2],
- [1, 1],
- [1, 2]])
- """
- def as_strided(
- input: Tensor,
- size: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- storage_offset: _int | SymInt | None = None,
- ) -> Tensor:
- r"""
- as_strided(input, size, stride, storage_offset=None) -> Tensor
- Create a view of an existing `torch.Tensor` :attr:`input` with specified
- :attr:`size`, :attr:`stride` and :attr:`storage_offset`.
- .. warning::
- Prefer using other view functions, like :meth:`torch.Tensor.view` or
- :meth:`torch.Tensor.expand`, to setting a view's strides manually with
- `as_strided`, as this function will throw an error on non-standard Pytorch
- backends (that do not have a concept of stride) and the result will depend
- on the current layout in memory. The constructed view must only refer to
- elements within the Tensor's storage or a runtime error will be thrown.
- If the generated view is "overlapped" (with multiple indices referring to
- the same element in memory), the behavior of inplace operations on this view
- is undefined (and might not throw runtime errors).
- Args:
- input (Tensor): the input tensor.
- size (tuple or ints): the shape of the output tensor
- stride (tuple or ints): the stride of the output tensor
- storage_offset (int, optional): the offset in the underlying storage of the output tensor.
- If ``None``, the storage_offset of the output tensor will match the input tensor.
- Example::
- >>> x = torch.randn(3, 3)
- >>> x
- tensor([[ 0.9039, 0.6291, 1.0795],
- [ 0.1586, 2.1939, -0.4900],
- [-0.1909, -0.7503, 1.9355]])
- >>> t = torch.as_strided(x, (2, 2), (1, 2))
- >>> t
- tensor([[0.9039, 1.0795],
- [0.6291, 0.1586]])
- >>> t = torch.as_strided(x, (2, 2), (1, 2), 1)
- tensor([[0.6291, 0.1586],
- [1.0795, 2.1939]])
- """
- def as_strided_(
- input: Tensor,
- size: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- storage_offset: _int | SymInt | None = None,
- ) -> Tensor: ...
- def as_strided_copy(
- input: Tensor,
- size: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- storage_offset: _int | SymInt | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.as_strided`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def as_strided_scatter(
- input: Tensor,
- src: Tensor,
- size: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- storage_offset: _int | SymInt | None = None,
- ) -> Tensor:
- r"""
- as_strided_scatter(input, src, size, stride, storage_offset=None) -> Tensor
- Embeds the values of the :attr:`src` tensor into :attr:`input` along
- the elements corresponding to the result of calling
- input.as_strided(size, stride, storage_offset).
- This function returns a tensor with fresh storage; it does not
- return a view.
- Args:
- input (Tensor): the input tensor.
- size (tuple or ints): the shape of the output tensor
- stride (tuple or ints): the stride of the output tensor
- storage_offset (int, optional): the offset in the underlying storage of the output tensor
- .. note::
- :attr:`src` must be of the proper size in order to be embedded
- into :attr:`input`. Specifically, it should have the same shape as
- `torch.as_strided(input, size, stride, storage_offset)`
- Example::
- >>> a = torch.arange(4).reshape(2, 2) + 1
- >>> a
- tensor([[1, 2],
- [3, 4]])
- >>> b = torch.zeros(3, 3)
- >>> b
- tensor([[0., 0., 0.],
- [0., 0., 0.],
- [0., 0., 0.]])
- >>> torch.as_strided_scatter(b, a, (2, 2), (1, 2))
- tensor([[1., 3., 2.],
- [4., 0., 0.],
- [0., 0., 0.]])
- """
- def as_tensor(
- data: Any,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- ) -> Tensor:
- r"""
- as_tensor(data: Any, *, dtype: Optional[dtype] = None, device: Optional[DeviceLikeType]) -> Tensor
- Converts :attr:`data` into a tensor, sharing data and preserving autograd
- history if possible.
- If :attr:`data` is already a tensor with the requested dtype and device
- then :attr:`data` itself is returned, but if :attr:`data` is a
- tensor with a different dtype or device then it's copied as if using
- `data.to(dtype=dtype, device=device)`.
- If :attr:`data` is a NumPy array (an ndarray) with the same dtype and device then a
- tensor is constructed using :func:`torch.from_numpy`.
- If :attr:`data` is a CuPy array, the returned tensor will be located on the same device as the CuPy array unless
- specifically overwritten by :attr:`device` or a default device. The device of the CuPy array is inferred from the
- pointer of the array using `cudaPointerGetAttributes` unless :attr:`device` is provided with an explicit device index.
- .. seealso::
- :func:`torch.tensor` never shares its data and creates a new "leaf tensor" (see :doc:`/notes/autograd`).
- Args:
- data (array_like): Initial data for the tensor. Can be a list, tuple,
- NumPy ``ndarray``, scalar, and other types.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, infers data type from :attr:`data`.
- device (:class:`torch.device`, optional): the device of the constructed tensor. If None and data is a tensor
- then the device of data is used. If None and data is not a tensor then
- the result tensor is constructed on the current device.
- Example::
- >>> a = numpy.array([1, 2, 3])
- >>> t = torch.as_tensor(a)
- >>> t
- tensor([ 1, 2, 3])
- >>> t[0] = -1
- >>> a
- array([-1, 2, 3])
- >>> a = numpy.array([1, 2, 3])
- >>> t = torch.as_tensor(a, device=torch.device('cuda'))
- >>> t
- tensor([ 1, 2, 3])
- >>> t[0] = -1
- >>> a
- array([1, 2, 3])
- """
- def asarray(
- obj: Any,
- *,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- copy: _bool | None = None,
- requires_grad: _bool = False,
- ) -> Tensor:
- r"""
- asarray(obj: Any, *, dtype: Optional[dtype], device: Optional[DeviceLikeType], copy: Optional[bool] = None, requires_grad: bool = False) -> Tensor # noqa: B950
- Converts :attr:`obj` to a tensor.
- :attr:`obj` can be one of:
- 1. a tensor
- 2. a NumPy array or a NumPy scalar
- 3. a DLPack capsule
- 4. an object that implements Python's buffer protocol
- 5. a scalar
- 6. a sequence of scalars
- When :attr:`obj` is a tensor, NumPy array, or DLPack capsule the returned tensor will,
- by default, not require a gradient, have the same datatype as :attr:`obj`, be on the
- same device, and share memory with it. These properties can be controlled with the
- :attr:`dtype`, :attr:`device`, :attr:`copy`, and :attr:`requires_grad` keyword arguments.
- If the returned tensor is of a different datatype, on a different device, or a copy is
- requested then it will not share its memory with :attr:`obj`. If :attr:`requires_grad`
- is ``True`` then the returned tensor will require a gradient, and if :attr:`obj` is
- also a tensor with an autograd history then the returned tensor will have the same history.
- When :attr:`obj` is not a tensor, NumPy array, or DLPack capsule but implements Python's
- buffer protocol then the buffer is interpreted as an array of bytes grouped according to
- the size of the datatype passed to the :attr:`dtype` keyword argument. (If no datatype is
- passed then the default floating point datatype is used, instead.) The returned tensor
- will have the specified datatype (or default floating point datatype if none is specified)
- and, by default, be on the CPU device and share memory with the buffer.
- When :attr:`obj` is a NumPy scalar, the returned tensor will be a 0-dimensional tensor on
- the CPU and that doesn't share its memory (i.e. ``copy=True``). By default datatype will
- be the PyTorch datatype corresponding to the NumPy's scalar's datatype.
- When :attr:`obj` is none of the above but a scalar, or a sequence of scalars then the
- returned tensor will, by default, infer its datatype from the scalar values, be on the
- current default device, and not share its memory.
- .. seealso::
- :func:`torch.tensor` creates a tensor that always copies the data from the input object.
- :func:`torch.from_numpy` creates a tensor that always shares memory from NumPy arrays.
- :func:`torch.frombuffer` creates a tensor that always shares memory from objects that
- implement the buffer protocol.
- :func:`torch.from_dlpack` creates a tensor that always shares memory from
- DLPack capsules.
- Args:
- obj (object): a tensor, NumPy array, DLPack Capsule, object that implements Python's
- buffer protocol, scalar, or sequence of scalars.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the datatype of the returned tensor.
- Default: ``None``, which causes the datatype of the returned tensor to be
- inferred from :attr:`obj`.
- copy (bool, optional): controls whether the returned tensor shares memory with :attr:`obj`.
- Default: ``None``, which causes the returned tensor to share memory with :attr:`obj`
- whenever possible. If ``True`` then the returned tensor does not share its memory.
- If ``False`` then the returned tensor shares its memory with :attr:`obj` and an
- error is thrown if it cannot.
- device (:class:`torch.device`, optional): the device of the returned tensor.
- Default: ``None``, which causes the device of :attr:`obj` to be used. Or, if
- :attr:`obj` is a Python sequence, the current default device will be used.
- requires_grad (bool, optional): whether the returned tensor requires grad.
- Default: ``False``, which causes the returned tensor not to require a gradient.
- If ``True``, then the returned tensor will require a gradient, and if :attr:`obj`
- is also a tensor with an autograd history then the returned tensor will have
- the same history.
- Example::
- >>> a = torch.tensor([1, 2, 3])
- >>> # Shares memory with tensor 'a'
- >>> b = torch.asarray(a)
- >>> a.data_ptr() == b.data_ptr()
- True
- >>> # Forces memory copy
- >>> c = torch.asarray(a, copy=True)
- >>> a.data_ptr() == c.data_ptr()
- False
- >>> a = torch.tensor([1., 2., 3.], requires_grad=True)
- >>> b = a + 2
- >>> b
- tensor([3., 4., 5.], grad_fn=<AddBackward0>)
- >>> # Shares memory with tensor 'b', with no grad
- >>> c = torch.asarray(b)
- >>> c
- tensor([3., 4., 5.])
- >>> # Shares memory with tensor 'b', retaining autograd history
- >>> d = torch.asarray(b, requires_grad=True)
- >>> d
- tensor([3., 4., 5.], grad_fn=<AddBackward0>)
- >>> array = numpy.array([1, 2, 3])
- >>> # Shares memory with array 'array'
- >>> t1 = torch.asarray(array)
- >>> array.__array_interface__['data'][0] == t1.data_ptr()
- True
- >>> # Copies memory due to dtype mismatch
- >>> t2 = torch.asarray(array, dtype=torch.float32)
- >>> array.__array_interface__['data'][0] == t2.data_ptr()
- False
- >>> scalar = numpy.float64(0.5)
- >>> torch.asarray(scalar)
- tensor(0.5000, dtype=torch.float64)
- """
- def asin(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- asin(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Returns a new tensor with the arcsine of the elements (in radians) in the :attr:`input` tensor.
- .. math::
- \text{out}_{i} = \sin^{-1}(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-0.5962, 1.4985, -0.4396, 1.4525])
- >>> torch.asin(a)
- tensor([-0.6387, nan, -0.4552, nan])
- """
- def asin_(input: Tensor) -> Tensor: ...
- def asinh(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- asinh(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Returns a new tensor with the inverse hyperbolic sine of the elements of :attr:`input`.
- .. math::
- \text{out}_{i} = \sinh^{-1}(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.1606, -1.4267, -1.0899, -1.0250 ])
- >>> torch.asinh(a)
- tensor([ 0.1599, -1.1534, -0.9435, -0.8990 ])
- """
- def asinh_(input: Tensor) -> Tensor: ...
- def atan(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- atan(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Returns a new tensor with the arctangent of the elements (in radians) in the :attr:`input` tensor.
- .. math::
- \text{out}_{i} = \tan^{-1}(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.2341, 0.2539, -0.6256, -0.6448])
- >>> torch.atan(a)
- tensor([ 0.2299, 0.2487, -0.5591, -0.5727])
- """
- def atan2(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- atan2(input: Tensor, other: Tensor, *, out: Optional[Tensor]) -> Tensor
- Element-wise arctangent of :math:`\text{input}_{i} / \text{other}_{i}`
- with consideration of the quadrant. Returns a new tensor with the signed angles
- in radians between vector :math:`(\text{other}_{i}, \text{input}_{i})`
- and vector :math:`(1, 0)`. (Note that :math:`\text{other}_{i}`, the second
- parameter, is the x-coordinate, while :math:`\text{input}_{i}`, the first
- parameter, is the y-coordinate.)
- The shapes of ``input`` and ``other`` must be
- :ref:`broadcastable <broadcasting-semantics>`.
- Args:
- input (Tensor): the first input tensor
- other (Tensor): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.9041, 0.0196, -0.3108, -2.4423])
- >>> torch.atan2(a, torch.randn(4))
- tensor([ 0.9833, 0.0811, -1.9743, -1.4151])
- """
- def atan_(input: Tensor) -> Tensor: ...
- def atanh(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- atanh(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Returns a new tensor with the inverse hyperbolic tangent of the elements of :attr:`input`.
- Note:
- The domain of the inverse hyperbolic tangent is `(-1, 1)` and values outside this range
- will be mapped to ``NaN``, except for the values `1` and `-1` for which the output is
- mapped to `+/-INF` respectively.
- .. math::
- \text{out}_{i} = \tanh^{-1}(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4).uniform_(-1, 1)
- >>> a
- tensor([ -0.9385, 0.2968, -0.8591, -0.1871 ])
- >>> torch.atanh(a)
- tensor([ -1.7253, 0.3060, -1.2899, -0.1893 ])
- """
- def atanh_(input: Tensor) -> Tensor: ...
- def avg_pool1d(
- input: Tensor,
- kernel_size: _int | _size,
- stride: _int | _size = (),
- padding: _int | _size = 0,
- ceil_mode: _bool = False,
- count_include_pad: _bool = True,
- ) -> Tensor: ...
- @overload
- def baddbmm(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- batch1: Tensor,
- batch2: Tensor,
- ) -> Tensor:
- r"""
- baddbmm(input, batch1, batch2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices in :attr:`batch1`
- and :attr:`batch2`.
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the same
- number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a
- :math:`(b \times n \times p)` tensor and :attr:`out` will be a
- :math:`(b \times n \times p)` tensor. Both :attr:`alpha` and :attr:`beta` mean the
- same as the scaling factors used in :meth:`torch.addbmm`.
- .. math::
- \text{out}_i = \beta\ \text{input}_i + \alpha\ (\text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): the tensor to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{batch1} \mathbin{@} \text{batch2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(10, 3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.baddbmm(M, batch1, batch2).size()
- torch.Size([10, 3, 5])
- """
- @overload
- def baddbmm(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- batch1: Tensor,
- batch2: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- baddbmm(input, batch1, batch2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices in :attr:`batch1`
- and :attr:`batch2`.
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the same
- number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a
- :math:`(b \times n \times p)` tensor and :attr:`out` will be a
- :math:`(b \times n \times p)` tensor. Both :attr:`alpha` and :attr:`beta` mean the
- same as the scaling factors used in :meth:`torch.addbmm`.
- .. math::
- \text{out}_i = \beta\ \text{input}_i + \alpha\ (\text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): the tensor to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{batch1} \mathbin{@} \text{batch2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(10, 3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.baddbmm(M, batch1, batch2).size()
- torch.Size([10, 3, 5])
- """
- @overload
- def baddbmm(
- input: Tensor,
- batch1: Tensor,
- batch2: Tensor,
- *,
- beta: Number | _complex = 1,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- baddbmm(input, batch1, batch2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices in :attr:`batch1`
- and :attr:`batch2`.
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the same
- number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a
- :math:`(b \times n \times p)` tensor and :attr:`out` will be a
- :math:`(b \times n \times p)` tensor. Both :attr:`alpha` and :attr:`beta` mean the
- same as the scaling factors used in :meth:`torch.addbmm`.
- .. math::
- \text{out}_i = \beta\ \text{input}_i + \alpha\ (\text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): the tensor to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{batch1} \mathbin{@} \text{batch2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(10, 3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.baddbmm(M, batch1, batch2).size()
- torch.Size([10, 3, 5])
- """
- @overload
- def baddbmm(
- input: Tensor,
- batch1: Tensor,
- batch2: Tensor,
- out_dtype: _dtype,
- *,
- beta: Number | _complex = 1,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- baddbmm(input, batch1, batch2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices in :attr:`batch1`
- and :attr:`batch2`.
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the same
- number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a
- :math:`(b \times n \times p)` tensor and :attr:`out` will be a
- :math:`(b \times n \times p)` tensor. Both :attr:`alpha` and :attr:`beta` mean the
- same as the scaling factors used in :meth:`torch.addbmm`.
- .. math::
- \text{out}_i = \beta\ \text{input}_i + \alpha\ (\text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): the tensor to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{batch1} \mathbin{@} \text{batch2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(10, 3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.baddbmm(M, batch1, batch2).size()
- torch.Size([10, 3, 5])
- """
- @overload
- def baddbmm(
- beta: Number | _complex,
- self: Tensor,
- batch1: Tensor,
- batch2: Tensor,
- ) -> Tensor:
- r"""
- baddbmm(input, batch1, batch2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices in :attr:`batch1`
- and :attr:`batch2`.
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the same
- number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a
- :math:`(b \times n \times p)` tensor and :attr:`out` will be a
- :math:`(b \times n \times p)` tensor. Both :attr:`alpha` and :attr:`beta` mean the
- same as the scaling factors used in :meth:`torch.addbmm`.
- .. math::
- \text{out}_i = \beta\ \text{input}_i + \alpha\ (\text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): the tensor to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{batch1} \mathbin{@} \text{batch2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(10, 3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.baddbmm(M, batch1, batch2).size()
- torch.Size([10, 3, 5])
- """
- @overload
- def baddbmm(
- beta: Number | _complex,
- self: Tensor,
- batch1: Tensor,
- batch2: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- baddbmm(input, batch1, batch2, out_dtype=None, *, beta=1, alpha=1, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices in :attr:`batch1`
- and :attr:`batch2`.
- :attr:`input` is added to the final result.
- :attr:`batch1` and :attr:`batch2` must be 3-D tensors each containing the same
- number of matrices.
- If :attr:`batch1` is a :math:`(b \times n \times m)` tensor, :attr:`batch2` is a
- :math:`(b \times m \times p)` tensor, then :attr:`input` must be
- :ref:`broadcastable <broadcasting-semantics>` with a
- :math:`(b \times n \times p)` tensor and :attr:`out` will be a
- :math:`(b \times n \times p)` tensor. Both :attr:`alpha` and :attr:`beta` mean the
- same as the scaling factors used in :meth:`torch.addbmm`.
- .. math::
- \text{out}_i = \beta\ \text{input}_i + \alpha\ (\text{batch1}_i \mathbin{@} \text{batch2}_i)
- If :attr:`beta` is 0, then the content of :attr:`input` will be ignored, and `nan` and `inf` in
- it will not be propagated.
- For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
- :attr:`alpha` must be real numbers, otherwise they should be integers.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): the tensor to be added
- batch1 (Tensor): the first batch of matrices to be multiplied
- batch2 (Tensor): the second batch of matrices to be multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- beta (Number, optional): multiplier for :attr:`input` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`\text{batch1} \mathbin{@} \text{batch2}` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- Example::
- >>> M = torch.randn(10, 3, 5)
- >>> batch1 = torch.randn(10, 3, 4)
- >>> batch2 = torch.randn(10, 4, 5)
- >>> torch.baddbmm(M, batch1, batch2).size()
- torch.Size([10, 3, 5])
- """
- @overload
- def bartlett_window(
- window_length: _int,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- bartlett_window(window_length, periodic=True, *, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Bartlett window function.
- .. math::
- w[n] = 1 - \left| \frac{2n}{N-1} - 1 \right| = \begin{cases}
- \frac{2n}{N - 1} & \text{if } 0 \leq n \leq \frac{N - 1}{2} \\
- 2 - \frac{2n}{N - 1} & \text{if } \frac{N - 1}{2} < n < N \\
- \end{cases},
- where :math:`N` is the full window size.
- The input :attr:`window_length` is a positive integer controlling the
- returned window size. :attr:`periodic` flag determines whether the returned
- window trims off the last duplicate value from the symmetric window and is
- ready to be used as a periodic window with functions like
- :meth:`torch.stft`. Therefore, if :attr:`periodic` is true, the :math:`N` in
- above formula is in fact :math:`\text{window\_length} + 1`. Also, we always have
- ``torch.bartlett_window(L, periodic=True)`` equal to
- ``torch.bartlett_window(L + 1, periodic=False)[:-1])``.
- .. note::
- If :attr:`window_length` :math:`=1`, the returned window contains a single value 1.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool, optional): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window
- """
- @overload
- def bartlett_window(
- window_length: _int,
- periodic: _bool,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- bartlett_window(window_length, periodic=True, *, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Bartlett window function.
- .. math::
- w[n] = 1 - \left| \frac{2n}{N-1} - 1 \right| = \begin{cases}
- \frac{2n}{N - 1} & \text{if } 0 \leq n \leq \frac{N - 1}{2} \\
- 2 - \frac{2n}{N - 1} & \text{if } \frac{N - 1}{2} < n < N \\
- \end{cases},
- where :math:`N` is the full window size.
- The input :attr:`window_length` is a positive integer controlling the
- returned window size. :attr:`periodic` flag determines whether the returned
- window trims off the last duplicate value from the symmetric window and is
- ready to be used as a periodic window with functions like
- :meth:`torch.stft`. Therefore, if :attr:`periodic` is true, the :math:`N` in
- above formula is in fact :math:`\text{window\_length} + 1`. Also, we always have
- ``torch.bartlett_window(L, periodic=True)`` equal to
- ``torch.bartlett_window(L + 1, periodic=False)[:-1])``.
- .. note::
- If :attr:`window_length` :math:`=1`, the returned window contains a single value 1.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool, optional): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window
- """
- def batch_norm(
- input: Tensor,
- weight: Tensor | None,
- bias: Tensor | None,
- running_mean: Tensor | None,
- running_var: Tensor | None,
- training: _bool,
- momentum: _float,
- eps: _float,
- cudnn_enabled: _bool,
- ) -> Tensor: ...
- def batch_norm_backward_elemt(
- grad_out: Tensor,
- input: Tensor,
- mean: Tensor,
- invstd: Tensor,
- weight: Tensor | None,
- sum_dy: Tensor,
- sum_dy_xmu: Tensor,
- count: Tensor,
- ) -> Tensor: ...
- def batch_norm_backward_reduce(
- grad_out: Tensor,
- input: Tensor,
- mean: Tensor,
- invstd: Tensor,
- weight: Tensor | None,
- input_g: _bool,
- weight_g: _bool,
- bias_g: _bool,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor]: ...
- def batch_norm_elemt(
- input: Tensor,
- weight: Tensor | None,
- bias: Tensor | None,
- mean: Tensor,
- invstd: Tensor,
- eps: _float,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def batch_norm_gather_stats(
- input: Tensor,
- mean: Tensor,
- invstd: Tensor,
- running_mean: Tensor | None,
- running_var: Tensor | None,
- momentum: _float,
- eps: _float,
- count: _int,
- ) -> tuple[Tensor, Tensor]: ...
- def batch_norm_gather_stats_with_counts(
- input: Tensor,
- mean: Tensor,
- invstd: Tensor,
- running_mean: Tensor | None,
- running_var: Tensor | None,
- momentum: _float,
- eps: _float,
- counts: Tensor,
- ) -> tuple[Tensor, Tensor]: ...
- def batch_norm_stats(input: Tensor, eps: _float) -> tuple[Tensor, Tensor]: ...
- def batch_norm_update_stats(
- input: Tensor,
- running_mean: Tensor | None,
- running_var: Tensor | None,
- momentum: _float,
- ) -> tuple[Tensor, Tensor]: ...
- @overload
- def bernoulli(
- input: Tensor,
- *,
- generator: Generator | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bernoulli(input: Tensor, *, generator: Optional[Generator], out: Optional[Tensor]) -> Tensor
- Draws binary random numbers (0 or 1) from a Bernoulli distribution.
- The :attr:`input` tensor should be a tensor containing probabilities
- to be used for drawing the binary random number.
- Hence, all values in :attr:`input` have to be in the range:
- :math:`0 \leq \text{input}_i \leq 1`.
- The :math:`\text{i}^{th}` element of the output tensor will draw a
- value :math:`1` according to the :math:`\text{i}^{th}` probability value given
- in :attr:`input`.
- .. math::
- \text{out}_{i} \sim \mathrm{Bernoulli}(p = \text{input}_{i})
- The returned :attr:`out` tensor only has values 0 or 1 and is of the same
- shape as :attr:`input`.
- :attr:`out` can have integral ``dtype``, but :attr:`input` must have floating
- point ``dtype``.
- Args:
- input (Tensor): the input tensor of probability values for the Bernoulli distribution
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.empty(3, 3).uniform_(0, 1) # generate a uniform random matrix with range [0, 1]
- >>> a
- tensor([[ 0.1737, 0.0950, 0.3609],
- [ 0.7148, 0.0289, 0.2676],
- [ 0.9456, 0.8937, 0.7202]])
- >>> torch.bernoulli(a)
- tensor([[ 1., 0., 0.],
- [ 0., 0., 0.],
- [ 1., 1., 1.]])
- >>> a = torch.ones(3, 3) # probability of drawing "1" is 1
- >>> torch.bernoulli(a)
- tensor([[ 1., 1., 1.],
- [ 1., 1., 1.],
- [ 1., 1., 1.]])
- >>> a = torch.zeros(3, 3) # probability of drawing "1" is 0
- >>> torch.bernoulli(a)
- tensor([[ 0., 0., 0.],
- [ 0., 0., 0.],
- [ 0., 0., 0.]])
- """
- @overload
- def bernoulli(
- input: Tensor,
- p: _float,
- *,
- generator: Generator | None = None,
- ) -> Tensor:
- r"""
- bernoulli(input: Tensor, *, generator: Optional[Generator], out: Optional[Tensor]) -> Tensor
- Draws binary random numbers (0 or 1) from a Bernoulli distribution.
- The :attr:`input` tensor should be a tensor containing probabilities
- to be used for drawing the binary random number.
- Hence, all values in :attr:`input` have to be in the range:
- :math:`0 \leq \text{input}_i \leq 1`.
- The :math:`\text{i}^{th}` element of the output tensor will draw a
- value :math:`1` according to the :math:`\text{i}^{th}` probability value given
- in :attr:`input`.
- .. math::
- \text{out}_{i} \sim \mathrm{Bernoulli}(p = \text{input}_{i})
- The returned :attr:`out` tensor only has values 0 or 1 and is of the same
- shape as :attr:`input`.
- :attr:`out` can have integral ``dtype``, but :attr:`input` must have floating
- point ``dtype``.
- Args:
- input (Tensor): the input tensor of probability values for the Bernoulli distribution
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.empty(3, 3).uniform_(0, 1) # generate a uniform random matrix with range [0, 1]
- >>> a
- tensor([[ 0.1737, 0.0950, 0.3609],
- [ 0.7148, 0.0289, 0.2676],
- [ 0.9456, 0.8937, 0.7202]])
- >>> torch.bernoulli(a)
- tensor([[ 1., 0., 0.],
- [ 0., 0., 0.],
- [ 1., 1., 1.]])
- >>> a = torch.ones(3, 3) # probability of drawing "1" is 1
- >>> torch.bernoulli(a)
- tensor([[ 1., 1., 1.],
- [ 1., 1., 1.],
- [ 1., 1., 1.]])
- >>> a = torch.zeros(3, 3) # probability of drawing "1" is 0
- >>> torch.bernoulli(a)
- tensor([[ 0., 0., 0.],
- [ 0., 0., 0.],
- [ 0., 0., 0.]])
- """
- def bilinear(
- input1: Tensor,
- input2: Tensor,
- weight: Tensor,
- bias: Tensor | None = None,
- ) -> Tensor: ...
- def binary_cross_entropy_with_logits(
- input: Tensor,
- target: Tensor,
- weight: Tensor | None = None,
- pos_weight: Tensor | None = None,
- reduction: _int = 1,
- ) -> Tensor: ...
- def bincount(
- input: Tensor,
- weights: Tensor | None = None,
- minlength: _int | SymInt = 0,
- ) -> Tensor:
- r"""
- bincount(input, weights=None, minlength=0) -> Tensor
- Count the frequency of each value in an array of non-negative ints.
- The number of bins (size 1) is one larger than the largest value in
- :attr:`input` unless :attr:`input` is empty, in which case the result is a
- tensor of size 0. If :attr:`minlength` is specified, the number of bins is at least
- :attr:`minlength` and if :attr:`input` is empty, then the result is tensor of size
- :attr:`minlength` filled with zeros. If ``n`` is the value at position ``i``,
- ``out[n] += weights[i]`` if :attr:`weights` is specified else
- ``out[n] += 1``.
- Note:
- This operation may produce nondeterministic gradients when given tensors on a CUDA device. See :doc:`/notes/randomness` for more information.
- Arguments:
- input (Tensor): 1-d int tensor
- weights (Tensor): optional, weight for each value in the input tensor.
- Should be of same size as input tensor.
- minlength (int): optional, minimum number of bins. Should be non-negative.
- Returns:
- output (Tensor): a tensor of shape ``Size([max(input) + 1])`` if
- :attr:`input` is non-empty, else ``Size(0)``
- Example::
- >>> input = torch.randint(0, 8, (5,), dtype=torch.int64)
- >>> weights = torch.linspace(0, 1, steps=5)
- >>> input, weights
- (tensor([4, 3, 6, 3, 4]),
- tensor([ 0.0000, 0.2500, 0.5000, 0.7500, 1.0000])
- >>> torch.bincount(input)
- tensor([0, 0, 0, 2, 2, 0, 1])
- >>> input.bincount(weights)
- tensor([0.0000, 0.0000, 0.0000, 1.0000, 1.0000, 0.0000, 0.5000])
- """
- def binomial(
- count: Tensor,
- prob: Tensor,
- generator: Generator | None = None,
- ) -> Tensor: ...
- @overload
- def bitwise_and(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bitwise_and(input, other, *, out=None) -> Tensor
- Computes the bitwise AND of :attr:`input` and :attr:`other`. The input tensor must be of
- integral or Boolean types. For bool tensors, it computes the logical AND.
- Args:
- input: the first input tensor
- other: the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_and(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([1, 0, 3], dtype=torch.int8)
- >>> torch.bitwise_and(torch.tensor([True, True, False]), torch.tensor([False, True, False]))
- tensor([ False, True, False])
- """
- @overload
- def bitwise_and(self: Number | _complex, other: Tensor) -> Tensor:
- r"""
- bitwise_and(input, other, *, out=None) -> Tensor
- Computes the bitwise AND of :attr:`input` and :attr:`other`. The input tensor must be of
- integral or Boolean types. For bool tensors, it computes the logical AND.
- Args:
- input: the first input tensor
- other: the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_and(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([1, 0, 3], dtype=torch.int8)
- >>> torch.bitwise_and(torch.tensor([True, True, False]), torch.tensor([False, True, False]))
- tensor([ False, True, False])
- """
- @overload
- def bitwise_and(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bitwise_and(input, other, *, out=None) -> Tensor
- Computes the bitwise AND of :attr:`input` and :attr:`other`. The input tensor must be of
- integral or Boolean types. For bool tensors, it computes the logical AND.
- Args:
- input: the first input tensor
- other: the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_and(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([1, 0, 3], dtype=torch.int8)
- >>> torch.bitwise_and(torch.tensor([True, True, False]), torch.tensor([False, True, False]))
- tensor([ False, True, False])
- """
- @overload
- def bitwise_left_shift(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bitwise_left_shift(input, other, *, out=None) -> Tensor
- Computes the left arithmetic shift of :attr:`input` by :attr:`other` bits.
- The input tensor must be of integral type. This operator supports
- :ref:`broadcasting to a common shape <broadcasting-semantics>` and
- :ref:`type promotion <type-promotion-doc>`.
- The operation applied is:
- .. math::
- \text{out}_i = \text{input}_i << \text{other}_i
- Args:
- input (Tensor or Scalar): the first input tensor
- other (Tensor or Scalar): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_left_shift(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-2, -2, 24], dtype=torch.int8)
- """
- @overload
- def bitwise_left_shift(self: Number | _complex, other: Tensor) -> Tensor:
- r"""
- bitwise_left_shift(input, other, *, out=None) -> Tensor
- Computes the left arithmetic shift of :attr:`input` by :attr:`other` bits.
- The input tensor must be of integral type. This operator supports
- :ref:`broadcasting to a common shape <broadcasting-semantics>` and
- :ref:`type promotion <type-promotion-doc>`.
- The operation applied is:
- .. math::
- \text{out}_i = \text{input}_i << \text{other}_i
- Args:
- input (Tensor or Scalar): the first input tensor
- other (Tensor or Scalar): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_left_shift(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-2, -2, 24], dtype=torch.int8)
- """
- @overload
- def bitwise_left_shift(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bitwise_left_shift(input, other, *, out=None) -> Tensor
- Computes the left arithmetic shift of :attr:`input` by :attr:`other` bits.
- The input tensor must be of integral type. This operator supports
- :ref:`broadcasting to a common shape <broadcasting-semantics>` and
- :ref:`type promotion <type-promotion-doc>`.
- The operation applied is:
- .. math::
- \text{out}_i = \text{input}_i << \text{other}_i
- Args:
- input (Tensor or Scalar): the first input tensor
- other (Tensor or Scalar): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_left_shift(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-2, -2, 24], dtype=torch.int8)
- """
- def bitwise_not(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- bitwise_not(input, *, out=None) -> Tensor
- Computes the bitwise NOT of the given input tensor. The input tensor must be of
- integral or Boolean types. For bool tensors, it computes the logical NOT.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_not(torch.tensor([-1, -2, 3], dtype=torch.int8))
- tensor([ 0, 1, -4], dtype=torch.int8)
- """
- @overload
- def bitwise_or(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bitwise_or(input: Tensor, other: Tensor, *, out: Optional[Tensor]) -> Tensor
- Computes the bitwise OR of :attr:`input` and :attr:`other`. The input tensor must be of
- integral or Boolean types. For bool tensors, it computes the logical OR.
- Args:
- input: the first input tensor
- other: the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_or(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-1, -2, 3], dtype=torch.int8)
- >>> torch.bitwise_or(torch.tensor([True, True, False]), torch.tensor([False, True, False]))
- tensor([ True, True, False])
- """
- @overload
- def bitwise_or(self: Number | _complex, other: Tensor) -> Tensor:
- r"""
- bitwise_or(input: Tensor, other: Tensor, *, out: Optional[Tensor]) -> Tensor
- Computes the bitwise OR of :attr:`input` and :attr:`other`. The input tensor must be of
- integral or Boolean types. For bool tensors, it computes the logical OR.
- Args:
- input: the first input tensor
- other: the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_or(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-1, -2, 3], dtype=torch.int8)
- >>> torch.bitwise_or(torch.tensor([True, True, False]), torch.tensor([False, True, False]))
- tensor([ True, True, False])
- """
- @overload
- def bitwise_or(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bitwise_or(input: Tensor, other: Tensor, *, out: Optional[Tensor]) -> Tensor
- Computes the bitwise OR of :attr:`input` and :attr:`other`. The input tensor must be of
- integral or Boolean types. For bool tensors, it computes the logical OR.
- Args:
- input: the first input tensor
- other: the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_or(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-1, -2, 3], dtype=torch.int8)
- >>> torch.bitwise_or(torch.tensor([True, True, False]), torch.tensor([False, True, False]))
- tensor([ True, True, False])
- """
- @overload
- def bitwise_right_shift(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bitwise_right_shift(input, other, *, out=None) -> Tensor
- Computes the right arithmetic shift of :attr:`input` by :attr:`other` bits.
- The input tensor must be of integral type. This operator supports
- :ref:`broadcasting to a common shape <broadcasting-semantics>` and
- :ref:`type promotion <type-promotion-doc>`.
- In any case, if the value of the right operand is negative or is greater
- or equal to the number of bits in the promoted left operand, the behavior is undefined.
- The operation applied is:
- .. math::
- \text{out}_i = \text{input}_i >> \text{other}_i
- Args:
- input (Tensor or Scalar): the first input tensor
- other (Tensor or Scalar): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_right_shift(torch.tensor([-2, -7, 31], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-1, -7, 3], dtype=torch.int8)
- """
- @overload
- def bitwise_right_shift(self: Number | _complex, other: Tensor) -> Tensor:
- r"""
- bitwise_right_shift(input, other, *, out=None) -> Tensor
- Computes the right arithmetic shift of :attr:`input` by :attr:`other` bits.
- The input tensor must be of integral type. This operator supports
- :ref:`broadcasting to a common shape <broadcasting-semantics>` and
- :ref:`type promotion <type-promotion-doc>`.
- In any case, if the value of the right operand is negative or is greater
- or equal to the number of bits in the promoted left operand, the behavior is undefined.
- The operation applied is:
- .. math::
- \text{out}_i = \text{input}_i >> \text{other}_i
- Args:
- input (Tensor or Scalar): the first input tensor
- other (Tensor or Scalar): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_right_shift(torch.tensor([-2, -7, 31], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-1, -7, 3], dtype=torch.int8)
- """
- @overload
- def bitwise_right_shift(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bitwise_right_shift(input, other, *, out=None) -> Tensor
- Computes the right arithmetic shift of :attr:`input` by :attr:`other` bits.
- The input tensor must be of integral type. This operator supports
- :ref:`broadcasting to a common shape <broadcasting-semantics>` and
- :ref:`type promotion <type-promotion-doc>`.
- In any case, if the value of the right operand is negative or is greater
- or equal to the number of bits in the promoted left operand, the behavior is undefined.
- The operation applied is:
- .. math::
- \text{out}_i = \text{input}_i >> \text{other}_i
- Args:
- input (Tensor or Scalar): the first input tensor
- other (Tensor or Scalar): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_right_shift(torch.tensor([-2, -7, 31], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-1, -7, 3], dtype=torch.int8)
- """
- @overload
- def bitwise_xor(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bitwise_xor(input, other, *, out=None) -> Tensor
- Computes the bitwise XOR of :attr:`input` and :attr:`other`. The input tensor must be of
- integral or Boolean types. For bool tensors, it computes the logical XOR.
- Args:
- input: the first input tensor
- other: the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_xor(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-2, -2, 0], dtype=torch.int8)
- >>> torch.bitwise_xor(torch.tensor([True, True, False]), torch.tensor([False, True, False]))
- tensor([ True, False, False])
- """
- @overload
- def bitwise_xor(self: Number | _complex, other: Tensor) -> Tensor:
- r"""
- bitwise_xor(input, other, *, out=None) -> Tensor
- Computes the bitwise XOR of :attr:`input` and :attr:`other`. The input tensor must be of
- integral or Boolean types. For bool tensors, it computes the logical XOR.
- Args:
- input: the first input tensor
- other: the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_xor(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-2, -2, 0], dtype=torch.int8)
- >>> torch.bitwise_xor(torch.tensor([True, True, False]), torch.tensor([False, True, False]))
- tensor([ True, False, False])
- """
- @overload
- def bitwise_xor(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bitwise_xor(input, other, *, out=None) -> Tensor
- Computes the bitwise XOR of :attr:`input` and :attr:`other`. The input tensor must be of
- integral or Boolean types. For bool tensors, it computes the logical XOR.
- Args:
- input: the first input tensor
- other: the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.bitwise_xor(torch.tensor([-1, -2, 3], dtype=torch.int8), torch.tensor([1, 0, 3], dtype=torch.int8))
- tensor([-2, -2, 0], dtype=torch.int8)
- >>> torch.bitwise_xor(torch.tensor([True, True, False]), torch.tensor([False, True, False]))
- tensor([ True, False, False])
- """
- @overload
- def blackman_window(
- window_length: _int,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- blackman_window(window_length, periodic=True, *, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Blackman window function.
- .. math::
- w[n] = 0.42 - 0.5 \cos \left( \frac{2 \pi n}{N - 1} \right) + 0.08 \cos \left( \frac{4 \pi n}{N - 1} \right)
- where :math:`N` is the full window size.
- The input :attr:`window_length` is a positive integer controlling the
- returned window size. :attr:`periodic` flag determines whether the returned
- window trims off the last duplicate value from the symmetric window and is
- ready to be used as a periodic window with functions like
- :meth:`torch.stft`. Therefore, if :attr:`periodic` is true, the :math:`N` in
- above formula is in fact :math:`\text{window\_length} + 1`. Also, we always have
- ``torch.blackman_window(L, periodic=True)`` equal to
- ``torch.blackman_window(L + 1, periodic=False)[:-1]``.
- .. note::
- If :attr:`window_length` :math:`=1`, the returned window contains a single value 1.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool, optional): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window
- """
- @overload
- def blackman_window(
- window_length: _int,
- periodic: _bool,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- blackman_window(window_length, periodic=True, *, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Blackman window function.
- .. math::
- w[n] = 0.42 - 0.5 \cos \left( \frac{2 \pi n}{N - 1} \right) + 0.08 \cos \left( \frac{4 \pi n}{N - 1} \right)
- where :math:`N` is the full window size.
- The input :attr:`window_length` is a positive integer controlling the
- returned window size. :attr:`periodic` flag determines whether the returned
- window trims off the last duplicate value from the symmetric window and is
- ready to be used as a periodic window with functions like
- :meth:`torch.stft`. Therefore, if :attr:`periodic` is true, the :math:`N` in
- above formula is in fact :math:`\text{window\_length} + 1`. Also, we always have
- ``torch.blackman_window(L, periodic=True)`` equal to
- ``torch.blackman_window(L + 1, periodic=False)[:-1]``.
- .. note::
- If :attr:`window_length` :math:`=1`, the returned window contains a single value 1.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool, optional): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window
- """
- @overload
- def bmm(
- input: Tensor,
- mat2: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bmm(input, mat2, out_dtype=None, *, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices stored in :attr:`input`
- and :attr:`mat2`.
- :attr:`input` and :attr:`mat2` must be 3-D tensors each containing
- the same number of matrices.
- If :attr:`input` is a :math:`(b \times n \times m)` tensor, :attr:`mat2` is a
- :math:`(b \times m \times p)` tensor, :attr:`out` will be a
- :math:`(b \times n \times p)` tensor.
- .. math::
- \text{out}_i = \text{input}_i \mathbin{@} \text{mat2}_i
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- .. note:: This function does not :ref:`broadcast <broadcasting-semantics>`.
- For broadcasting matrix products, see :func:`torch.matmul`.
- Args:
- input (Tensor): the first batch of matrices to be multiplied
- mat2 (Tensor): the second batch of matrices to be multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword Args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> input = torch.randn(10, 3, 4)
- >>> mat2 = torch.randn(10, 4, 5)
- >>> res = torch.bmm(input, mat2)
- >>> res.size()
- torch.Size([10, 3, 5])
- """
- @overload
- def bmm(
- input: Tensor,
- mat2: Tensor,
- out_dtype: _dtype,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bmm(input, mat2, out_dtype=None, *, out=None) -> Tensor
- Performs a batch matrix-matrix product of matrices stored in :attr:`input`
- and :attr:`mat2`.
- :attr:`input` and :attr:`mat2` must be 3-D tensors each containing
- the same number of matrices.
- If :attr:`input` is a :math:`(b \times n \times m)` tensor, :attr:`mat2` is a
- :math:`(b \times m \times p)` tensor, :attr:`out` will be a
- :math:`(b \times n \times p)` tensor.
- .. math::
- \text{out}_i = \text{input}_i \mathbin{@} \text{mat2}_i
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- .. note:: This function does not :ref:`broadcast <broadcasting-semantics>`.
- For broadcasting matrix products, see :func:`torch.matmul`.
- Args:
- input (Tensor): the first batch of matrices to be multiplied
- mat2 (Tensor): the second batch of matrices to be multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword Args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> input = torch.randn(10, 3, 4)
- >>> mat2 = torch.randn(10, 4, 5)
- >>> res = torch.bmm(input, mat2)
- >>> res.size()
- torch.Size([10, 3, 5])
- """
- def broadcast_to(input: Tensor, size: Sequence[_int | SymInt]) -> Tensor:
- r"""
- broadcast_to(input, shape) -> Tensor
- Broadcasts :attr:`input` to the shape :attr:`\shape`.
- Equivalent to calling ``input.expand(shape)``. See :meth:`~Tensor.expand` for details.
- Args:
- input (Tensor): the input tensor.
- shape (list, tuple, or :class:`torch.Size`): the new shape.
- Example::
- >>> x = torch.tensor([1, 2, 3])
- >>> torch.broadcast_to(x, (3, 3))
- tensor([[1, 2, 3],
- [1, 2, 3],
- [1, 2, 3]])
- """
- @overload
- def bucketize(
- input: Tensor,
- boundaries: Tensor,
- *,
- out_int32: _bool = False,
- right: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- bucketize(input, boundaries, *, out_int32=False, right=False, out=None) -> Tensor
- Returns the indices of the buckets to which each value in the :attr:`input` belongs, where the
- boundaries of the buckets are set by :attr:`boundaries`. Return a new tensor with the same size
- as :attr:`input`. If :attr:`right` is False (default), then the left boundary is open. Note that
- this behavior is opposite the behavior of
- `numpy.digitize <https://numpy.org/doc/stable/reference/generated/numpy.digitize.html>`_.
- More formally, the returned index satisfies the following rules:
- .. list-table::
- :widths: 15 85
- :header-rows: 1
- * - :attr:`right`
- - *returned index satisfies*
- * - False
- - ``boundaries[i-1] < input[m][n]...[l][x] <= boundaries[i]``
- * - True
- - ``boundaries[i-1] <= input[m][n]...[l][x] < boundaries[i]``
- Args:
- input (Tensor or Scalar): N-D tensor or a Scalar containing the search value(s).
- boundaries (Tensor): 1-D tensor, must contain a strictly increasing sequence, or the return value is undefined.
- Keyword args:
- out_int32 (bool, optional): indicate the output data type. torch.int32 if True, torch.int64 otherwise.
- Default value is False, i.e. default output data type is torch.int64.
- right (bool, optional): determines the behavior for values in :attr:`boundaries`. See the table above.
- out (Tensor, optional): the output tensor, must be the same size as :attr:`input` if provided.
- Example::
- >>> boundaries = torch.tensor([1, 3, 5, 7, 9])
- >>> boundaries
- tensor([1, 3, 5, 7, 9])
- >>> v = torch.tensor([[3, 6, 9], [3, 6, 9]])
- >>> v
- tensor([[3, 6, 9],
- [3, 6, 9]])
- >>> torch.bucketize(v, boundaries)
- tensor([[1, 3, 4],
- [1, 3, 4]])
- >>> torch.bucketize(v, boundaries, right=True)
- tensor([[2, 3, 5],
- [2, 3, 5]])
- """
- @overload
- def bucketize(
- self: Number | _complex,
- boundaries: Tensor,
- *,
- out_int32: _bool = False,
- right: _bool = False,
- ) -> Tensor:
- r"""
- bucketize(input, boundaries, *, out_int32=False, right=False, out=None) -> Tensor
- Returns the indices of the buckets to which each value in the :attr:`input` belongs, where the
- boundaries of the buckets are set by :attr:`boundaries`. Return a new tensor with the same size
- as :attr:`input`. If :attr:`right` is False (default), then the left boundary is open. Note that
- this behavior is opposite the behavior of
- `numpy.digitize <https://numpy.org/doc/stable/reference/generated/numpy.digitize.html>`_.
- More formally, the returned index satisfies the following rules:
- .. list-table::
- :widths: 15 85
- :header-rows: 1
- * - :attr:`right`
- - *returned index satisfies*
- * - False
- - ``boundaries[i-1] < input[m][n]...[l][x] <= boundaries[i]``
- * - True
- - ``boundaries[i-1] <= input[m][n]...[l][x] < boundaries[i]``
- Args:
- input (Tensor or Scalar): N-D tensor or a Scalar containing the search value(s).
- boundaries (Tensor): 1-D tensor, must contain a strictly increasing sequence, or the return value is undefined.
- Keyword args:
- out_int32 (bool, optional): indicate the output data type. torch.int32 if True, torch.int64 otherwise.
- Default value is False, i.e. default output data type is torch.int64.
- right (bool, optional): determines the behavior for values in :attr:`boundaries`. See the table above.
- out (Tensor, optional): the output tensor, must be the same size as :attr:`input` if provided.
- Example::
- >>> boundaries = torch.tensor([1, 3, 5, 7, 9])
- >>> boundaries
- tensor([1, 3, 5, 7, 9])
- >>> v = torch.tensor([[3, 6, 9], [3, 6, 9]])
- >>> v
- tensor([[3, 6, 9],
- [3, 6, 9]])
- >>> torch.bucketize(v, boundaries)
- tensor([[1, 3, 4],
- [1, 3, 4]])
- >>> torch.bucketize(v, boundaries, right=True)
- tensor([[2, 3, 5],
- [2, 3, 5]])
- """
- def can_cast(from_: _dtype, to: _dtype) -> _bool:
- r"""
- can_cast(from_, to) -> bool
- Determines if a type conversion is allowed under PyTorch casting rules
- described in the type promotion :ref:`documentation <type-promotion-doc>`.
- Args:
- from\_ (dtype): The original :class:`torch.dtype`.
- to (dtype): The target :class:`torch.dtype`.
- Example::
- >>> torch.can_cast(torch.double, torch.float)
- True
- >>> torch.can_cast(torch.float, torch.int)
- False
- """
- @overload
- def cat(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- dim: _int = 0,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- cat(tensors, dim=0, *, out=None) -> Tensor
- Concatenates the given sequence of tensors in :attr:`tensors` in the given dimension.
- All tensors must either have the same shape (except in the concatenating
- dimension) or be a 1-D empty tensor with size ``(0,)``.
- :func:`torch.cat` can be seen as an inverse operation for :func:`torch.split`
- and :func:`torch.chunk`.
- :func:`torch.cat` can be best understood via examples.
- .. seealso::
- :func:`torch.stack` concatenates the given sequence along a new dimension.
- Args:
- tensors (sequence of Tensors): Non-empty tensors provided must have the same shape,
- except in the cat dimension.
- dim (int, optional): the dimension over which the tensors are concatenated
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> x = torch.randn(2, 3)
- >>> x
- tensor([[ 0.6580, -1.0969, -0.4614],
- [-0.1034, -0.5790, 0.1497]])
- >>> torch.cat((x, x, x), 0)
- tensor([[ 0.6580, -1.0969, -0.4614],
- [-0.1034, -0.5790, 0.1497],
- [ 0.6580, -1.0969, -0.4614],
- [-0.1034, -0.5790, 0.1497],
- [ 0.6580, -1.0969, -0.4614],
- [-0.1034, -0.5790, 0.1497]])
- >>> torch.cat((x, x, x), 1)
- tensor([[ 0.6580, -1.0969, -0.4614, 0.6580, -1.0969, -0.4614, 0.6580,
- -1.0969, -0.4614],
- [-0.1034, -0.5790, 0.1497, -0.1034, -0.5790, 0.1497, -0.1034,
- -0.5790, 0.1497]])
- """
- @overload
- def cat(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- dim: str | EllipsisType | None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- cat(tensors, dim=0, *, out=None) -> Tensor
- Concatenates the given sequence of tensors in :attr:`tensors` in the given dimension.
- All tensors must either have the same shape (except in the concatenating
- dimension) or be a 1-D empty tensor with size ``(0,)``.
- :func:`torch.cat` can be seen as an inverse operation for :func:`torch.split`
- and :func:`torch.chunk`.
- :func:`torch.cat` can be best understood via examples.
- .. seealso::
- :func:`torch.stack` concatenates the given sequence along a new dimension.
- Args:
- tensors (sequence of Tensors): Non-empty tensors provided must have the same shape,
- except in the cat dimension.
- dim (int, optional): the dimension over which the tensors are concatenated
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> x = torch.randn(2, 3)
- >>> x
- tensor([[ 0.6580, -1.0969, -0.4614],
- [-0.1034, -0.5790, 0.1497]])
- >>> torch.cat((x, x, x), 0)
- tensor([[ 0.6580, -1.0969, -0.4614],
- [-0.1034, -0.5790, 0.1497],
- [ 0.6580, -1.0969, -0.4614],
- [-0.1034, -0.5790, 0.1497],
- [ 0.6580, -1.0969, -0.4614],
- [-0.1034, -0.5790, 0.1497]])
- >>> torch.cat((x, x, x), 1)
- tensor([[ 0.6580, -1.0969, -0.4614, 0.6580, -1.0969, -0.4614, 0.6580,
- -1.0969, -0.4614],
- [-0.1034, -0.5790, 0.1497, -0.1034, -0.5790, 0.1497, -0.1034,
- -0.5790, 0.1497]])
- """
- def ccol_indices_copy(
- input: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def ceil(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- ceil(input, *, out=None) -> Tensor
- Returns a new tensor with the ceil of the elements of :attr:`input`,
- the smallest integer greater than or equal to each element.
- For integer inputs, follows the array-api convention of returning a
- copy of the input tensor.
- .. math::
- \text{out}_{i} = \left\lceil \text{input}_{i} \right\rceil
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-0.6341, -1.4208, -1.0900, 0.5826])
- >>> torch.ceil(a)
- tensor([-0., -1., -1., 1.])
- """
- def ceil_(input: Tensor) -> Tensor: ...
- def celu(input: Tensor, alpha: Number | _complex = 1.0) -> Tensor: ...
- def celu_(input: Tensor, alpha: Number | _complex = 1.0) -> Tensor: ...
- def channel_shuffle(input: Tensor, groups: _int | SymInt) -> Tensor: ...
- def cholesky(
- input: Tensor,
- upper: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- cholesky(input, upper=False, *, out=None) -> Tensor
- Computes the Cholesky decomposition of a symmetric positive-definite
- matrix :math:`A` or for batches of symmetric positive-definite matrices.
- If :attr:`upper` is ``True``, the returned matrix ``U`` is upper-triangular, and
- the decomposition has the form:
- .. math::
- A = U^TU
- If :attr:`upper` is ``False``, the returned matrix ``L`` is lower-triangular, and
- the decomposition has the form:
- .. math::
- A = LL^T
- If :attr:`upper` is ``True``, and :math:`A` is a batch of symmetric positive-definite
- matrices, then the returned tensor will be composed of upper-triangular Cholesky factors
- of each of the individual matrices. Similarly, when :attr:`upper` is ``False``, the returned
- tensor will be composed of lower-triangular Cholesky factors of each of the individual
- matrices.
- .. warning::
- :func:`torch.cholesky` is deprecated in favor of :func:`torch.linalg.cholesky`
- and will be removed in a future PyTorch release.
- ``L = torch.cholesky(A)`` should be replaced with
- .. code:: python
- L = torch.linalg.cholesky(A)
- ``U = torch.cholesky(A, upper=True)`` should be replaced with
- .. code:: python
- U = torch.linalg.cholesky(A).mH
- This transform will produce equivalent results for all valid (symmetric positive definite) inputs.
- Args:
- input (Tensor): the input tensor :math:`A` of size :math:`(*, n, n)` where `*` is zero or more
- batch dimensions consisting of symmetric positive-definite matrices.
- upper (bool, optional): flag that indicates whether to return a
- upper or lower triangular matrix. Default: ``False``
- Keyword args:
- out (Tensor, optional): the output matrix
- Example::
- >>> a = torch.randn(3, 3)
- >>> a = a @ a.mT + 1e-3 # make symmetric positive-definite
- >>> l = torch.cholesky(a)
- >>> a
- tensor([[ 2.4112, -0.7486, 1.4551],
- [-0.7486, 1.3544, 0.1294],
- [ 1.4551, 0.1294, 1.6724]])
- >>> l
- tensor([[ 1.5528, 0.0000, 0.0000],
- [-0.4821, 1.0592, 0.0000],
- [ 0.9371, 0.5487, 0.7023]])
- >>> l @ l.mT
- tensor([[ 2.4112, -0.7486, 1.4551],
- [-0.7486, 1.3544, 0.1294],
- [ 1.4551, 0.1294, 1.6724]])
- >>> a = torch.randn(3, 2, 2) # Example for batched input
- >>> a = a @ a.mT + 1e-03 # make symmetric positive-definite
- >>> l = torch.cholesky(a)
- >>> z = l @ l.mT
- >>> torch.dist(z, a)
- tensor(2.3842e-07)
- """
- def cholesky_inverse(
- input: Tensor,
- upper: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- cholesky_inverse(L, upper=False, *, out=None) -> Tensor
- Computes the inverse of a complex Hermitian or real symmetric
- positive-definite matrix given its Cholesky decomposition.
- Let :math:`A` be a complex Hermitian or real symmetric positive-definite matrix,
- and :math:`L` its Cholesky decomposition such that:
- .. math::
- A = LL^{\text{H}}
- where :math:`L^{\text{H}}` is the conjugate transpose when :math:`L` is complex,
- and the transpose when :math:`L` is real-valued.
- Computes the inverse matrix :math:`A^{-1}`.
- Supports input of float, double, cfloat and cdouble dtypes.
- Also supports batches of matrices, and if :math:`A` is a batch of matrices
- then the output has the same batch dimensions.
- Args:
- L (Tensor): tensor of shape `(*, n, n)` where `*` is zero or more batch dimensions
- consisting of lower or upper triangular Cholesky decompositions of
- symmetric or Hermitian positive-definite matrices.
- upper (bool, optional): flag that indicates whether :math:`L` is lower triangular
- or upper triangular. Default: ``False``
- Keyword args:
- out (Tensor, optional): output tensor. Ignored if `None`. Default: `None`.
- Example::
- >>> A = torch.randn(3, 3)
- >>> A = A @ A.T + torch.eye(3) * 1e-3 # Creates a symmetric positive-definite matrix
- >>> L = torch.linalg.cholesky(A) # Extract Cholesky decomposition
- >>> torch.cholesky_inverse(L)
- tensor([[ 1.9314, 1.2251, -0.0889],
- [ 1.2251, 2.4439, 0.2122],
- [-0.0889, 0.2122, 0.1412]])
- >>> A.inverse()
- tensor([[ 1.9314, 1.2251, -0.0889],
- [ 1.2251, 2.4439, 0.2122],
- [-0.0889, 0.2122, 0.1412]])
- >>> A = torch.randn(3, 2, 2, dtype=torch.complex64)
- >>> A = A @ A.mH + torch.eye(2) * 1e-3 # Batch of Hermitian positive-definite matrices
- >>> L = torch.linalg.cholesky(A)
- >>> torch.dist(torch.inverse(A), torch.cholesky_inverse(L))
- tensor(5.6358e-7)
- """
- def cholesky_solve(
- input: Tensor,
- input2: Tensor,
- upper: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- cholesky_solve(B, L, upper=False, *, out=None) -> Tensor
- Computes the solution of a system of linear equations with complex Hermitian
- or real symmetric positive-definite lhs given its Cholesky decomposition.
- Let :math:`A` be a complex Hermitian or real symmetric positive-definite matrix,
- and :math:`L` its Cholesky decomposition such that:
- .. math::
- A = LL^{\text{H}}
- where :math:`L^{\text{H}}` is the conjugate transpose when :math:`L` is complex,
- and the transpose when :math:`L` is real-valued.
- Returns the solution :math:`X` of the following linear system:
- .. math::
- AX = B
- Supports inputs of float, double, cfloat and cdouble dtypes.
- Also supports batches of matrices, and if :math:`A` or :math:`B` is a batch of matrices
- then the output has the same batch dimensions.
- Args:
- B (Tensor): right-hand side tensor of shape `(*, n, k)`
- where :math:`*` is zero or more batch dimensions
- L (Tensor): tensor of shape `(*, n, n)` where `*` is zero or more batch dimensions
- consisting of lower or upper triangular Cholesky decompositions of
- symmetric or Hermitian positive-definite matrices.
- upper (bool, optional): flag that indicates whether :math:`L` is lower triangular
- or upper triangular. Default: ``False``.
- Keyword args:
- out (Tensor, optional): output tensor. Ignored if `None`. Default: `None`.
- Example::
- >>> A = torch.randn(3, 3)
- >>> A = A @ A.T + torch.eye(3) * 1e-3 # Creates a symmetric positive-definite matrix
- >>> L = torch.linalg.cholesky(A) # Extract Cholesky decomposition
- >>> B = torch.randn(3, 2)
- >>> torch.cholesky_solve(B, L)
- tensor([[ -8.1625, 19.6097],
- [ -5.8398, 14.2387],
- [ -4.3771, 10.4173]])
- >>> A.inverse() @ B
- tensor([[ -8.1626, 19.6097],
- [ -5.8398, 14.2387],
- [ -4.3771, 10.4173]])
- >>> A = torch.randn(3, 2, 2, dtype=torch.complex64)
- >>> A = A @ A.mH + torch.eye(2) * 1e-3 # Batch of Hermitian positive-definite matrices
- >>> L = torch.linalg.cholesky(A)
- >>> B = torch.randn(2, 1, dtype=torch.complex64)
- >>> X = torch.cholesky_solve(B, L)
- >>> torch.dist(X, A.inverse() @ B)
- tensor(1.6881e-5)
- """
- def choose_qparams_optimized(
- input: Tensor,
- numel: _int,
- n_bins: _int,
- ratio: _float,
- bit_width: _int,
- ) -> tuple[Tensor, Tensor]: ...
- def chunk(input: Tensor, chunks: _int, dim: _int = 0) -> tuple[Tensor, ...]:
- r"""
- chunk(input: Tensor, chunks: int, dim: int = 0) -> Tuple[Tensor, ...]
- Attempts to split a tensor into the specified number of chunks. Each chunk is a view of
- the input tensor.
- .. note::
- This function may return fewer than the specified number of chunks!
- .. seealso::
- :func:`torch.tensor_split` a function that always returns exactly the specified number of chunks
- If the tensor size along the given dimension :attr:`dim` is divisible by :attr:`chunks`,
- all returned chunks will be the same size.
- If the tensor size along the given dimension :attr:`dim` is not divisible by :attr:`chunks`,
- all returned chunks will be the same size, except the last one.
- If such division is not possible, this function may return fewer
- than the specified number of chunks.
- Arguments:
- input (Tensor): the tensor to split
- chunks (int): number of chunks to return
- dim (int): dimension along which to split the tensor
- Example:
- >>> torch.arange(11).chunk(6)
- (tensor([0, 1]),
- tensor([2, 3]),
- tensor([4, 5]),
- tensor([6, 7]),
- tensor([8, 9]),
- tensor([10]))
- >>> torch.arange(12).chunk(6)
- (tensor([0, 1]),
- tensor([2, 3]),
- tensor([4, 5]),
- tensor([6, 7]),
- tensor([8, 9]),
- tensor([10, 11]))
- >>> torch.arange(13).chunk(6)
- (tensor([0, 1, 2]),
- tensor([3, 4, 5]),
- tensor([6, 7, 8]),
- tensor([ 9, 10, 11]),
- tensor([12]))
- """
- @overload
- def clamp(
- input: Tensor,
- min: Tensor | None = None,
- max: Tensor | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- clamp(input, min=None, max=None, *, out=None) -> Tensor
- Clamps all elements in :attr:`input` into the range `[` :attr:`min`, :attr:`max` `]`.
- Letting min_value and max_value be :attr:`min` and :attr:`max`, respectively, this returns:
- .. math::
- y_i = \min(\max(x_i, \text{min\_value}_i), \text{max\_value}_i)
- If :attr:`min` is ``None``, there is no lower bound.
- Or, if :attr:`max` is ``None`` there is no upper bound.
- .. note::
- If :attr:`min` is greater than :attr:`max` :func:`torch.clamp(..., min, max) <torch.clamp>`
- sets all elements in :attr:`input` to the value of :attr:`max`.
- Args:
- input (Tensor): the input tensor.
- min (Number or Tensor, optional): lower-bound of the range to be clamped to
- max (Number or Tensor, optional): upper-bound of the range to be clamped to
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-1.7120, 0.1734, -0.0478, -0.0922])
- >>> torch.clamp(a, min=-0.5, max=0.5)
- tensor([-0.5000, 0.1734, -0.0478, -0.0922])
- >>> min = torch.linspace(-1, 1, steps=4)
- >>> torch.clamp(a, min=min)
- tensor([-1.0000, 0.1734, 0.3333, 1.0000])
- """
- @overload
- def clamp(
- input: Tensor,
- min: Number | _complex | None = None,
- max: Number | _complex | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- clamp(input, min=None, max=None, *, out=None) -> Tensor
- Clamps all elements in :attr:`input` into the range `[` :attr:`min`, :attr:`max` `]`.
- Letting min_value and max_value be :attr:`min` and :attr:`max`, respectively, this returns:
- .. math::
- y_i = \min(\max(x_i, \text{min\_value}_i), \text{max\_value}_i)
- If :attr:`min` is ``None``, there is no lower bound.
- Or, if :attr:`max` is ``None`` there is no upper bound.
- .. note::
- If :attr:`min` is greater than :attr:`max` :func:`torch.clamp(..., min, max) <torch.clamp>`
- sets all elements in :attr:`input` to the value of :attr:`max`.
- Args:
- input (Tensor): the input tensor.
- min (Number or Tensor, optional): lower-bound of the range to be clamped to
- max (Number or Tensor, optional): upper-bound of the range to be clamped to
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-1.7120, 0.1734, -0.0478, -0.0922])
- >>> torch.clamp(a, min=-0.5, max=0.5)
- tensor([-0.5000, 0.1734, -0.0478, -0.0922])
- >>> min = torch.linspace(-1, 1, steps=4)
- >>> torch.clamp(a, min=min)
- tensor([-1.0000, 0.1734, 0.3333, 1.0000])
- """
- @overload
- def clamp_(
- input: Tensor,
- min: Tensor | None = None,
- max: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def clamp_(
- input: Tensor,
- min: Number | _complex | None = None,
- max: Number | _complex | None = None,
- ) -> Tensor: ...
- @overload
- def clamp_max(
- input: Tensor,
- max: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def clamp_max(
- input: Tensor,
- max: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def clamp_max_(input: Tensor, max: Tensor) -> Tensor: ...
- @overload
- def clamp_max_(input: Tensor, max: Number | _complex) -> Tensor: ...
- @overload
- def clamp_min(
- input: Tensor,
- min: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def clamp_min(
- input: Tensor,
- min: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def clamp_min_(input: Tensor, min: Tensor) -> Tensor: ...
- @overload
- def clamp_min_(input: Tensor, min: Number | _complex) -> Tensor: ...
- @overload
- def clip(
- input: Tensor,
- min: Tensor | None = None,
- max: Tensor | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- clip(input, min=None, max=None, *, out=None) -> Tensor
- Alias for :func:`torch.clamp`.
- """
- @overload
- def clip(
- input: Tensor,
- min: Number | _complex | None = None,
- max: Number | _complex | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- clip(input, min=None, max=None, *, out=None) -> Tensor
- Alias for :func:`torch.clamp`.
- """
- @overload
- def clip_(
- input: Tensor,
- min: Tensor | None = None,
- max: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def clip_(
- input: Tensor,
- min: Number | _complex | None = None,
- max: Number | _complex | None = None,
- ) -> Tensor: ...
- def clone(
- input: Tensor,
- *,
- memory_format: memory_format | None = None,
- ) -> Tensor:
- r"""
- clone(input, *, memory_format=torch.preserve_format) -> Tensor
- Returns a copy of :attr:`input`.
- .. note::
- This function is differentiable, so gradients will flow back from the
- result of this operation to :attr:`input`. To create a tensor without an
- autograd relationship to :attr:`input` see :meth:`~Tensor.detach`.
- In addition, when ``torch.preserve_format`` is used:
- If the input tensor is dense (i.e., non-overlapping strided),
- its memory format (including strides) is retained.
- Otherwise (e.g., a non-dense view like a stepped slice),
- the output is converted to the dense (contiguous) format.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned tensor. Default: ``torch.preserve_format``.
- """
- def col_indices_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.col_indices`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def column_stack(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- column_stack(tensors, *, out=None) -> Tensor
- Creates a new tensor by horizontally stacking the tensors in :attr:`tensors`.
- Equivalent to ``torch.hstack(tensors)``, except each zero or one dimensional tensor ``t``
- in :attr:`tensors` is first reshaped into a ``(t.numel(), 1)`` column before being stacked horizontally.
- Args:
- tensors (sequence of Tensors): sequence of tensors to concatenate
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([1, 2, 3])
- >>> b = torch.tensor([4, 5, 6])
- >>> torch.column_stack((a, b))
- tensor([[1, 4],
- [2, 5],
- [3, 6]])
- >>> a = torch.arange(5)
- >>> b = torch.arange(10).reshape(5, 2)
- >>> torch.column_stack((a, b, b))
- tensor([[0, 0, 1, 0, 1],
- [1, 2, 3, 2, 3],
- [2, 4, 5, 4, 5],
- [3, 6, 7, 6, 7],
- [4, 8, 9, 8, 9]])
- """
- def combinations(
- input: Tensor,
- r: _int = 2,
- with_replacement: _bool = False,
- ) -> Tensor:
- r"""
- combinations(input: Tensor, r: int = 2, with_replacement: bool = False) -> seq
- Compute combinations of length :math:`r` of the given tensor. The behavior is similar to
- python's `itertools.combinations` when `with_replacement` is set to `False`, and
- `itertools.combinations_with_replacement` when `with_replacement` is set to `True`.
- Arguments:
- input (Tensor): 1D vector.
- r (int, optional): number of elements to combine
- with_replacement (bool, optional): whether to allow duplication in combination
- Returns:
- Tensor: A tensor equivalent to converting all the input tensors into lists, do
- `itertools.combinations` or `itertools.combinations_with_replacement` on these
- lists, and finally convert the resulting list into tensor.
- Example::
- >>> a = [1, 2, 3]
- >>> list(itertools.combinations(a, r=2))
- [(1, 2), (1, 3), (2, 3)]
- >>> list(itertools.combinations(a, r=3))
- [(1, 2, 3)]
- >>> list(itertools.combinations_with_replacement(a, r=2))
- [(1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3)]
- >>> tensor_a = torch.tensor(a)
- >>> torch.combinations(tensor_a)
- tensor([[1, 2],
- [1, 3],
- [2, 3]])
- >>> torch.combinations(tensor_a, r=3)
- tensor([[1, 2, 3]])
- >>> torch.combinations(tensor_a, with_replacement=True)
- tensor([[1, 1],
- [1, 2],
- [1, 3],
- [2, 2],
- [2, 3],
- [3, 3]])
- """
- def complex(
- real: Tensor,
- imag: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- complex(real, imag, *, out=None) -> Tensor
- Constructs a complex tensor with its real part equal to :attr:`real` and its
- imaginary part equal to :attr:`imag`.
- Args:
- real (Tensor): The real part of the complex tensor. Must be half, float or double.
- imag (Tensor): The imaginary part of the complex tensor. Must be same dtype
- as :attr:`real`.
- Keyword args:
- out (Tensor): If the inputs are ``torch.float32``, must be
- ``torch.complex64``. If the inputs are ``torch.float64``, must be
- ``torch.complex128``.
- Example::
- >>> real = torch.tensor([1, 2], dtype=torch.float32)
- >>> imag = torch.tensor([3, 4], dtype=torch.float32)
- >>> z = torch.complex(real, imag)
- >>> z
- tensor([(1.+3.j), (2.+4.j)])
- >>> z.dtype
- torch.complex64
- """
- @overload
- def concat(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- dim: _int = 0,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- concat(tensors, dim=0, *, out=None) -> Tensor
- Alias of :func:`torch.cat`.
- """
- @overload
- def concat(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- dim: str | EllipsisType | None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- concat(tensors, dim=0, *, out=None) -> Tensor
- Alias of :func:`torch.cat`.
- """
- @overload
- def concatenate(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- dim: _int = 0,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- concatenate(tensors, axis=0, out=None) -> Tensor
- Alias of :func:`torch.cat`.
- """
- @overload
- def concatenate(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- dim: str | EllipsisType | None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- concatenate(tensors, axis=0, out=None) -> Tensor
- Alias of :func:`torch.cat`.
- """
- def conj(input: Tensor) -> Tensor:
- r"""
- conj(input) -> Tensor
- Returns a view of :attr:`input` with a flipped conjugate bit. If :attr:`input` has a non-complex dtype,
- this function just returns :attr:`input`.
- .. note::
- :func:`torch.conj` performs a lazy conjugation, but the actual conjugated tensor can be materialized
- at any time using :func:`torch.resolve_conj`.
- .. warning:: In the future, :func:`torch.conj` may return a non-writeable view for an :attr:`input` of
- non-complex dtype. It's recommended that programs not modify the tensor returned by :func:`torch.conj_physical`
- when :attr:`input` is of non-complex dtype to be compatible with this change.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> x = torch.tensor([-1 + 1j, -2 + 2j, 3 - 3j])
- >>> x.is_conj()
- False
- >>> y = torch.conj(x)
- >>> y.is_conj()
- True
- """
- def conj_physical(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- conj_physical(input, *, out=None) -> Tensor
- Computes the element-wise conjugate of the given :attr:`input` tensor.
- If :attr:`input` has a non-complex dtype, this function just returns :attr:`input`.
- .. note::
- This performs the conjugate operation regardless of the fact conjugate bit is set or not.
- .. warning:: In the future, :func:`torch.conj_physical` may return a non-writeable view for an :attr:`input` of
- non-complex dtype. It's recommended that programs not modify the tensor returned by :func:`torch.conj_physical`
- when :attr:`input` is of non-complex dtype to be compatible with this change.
- .. math::
- \text{out}_{i} = conj(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.conj_physical(torch.tensor([-1 + 1j, -2 + 2j, 3 - 3j]))
- tensor([-1 - 1j, -2 - 2j, 3 + 3j])
- """
- def conj_physical_(input: Tensor) -> Tensor: ...
- def constant_pad_nd(
- input: Tensor,
- pad: Sequence[_int | SymInt],
- value: Number | _complex = 0,
- ) -> Tensor: ...
- @overload
- def conv1d(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None = None,
- stride: _int | SymInt | Sequence[_int | SymInt] = 1,
- padding: _int | SymInt | Sequence[_int | SymInt] = 0,
- dilation: _int | SymInt | Sequence[_int | SymInt] = 1,
- groups: _int | SymInt = 1,
- ) -> Tensor: ...
- @overload
- def conv1d(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None = None,
- stride: _int | SymInt | Sequence[_int | SymInt] = 1,
- padding: str = "valid",
- dilation: _int | SymInt | Sequence[_int | SymInt] = 1,
- groups: _int | SymInt = 1,
- ) -> Tensor: ...
- @overload
- def conv2d(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None = None,
- stride: _int | SymInt | Sequence[_int | SymInt] = 1,
- padding: _int | SymInt | Sequence[_int | SymInt] = 0,
- dilation: _int | SymInt | Sequence[_int | SymInt] = 1,
- groups: _int | SymInt = 1,
- ) -> Tensor: ...
- @overload
- def conv2d(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None = None,
- stride: _int | SymInt | Sequence[_int | SymInt] = 1,
- padding: str = "valid",
- dilation: _int | SymInt | Sequence[_int | SymInt] = 1,
- groups: _int | SymInt = 1,
- ) -> Tensor: ...
- @overload
- def conv3d(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None = None,
- stride: _int | SymInt | Sequence[_int | SymInt] = 1,
- padding: _int | SymInt | Sequence[_int | SymInt] = 0,
- dilation: _int | SymInt | Sequence[_int | SymInt] = 1,
- groups: _int | SymInt = 1,
- ) -> Tensor: ...
- @overload
- def conv3d(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None = None,
- stride: _int | SymInt | Sequence[_int | SymInt] = 1,
- padding: str = "valid",
- dilation: _int | SymInt | Sequence[_int | SymInt] = 1,
- groups: _int | SymInt = 1,
- ) -> Tensor: ...
- def conv_tbc(
- input: Tensor,
- weight: Tensor,
- bias: Tensor,
- pad: _int = 0,
- ) -> Tensor: ...
- def conv_transpose1d(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None = None,
- stride: _int | SymInt | Sequence[_int | SymInt] = 1,
- padding: _int | SymInt | Sequence[_int | SymInt] = 0,
- output_padding: _int | SymInt | Sequence[_int | SymInt] = 0,
- groups: _int | SymInt = 1,
- dilation: _int | SymInt | Sequence[_int | SymInt] = 1,
- ) -> Tensor: ...
- def conv_transpose2d(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None = None,
- stride: _int | SymInt | Sequence[_int | SymInt] = 1,
- padding: _int | SymInt | Sequence[_int | SymInt] = 0,
- output_padding: _int | SymInt | Sequence[_int | SymInt] = 0,
- groups: _int | SymInt = 1,
- dilation: _int | SymInt | Sequence[_int | SymInt] = 1,
- ) -> Tensor: ...
- def conv_transpose3d(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None = None,
- stride: _int | SymInt | Sequence[_int | SymInt] = 1,
- padding: _int | SymInt | Sequence[_int | SymInt] = 0,
- output_padding: _int | SymInt | Sequence[_int | SymInt] = 0,
- groups: _int | SymInt = 1,
- dilation: _int | SymInt | Sequence[_int | SymInt] = 1,
- ) -> Tensor: ...
- def convolution(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- stride: Sequence[_int | SymInt],
- padding: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- transposed: _bool,
- output_padding: Sequence[_int | SymInt],
- groups: _int | SymInt,
- ) -> Tensor: ...
- @overload
- def copysign(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- copysign(input, other, *, out=None) -> Tensor
- Create a new floating-point tensor with the magnitude of :attr:`input` and the sign of :attr:`other`, elementwise.
- .. math::
- \text{out}_{i} = \begin{cases}
- -|\text{input}_{i}| & \text{if } \text{other}_{i} \leq -0.0 \\
- |\text{input}_{i}| & \text{if } \text{other}_{i} \geq 0.0 \\
- \end{cases}
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- and integer and float inputs.
- Args:
- input (Tensor): magnitudes.
- other (Tensor or Number): contains value(s) whose signbit(s) are
- applied to the magnitudes in :attr:`input`.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(5)
- >>> a
- tensor([-1.2557, -0.0026, -0.5387, 0.4740, -0.9244])
- >>> torch.copysign(a, 1)
- tensor([1.2557, 0.0026, 0.5387, 0.4740, 0.9244])
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.7079, 0.2778, -1.0249, 0.5719],
- [-0.0059, -0.2600, -0.4475, -1.3948],
- [ 0.3667, -0.9567, -2.5757, -0.1751],
- [ 0.2046, -0.0742, 0.2998, -0.1054]])
- >>> b = torch.randn(4)
- tensor([ 0.2373, 0.3120, 0.3190, -1.1128])
- >>> torch.copysign(a, b)
- tensor([[ 0.7079, 0.2778, 1.0249, -0.5719],
- [ 0.0059, 0.2600, 0.4475, -1.3948],
- [ 0.3667, 0.9567, 2.5757, -0.1751],
- [ 0.2046, 0.0742, 0.2998, -0.1054]])
- >>> a = torch.tensor([1.])
- >>> b = torch.tensor([-0.])
- >>> torch.copysign(a, b)
- tensor([-1.])
- .. note::
- copysign handles signed zeros. If the other argument has a negative zero (-0),
- the corresponding output value will be negative.
- """
- @overload
- def copysign(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- copysign(input, other, *, out=None) -> Tensor
- Create a new floating-point tensor with the magnitude of :attr:`input` and the sign of :attr:`other`, elementwise.
- .. math::
- \text{out}_{i} = \begin{cases}
- -|\text{input}_{i}| & \text{if } \text{other}_{i} \leq -0.0 \\
- |\text{input}_{i}| & \text{if } \text{other}_{i} \geq 0.0 \\
- \end{cases}
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- and integer and float inputs.
- Args:
- input (Tensor): magnitudes.
- other (Tensor or Number): contains value(s) whose signbit(s) are
- applied to the magnitudes in :attr:`input`.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(5)
- >>> a
- tensor([-1.2557, -0.0026, -0.5387, 0.4740, -0.9244])
- >>> torch.copysign(a, 1)
- tensor([1.2557, 0.0026, 0.5387, 0.4740, 0.9244])
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.7079, 0.2778, -1.0249, 0.5719],
- [-0.0059, -0.2600, -0.4475, -1.3948],
- [ 0.3667, -0.9567, -2.5757, -0.1751],
- [ 0.2046, -0.0742, 0.2998, -0.1054]])
- >>> b = torch.randn(4)
- tensor([ 0.2373, 0.3120, 0.3190, -1.1128])
- >>> torch.copysign(a, b)
- tensor([[ 0.7079, 0.2778, 1.0249, -0.5719],
- [ 0.0059, 0.2600, 0.4475, -1.3948],
- [ 0.3667, 0.9567, 2.5757, -0.1751],
- [ 0.2046, 0.0742, 0.2998, -0.1054]])
- >>> a = torch.tensor([1.])
- >>> b = torch.tensor([-0.])
- >>> torch.copysign(a, b)
- tensor([-1.])
- .. note::
- copysign handles signed zeros. If the other argument has a negative zero (-0),
- the corresponding output value will be negative.
- """
- def corrcoef(input: Tensor) -> Tensor:
- r"""
- corrcoef(input) -> Tensor
- Estimates the Pearson product-moment correlation coefficient matrix of the variables given by the :attr:`input` matrix,
- where rows are the variables and columns are the observations.
- .. note::
- The correlation coefficient matrix R is computed using the covariance matrix C as given by
- :math:`R_{ij} = \frac{ C_{ij} } { \sqrt{ C_{ii} * C_{jj} } }`
- .. note::
- Due to floating point rounding, the resulting array may not be Hermitian and its diagonal elements may not be 1.
- The real and imaginary values are clipped to the interval [-1, 1] in an attempt to improve this situation.
- Args:
- input (Tensor): A 2D matrix containing multiple variables and observations, or a
- Scalar or 1D vector representing a single variable.
- Returns:
- (Tensor) The correlation coefficient matrix of the variables.
- .. seealso::
- :func:`torch.cov` covariance matrix.
- Example::
- >>> x = torch.tensor([[0, 1, 2], [2, 1, 0]])
- >>> torch.corrcoef(x)
- tensor([[ 1., -1.],
- [-1., 1.]])
- >>> x = torch.randn(2, 4)
- >>> x
- tensor([[-0.2678, -0.0908, -0.3766, 0.2780],
- [-0.5812, 0.1535, 0.2387, 0.2350]])
- >>> torch.corrcoef(x)
- tensor([[1.0000, 0.3582],
- [0.3582, 1.0000]])
- >>> torch.corrcoef(x[0])
- tensor(1.)
- """
- def cos(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- cos(input, *, out=None) -> Tensor
- Returns a new tensor with the cosine of the elements of :attr:`input` given in radians.
- .. math::
- \text{out}_{i} = \cos(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 1.4309, 1.2706, -0.8562, 0.9796])
- >>> torch.cos(a)
- tensor([ 0.1395, 0.2957, 0.6553, 0.5574])
- """
- def cos_(input: Tensor) -> Tensor: ...
- def cosh(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- cosh(input, *, out=None) -> Tensor
- Returns a new tensor with the hyperbolic cosine of the elements of
- :attr:`input`.
- .. math::
- \text{out}_{i} = \cosh(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.1632, 1.1835, -0.6979, -0.7325])
- >>> torch.cosh(a)
- tensor([ 1.0133, 1.7860, 1.2536, 1.2805])
- .. note::
- When :attr:`input` is on the CPU, the implementation of torch.cosh may use
- the Sleef library, which rounds very large results to infinity or negative
- infinity. See `here <https://sleef.org/purec.xhtml>`_ for details.
- """
- def cosh_(input: Tensor) -> Tensor: ...
- def cosine_embedding_loss(
- input1: Tensor,
- input2: Tensor,
- target: Tensor,
- margin: _float = 0.0,
- reduction: _int = 1,
- ) -> Tensor: ...
- def cosine_similarity(
- x1: Tensor,
- x2: Tensor,
- dim: _int = 1,
- eps: _float = 1e-08,
- ) -> Tensor: ...
- @overload
- def count_nonzero(input: Tensor, dim: _int | None = None) -> Tensor:
- r"""
- count_nonzero(input, dim=None) -> Tensor
- Counts the number of non-zero values in the tensor :attr:`input` along the given :attr:`dim`.
- If no dim is specified then all non-zeros in the tensor are counted.
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): Dim or tuple of dims along which to count non-zeros.
- Example::
- >>> x = torch.zeros(3,3)
- >>> x[torch.randn(3,3) > 0.5] = 1
- >>> x
- tensor([[0., 1., 1.],
- [0., 0., 0.],
- [0., 0., 1.]])
- >>> torch.count_nonzero(x)
- tensor(3)
- >>> torch.count_nonzero(x, dim=0)
- tensor([0, 1, 2])
- """
- @overload
- def count_nonzero(input: Tensor, dim: _size) -> Tensor:
- r"""
- count_nonzero(input, dim=None) -> Tensor
- Counts the number of non-zero values in the tensor :attr:`input` along the given :attr:`dim`.
- If no dim is specified then all non-zeros in the tensor are counted.
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): Dim or tuple of dims along which to count non-zeros.
- Example::
- >>> x = torch.zeros(3,3)
- >>> x[torch.randn(3,3) > 0.5] = 1
- >>> x
- tensor([[0., 1., 1.],
- [0., 0., 0.],
- [0., 0., 1.]])
- >>> torch.count_nonzero(x)
- tensor(3)
- >>> torch.count_nonzero(x, dim=0)
- tensor([0, 1, 2])
- """
- def cov(
- input: Tensor,
- *,
- correction: _int = 1,
- fweights: Tensor | None = None,
- aweights: Tensor | None = None,
- ) -> Tensor:
- r"""
- cov(input, *, correction=1, fweights=None, aweights=None) -> Tensor
- Estimates the covariance matrix of the variables given by the :attr:`input` matrix, where rows are
- the variables and columns are the observations.
- A covariance matrix is a square matrix giving the covariance of each pair of variables. The diagonal contains
- the variance of each variable (covariance of a variable with itself). By definition, if :attr:`input` represents
- a single variable (Scalar or 1D) then its variance is returned.
- The sample covariance of the variables :math:`x` and :math:`y` is given by:
- .. math::
- \text{cov}(x,y) = \frac{\sum^{N}_{i = 1}(x_{i} - \bar{x})(y_{i} - \bar{y})}{\max(0,~N~-~\delta N)}
- where :math:`\bar{x}` and :math:`\bar{y}` are the simple means of the :math:`x` and :math:`y` respectively, and
- :math:`\delta N` is the :attr:`correction`.
- If :attr:`fweights` and/or :attr:`aweights` are provided, the weighted covariance
- is calculated, which is given by:
- .. math::
- \text{cov}_w(x,y) = \frac{\sum^{N}_{i = 1}w_i(x_{i} - \mu_x^*)(y_{i} - \mu_y^*)}
- {\max(0,~\sum^{N}_{i = 1}w_i~-~\frac{\sum^{N}_{i = 1}w_ia_i}{\sum^{N}_{i = 1}w_i}~\delta N)}
- where :math:`w` denotes :attr:`fweights` or :attr:`aweights` (``f`` and ``a`` for brevity) based on whichever is
- provided, or :math:`w = f \times a` if both are provided, and
- :math:`\mu_x^* = \frac{\sum^{N}_{i = 1}w_ix_{i} }{\sum^{N}_{i = 1}w_i}` is the weighted mean of the variable. If not
- provided, ``f`` and/or ``a`` can be seen as a :math:`\mathbb{1}` vector of appropriate size.
- Args:
- input (Tensor): A 2D matrix containing multiple variables and observations, or a
- Scalar or 1D vector representing a single variable.
- Keyword Args:
- correction (int, optional): difference between the sample size and sample degrees of freedom.
- Defaults to Bessel's correction, ``correction = 1`` which returns the unbiased estimate,
- even if both :attr:`fweights` and :attr:`aweights` are specified. ``correction = 0``
- will return the simple average. Defaults to ``1``.
- fweights (tensor, optional): A Scalar or 1D tensor of observation vector frequencies representing the number of
- times each observation should be repeated. Its numel must equal the number of columns of :attr:`input`.
- Must have integral dtype. Ignored if ``None``. Defaults to ``None``.
- aweights (tensor, optional): A Scalar or 1D array of observation vector weights.
- These relative weights are typically large for observations considered "important" and smaller for
- observations considered less "important". Its numel must equal the number of columns of :attr:`input`.
- Must have floating point dtype. Ignored if ``None``. Defaults to ``None``.
- Returns:
- (Tensor) The covariance matrix of the variables.
- .. seealso::
- :func:`torch.corrcoef` normalized covariance matrix.
- Example::
- >>> x = torch.tensor([[0, 2], [1, 1], [2, 0]]).T
- >>> x
- tensor([[0, 1, 2],
- [2, 1, 0]])
- >>> torch.cov(x)
- tensor([[ 1., -1.],
- [-1., 1.]])
- >>> torch.cov(x, correction=0)
- tensor([[ 0.6667, -0.6667],
- [-0.6667, 0.6667]])
- >>> fw = torch.randint(1, 10, (3,))
- >>> fw
- tensor([1, 6, 9])
- >>> aw = torch.rand(3)
- >>> aw
- tensor([0.4282, 0.0255, 0.4144])
- >>> torch.cov(x, fweights=fw, aweights=aw)
- tensor([[ 0.4169, -0.4169],
- [-0.4169, 0.4169]])
- """
- def cross(
- input: Tensor,
- other: Tensor,
- dim: _int | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- cross(input, other, dim=None, *, out=None) -> Tensor
- Returns the cross product of vectors in dimension :attr:`dim` of :attr:`input`
- and :attr:`other`.
- Supports input of float, double, cfloat and cdouble dtypes. Also supports batches
- of vectors, for which it computes the product along the dimension :attr:`dim`.
- In this case, the output has the same batch dimensions as the inputs.
- .. warning::
- If :attr:`dim` is not given, it defaults to the first dimension found
- with the size 3. Note that this might be unexpected.
- This behavior is deprecated and will be changed to match that of :func:`torch.linalg.cross`
- in a future release.
- .. seealso::
- :func:`torch.linalg.cross` which has dim=-1 as default.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the second input tensor
- dim (int, optional): the dimension to take the cross-product in.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4, 3)
- >>> a
- tensor([[-0.3956, 1.1455, 1.6895],
- [-0.5849, 1.3672, 0.3599],
- [-1.1626, 0.7180, -0.0521],
- [-0.1339, 0.9902, -2.0225]])
- >>> b = torch.randn(4, 3)
- >>> b
- tensor([[-0.0257, -1.4725, -1.2251],
- [-1.1479, -0.7005, -1.9757],
- [-1.3904, 0.3726, -1.1836],
- [-0.9688, -0.7153, 0.2159]])
- >>> torch.cross(a, b, dim=1)
- tensor([[ 1.0844, -0.5281, 0.6120],
- [-2.4490, -1.5687, 1.9792],
- [-0.8304, -1.3037, 0.5650],
- [-1.2329, 1.9883, 1.0551]])
- >>> torch.cross(a, b)
- tensor([[ 1.0844, -0.5281, 0.6120],
- [-2.4490, -1.5687, 1.9792],
- [-0.8304, -1.3037, 0.5650],
- [-1.2329, 1.9883, 1.0551]])
- """
- def crow_indices_copy(
- input: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.crow_indices`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- @overload
- def ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: _size,
- target_lengths: _size,
- blank: _int = 0,
- reduction: _int = 1,
- zero_infinity: _bool = False,
- ) -> Tensor: ...
- @overload
- def ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: Tensor,
- target_lengths: Tensor,
- blank: _int = 0,
- reduction: _int = 1,
- zero_infinity: _bool = False,
- ) -> Tensor: ...
- def cudnn_affine_grid_generator(
- theta: Tensor,
- N: _int,
- C: _int,
- H: _int,
- W: _int,
- ) -> Tensor: ...
- def cudnn_batch_norm(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- running_mean: Tensor | None,
- running_var: Tensor | None,
- training: _bool,
- exponential_average_factor: _float,
- epsilon: _float,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor]: ...
- def cudnn_convolution(
- input: Tensor,
- weight: Tensor,
- padding: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- benchmark: _bool,
- deterministic: _bool,
- allow_tf32: _bool,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def cudnn_convolution_add_relu(
- input: Tensor,
- weight: Tensor,
- z: Tensor,
- alpha: Number | _complex | None,
- bias: Tensor | None,
- stride: Sequence[_int | SymInt],
- padding: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- ) -> Tensor: ...
- def cudnn_convolution_relu(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- stride: Sequence[_int | SymInt],
- padding: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- ) -> Tensor: ...
- def cudnn_convolution_transpose(
- input: Tensor,
- weight: Tensor,
- padding: Sequence[_int | SymInt],
- output_padding: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- benchmark: _bool,
- deterministic: _bool,
- allow_tf32: _bool,
- ) -> Tensor: ...
- def cudnn_grid_sampler(input: Tensor, grid: Tensor) -> Tensor: ...
- def cudnn_is_acceptable(input: Tensor) -> _bool: ...
- @overload
- def cummax(
- input: Tensor,
- dim: _int,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.cummax:
- r"""
- cummax(input, dim, *, out=None) -> (Tensor, LongTensor)
- Returns a namedtuple ``(values, indices)`` where ``values`` is the cumulative maximum of
- elements of :attr:`input` in the dimension :attr:`dim`. And ``indices`` is the index
- location of each maximum value found in the dimension :attr:`dim`.
- .. math::
- y_i = max(x_1, x_2, x_3, \dots, x_i)
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to do the operation over
- Keyword args:
- out (tuple, optional): the result tuple of two output tensors (values, indices)
- Example::
- >>> a = torch.randn(10)
- >>> a
- tensor([-0.3449, -1.5447, 0.0685, -1.5104, -1.1706, 0.2259, 1.4696, -1.3284,
- 1.9946, -0.8209])
- >>> torch.cummax(a, dim=0)
- torch.return_types.cummax(
- values=tensor([-0.3449, -0.3449, 0.0685, 0.0685, 0.0685, 0.2259, 1.4696, 1.4696,
- 1.9946, 1.9946]),
- indices=tensor([0, 0, 2, 2, 2, 5, 6, 6, 8, 8]))
- """
- @overload
- def cummax(
- input: Tensor,
- dim: str | EllipsisType | None,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.cummax:
- r"""
- cummax(input, dim, *, out=None) -> (Tensor, LongTensor)
- Returns a namedtuple ``(values, indices)`` where ``values`` is the cumulative maximum of
- elements of :attr:`input` in the dimension :attr:`dim`. And ``indices`` is the index
- location of each maximum value found in the dimension :attr:`dim`.
- .. math::
- y_i = max(x_1, x_2, x_3, \dots, x_i)
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to do the operation over
- Keyword args:
- out (tuple, optional): the result tuple of two output tensors (values, indices)
- Example::
- >>> a = torch.randn(10)
- >>> a
- tensor([-0.3449, -1.5447, 0.0685, -1.5104, -1.1706, 0.2259, 1.4696, -1.3284,
- 1.9946, -0.8209])
- >>> torch.cummax(a, dim=0)
- torch.return_types.cummax(
- values=tensor([-0.3449, -0.3449, 0.0685, 0.0685, 0.0685, 0.2259, 1.4696, 1.4696,
- 1.9946, 1.9946]),
- indices=tensor([0, 0, 2, 2, 2, 5, 6, 6, 8, 8]))
- """
- @overload
- def cummin(
- input: Tensor,
- dim: _int,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.cummin:
- r"""
- cummin(input, dim, *, out=None) -> (Tensor, LongTensor)
- Returns a namedtuple ``(values, indices)`` where ``values`` is the cumulative minimum of
- elements of :attr:`input` in the dimension :attr:`dim`. And ``indices`` is the index
- location of each maximum value found in the dimension :attr:`dim`.
- .. math::
- y_i = min(x_1, x_2, x_3, \dots, x_i)
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to do the operation over
- Keyword args:
- out (tuple, optional): the result tuple of two output tensors (values, indices)
- Example::
- >>> a = torch.randn(10)
- >>> a
- tensor([-0.2284, -0.6628, 0.0975, 0.2680, -1.3298, -0.4220, -0.3885, 1.1762,
- 0.9165, 1.6684])
- >>> torch.cummin(a, dim=0)
- torch.return_types.cummin(
- values=tensor([-0.2284, -0.6628, -0.6628, -0.6628, -1.3298, -1.3298, -1.3298, -1.3298,
- -1.3298, -1.3298]),
- indices=tensor([0, 1, 1, 1, 4, 4, 4, 4, 4, 4]))
- """
- @overload
- def cummin(
- input: Tensor,
- dim: str | EllipsisType | None,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.cummin:
- r"""
- cummin(input, dim, *, out=None) -> (Tensor, LongTensor)
- Returns a namedtuple ``(values, indices)`` where ``values`` is the cumulative minimum of
- elements of :attr:`input` in the dimension :attr:`dim`. And ``indices`` is the index
- location of each maximum value found in the dimension :attr:`dim`.
- .. math::
- y_i = min(x_1, x_2, x_3, \dots, x_i)
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to do the operation over
- Keyword args:
- out (tuple, optional): the result tuple of two output tensors (values, indices)
- Example::
- >>> a = torch.randn(10)
- >>> a
- tensor([-0.2284, -0.6628, 0.0975, 0.2680, -1.3298, -0.4220, -0.3885, 1.1762,
- 0.9165, 1.6684])
- >>> torch.cummin(a, dim=0)
- torch.return_types.cummin(
- values=tensor([-0.2284, -0.6628, -0.6628, -0.6628, -1.3298, -1.3298, -1.3298, -1.3298,
- -1.3298, -1.3298]),
- indices=tensor([0, 1, 1, 1, 4, 4, 4, 4, 4, 4]))
- """
- @overload
- def cumprod(
- input: Tensor,
- dim: _int,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- cumprod(input, dim, *, dtype=None, out=None) -> Tensor
- Returns the cumulative product of elements of :attr:`input` in the dimension
- :attr:`dim`.
- For example, if :attr:`input` is a vector of size N, the result will also be
- a vector of size N, with elements.
- .. math::
- y_i = x_1 \times x_2\times x_3\times \dots \times x_i
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to do the operation over
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(10)
- >>> a
- tensor([ 0.6001, 0.2069, -0.1919, 0.9792, 0.6727, 1.0062, 0.4126,
- -0.2129, -0.4206, 0.1968])
- >>> torch.cumprod(a, dim=0)
- tensor([ 0.6001, 0.1241, -0.0238, -0.0233, -0.0157, -0.0158, -0.0065,
- 0.0014, -0.0006, -0.0001])
- >>> a[5] = 0.0
- >>> torch.cumprod(a, dim=0)
- tensor([ 0.6001, 0.1241, -0.0238, -0.0233, -0.0157, -0.0000, -0.0000,
- 0.0000, -0.0000, -0.0000])
- """
- @overload
- def cumprod(
- input: Tensor,
- dim: str | EllipsisType | None,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- cumprod(input, dim, *, dtype=None, out=None) -> Tensor
- Returns the cumulative product of elements of :attr:`input` in the dimension
- :attr:`dim`.
- For example, if :attr:`input` is a vector of size N, the result will also be
- a vector of size N, with elements.
- .. math::
- y_i = x_1 \times x_2\times x_3\times \dots \times x_i
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to do the operation over
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(10)
- >>> a
- tensor([ 0.6001, 0.2069, -0.1919, 0.9792, 0.6727, 1.0062, 0.4126,
- -0.2129, -0.4206, 0.1968])
- >>> torch.cumprod(a, dim=0)
- tensor([ 0.6001, 0.1241, -0.0238, -0.0233, -0.0157, -0.0158, -0.0065,
- 0.0014, -0.0006, -0.0001])
- >>> a[5] = 0.0
- >>> torch.cumprod(a, dim=0)
- tensor([ 0.6001, 0.1241, -0.0238, -0.0233, -0.0157, -0.0000, -0.0000,
- 0.0000, -0.0000, -0.0000])
- """
- @overload
- def cumsum(
- input: Tensor,
- dim: _int,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- cumsum(input, dim, *, dtype=None, out=None) -> Tensor
- Returns the cumulative sum of elements of :attr:`input` in the dimension
- :attr:`dim`.
- For example, if :attr:`input` is a vector of size N, the result will also be
- a vector of size N, with elements.
- .. math::
- y_i = x_1 + x_2 + x_3 + \dots + x_i
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to do the operation over
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randint(1, 20, (10,))
- >>> a
- tensor([13, 7, 3, 10, 13, 3, 15, 10, 9, 10])
- >>> torch.cumsum(a, dim=0)
- tensor([13, 20, 23, 33, 46, 49, 64, 74, 83, 93])
- """
- @overload
- def cumsum(
- input: Tensor,
- dim: str | EllipsisType | None,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- cumsum(input, dim, *, dtype=None, out=None) -> Tensor
- Returns the cumulative sum of elements of :attr:`input` in the dimension
- :attr:`dim`.
- For example, if :attr:`input` is a vector of size N, the result will also be
- a vector of size N, with elements.
- .. math::
- y_i = x_1 + x_2 + x_3 + \dots + x_i
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to do the operation over
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randint(1, 20, (10,))
- >>> a
- tensor([13, 7, 3, 10, 13, 3, 15, 10, 9, 10])
- >>> torch.cumsum(a, dim=0)
- tensor([13, 20, 23, 33, 46, 49, 64, 74, 83, 93])
- """
- @overload
- def cumulative_trapezoid(y: Tensor, x: Tensor, *, dim: _int = -1) -> Tensor:
- r"""
- cumulative_trapezoid(y, x=None, *, dx=None, dim=-1) -> Tensor
- Cumulatively computes the `trapezoidal rule <https://en.wikipedia.org/wiki/Trapezoidal_rule>`_
- along :attr:`dim`. By default the spacing between elements is assumed to be 1, but
- :attr:`dx` can be used to specify a different constant spacing, and :attr:`x` can be
- used to specify arbitrary spacing along :attr:`dim`.
- For more details, please read :func:`torch.trapezoid`. The difference between :func:`torch.trapezoid`
- and this function is that, :func:`torch.trapezoid` returns a value for each integration,
- where as this function returns a cumulative value for every spacing within the integration. This
- is analogous to how `.sum` returns a value and `.cumsum` returns a cumulative sum.
- Arguments:
- y (Tensor): Values to use when computing the trapezoidal rule.
- x (Tensor): If specified, defines spacing between values as specified above.
- Keyword arguments:
- dx (float): constant spacing between values. If neither :attr:`x` or :attr:`dx`
- are specified then this defaults to 1. Effectively multiplies the result by its value.
- dim (int): The dimension along which to compute the trapezoidal rule.
- The last (inner-most) dimension by default.
- Examples::
- >>> # Cumulatively computes the trapezoidal rule in 1D, spacing is implicitly 1.
- >>> y = torch.tensor([1, 5, 10])
- >>> torch.cumulative_trapezoid(y)
- tensor([3., 10.5])
- >>> # Computes the same trapezoidal rule directly up to each element to verify
- >>> (1 + 5) / 2
- 3.0
- >>> (1 + 10 + 10) / 2
- 10.5
- >>> # Cumulatively computes the trapezoidal rule in 1D with constant spacing of 2
- >>> # NOTE: the result is the same as before, but multiplied by 2
- >>> torch.cumulative_trapezoid(y, dx=2)
- tensor([6., 21.])
- >>> # Cumulatively computes the trapezoidal rule in 1D with arbitrary spacing
- >>> x = torch.tensor([1, 3, 6])
- >>> torch.cumulative_trapezoid(y, x)
- tensor([6., 28.5])
- >>> # Computes the same trapezoidal rule directly up to each element to verify
- >>> ((3 - 1) * (1 + 5)) / 2
- 6.0
- >>> ((3 - 1) * (1 + 5) + (6 - 3) * (5 + 10)) / 2
- 28.5
- >>> # Cumulatively computes the trapezoidal rule for each row of a 3x3 matrix
- >>> y = torch.arange(9).reshape(3, 3)
- tensor([[0, 1, 2],
- [3, 4, 5],
- [6, 7, 8]])
- >>> torch.cumulative_trapezoid(y)
- tensor([[ 0.5, 2.],
- [ 3.5, 8.],
- [ 6.5, 14.]])
- >>> # Cumulatively computes the trapezoidal rule for each column of the matrix
- >>> torch.cumulative_trapezoid(y, dim=0)
- tensor([[ 1.5, 2.5, 3.5],
- [ 6.0, 8.0, 10.0]])
- >>> # Cumulatively computes the trapezoidal rule for each row of a 3x3 ones matrix
- >>> # with the same arbitrary spacing
- >>> y = torch.ones(3, 3)
- >>> x = torch.tensor([1, 3, 6])
- >>> torch.cumulative_trapezoid(y, x)
- tensor([[2., 5.],
- [2., 5.],
- [2., 5.]])
- >>> # Cumulatively computes the trapezoidal rule for each row of a 3x3 ones matrix
- >>> # with different arbitrary spacing per row
- >>> y = torch.ones(3, 3)
- >>> x = torch.tensor([[1, 2, 3], [1, 3, 5], [1, 4, 7]])
- >>> torch.cumulative_trapezoid(y, x)
- tensor([[1., 2.],
- [2., 4.],
- [3., 6.]])
- """
- @overload
- def cumulative_trapezoid(
- y: Tensor,
- *,
- dx: Number | _complex = 1,
- dim: _int = -1,
- ) -> Tensor:
- r"""
- cumulative_trapezoid(y, x=None, *, dx=None, dim=-1) -> Tensor
- Cumulatively computes the `trapezoidal rule <https://en.wikipedia.org/wiki/Trapezoidal_rule>`_
- along :attr:`dim`. By default the spacing between elements is assumed to be 1, but
- :attr:`dx` can be used to specify a different constant spacing, and :attr:`x` can be
- used to specify arbitrary spacing along :attr:`dim`.
- For more details, please read :func:`torch.trapezoid`. The difference between :func:`torch.trapezoid`
- and this function is that, :func:`torch.trapezoid` returns a value for each integration,
- where as this function returns a cumulative value for every spacing within the integration. This
- is analogous to how `.sum` returns a value and `.cumsum` returns a cumulative sum.
- Arguments:
- y (Tensor): Values to use when computing the trapezoidal rule.
- x (Tensor): If specified, defines spacing between values as specified above.
- Keyword arguments:
- dx (float): constant spacing between values. If neither :attr:`x` or :attr:`dx`
- are specified then this defaults to 1. Effectively multiplies the result by its value.
- dim (int): The dimension along which to compute the trapezoidal rule.
- The last (inner-most) dimension by default.
- Examples::
- >>> # Cumulatively computes the trapezoidal rule in 1D, spacing is implicitly 1.
- >>> y = torch.tensor([1, 5, 10])
- >>> torch.cumulative_trapezoid(y)
- tensor([3., 10.5])
- >>> # Computes the same trapezoidal rule directly up to each element to verify
- >>> (1 + 5) / 2
- 3.0
- >>> (1 + 10 + 10) / 2
- 10.5
- >>> # Cumulatively computes the trapezoidal rule in 1D with constant spacing of 2
- >>> # NOTE: the result is the same as before, but multiplied by 2
- >>> torch.cumulative_trapezoid(y, dx=2)
- tensor([6., 21.])
- >>> # Cumulatively computes the trapezoidal rule in 1D with arbitrary spacing
- >>> x = torch.tensor([1, 3, 6])
- >>> torch.cumulative_trapezoid(y, x)
- tensor([6., 28.5])
- >>> # Computes the same trapezoidal rule directly up to each element to verify
- >>> ((3 - 1) * (1 + 5)) / 2
- 6.0
- >>> ((3 - 1) * (1 + 5) + (6 - 3) * (5 + 10)) / 2
- 28.5
- >>> # Cumulatively computes the trapezoidal rule for each row of a 3x3 matrix
- >>> y = torch.arange(9).reshape(3, 3)
- tensor([[0, 1, 2],
- [3, 4, 5],
- [6, 7, 8]])
- >>> torch.cumulative_trapezoid(y)
- tensor([[ 0.5, 2.],
- [ 3.5, 8.],
- [ 6.5, 14.]])
- >>> # Cumulatively computes the trapezoidal rule for each column of the matrix
- >>> torch.cumulative_trapezoid(y, dim=0)
- tensor([[ 1.5, 2.5, 3.5],
- [ 6.0, 8.0, 10.0]])
- >>> # Cumulatively computes the trapezoidal rule for each row of a 3x3 ones matrix
- >>> # with the same arbitrary spacing
- >>> y = torch.ones(3, 3)
- >>> x = torch.tensor([1, 3, 6])
- >>> torch.cumulative_trapezoid(y, x)
- tensor([[2., 5.],
- [2., 5.],
- [2., 5.]])
- >>> # Cumulatively computes the trapezoidal rule for each row of a 3x3 ones matrix
- >>> # with different arbitrary spacing per row
- >>> y = torch.ones(3, 3)
- >>> x = torch.tensor([[1, 2, 3], [1, 3, 5], [1, 4, 7]])
- >>> torch.cumulative_trapezoid(y, x)
- tensor([[1., 2.],
- [2., 4.],
- [3., 6.]])
- """
- def deg2rad(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- deg2rad(input, *, out=None) -> Tensor
- Returns a new tensor with each of the elements of :attr:`input`
- converted from angles in degrees to radians.
- Args:
- input (Tensor): the input tensor.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([[180.0, -180.0], [360.0, -360.0], [90.0, -90.0]])
- >>> torch.deg2rad(a)
- tensor([[ 3.1416, -3.1416],
- [ 6.2832, -6.2832],
- [ 1.5708, -1.5708]])
- """
- def deg2rad_(input: Tensor) -> Tensor: ...
- @overload
- def dequantize(input: Tensor) -> Tensor:
- r"""
- dequantize(tensor) -> Tensor
- Returns an fp32 Tensor by dequantizing a quantized Tensor
- Args:
- tensor (Tensor): A quantized Tensor
- .. function:: dequantize(tensors) -> sequence of Tensors
- :noindex:
- Given a list of quantized Tensors, dequantize them and return a list of fp32 Tensors
- Args:
- tensors (sequence of Tensors): A list of quantized Tensors
- """
- @overload
- def dequantize(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- ) -> tuple[Tensor, ...]:
- r"""
- dequantize(tensor) -> Tensor
- Returns an fp32 Tensor by dequantizing a quantized Tensor
- Args:
- tensor (Tensor): A quantized Tensor
- .. function:: dequantize(tensors) -> sequence of Tensors
- :noindex:
- Given a list of quantized Tensors, dequantize them and return a list of fp32 Tensors
- Args:
- tensors (sequence of Tensors): A list of quantized Tensors
- """
- def det(input: Tensor) -> Tensor:
- r"""
- det(input) -> Tensor
- Alias for :func:`torch.linalg.det`
- """
- def detach(input: Tensor) -> Tensor: ...
- def detach_(input: Tensor) -> Tensor: ...
- def detach_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.detach`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def diag(
- input: Tensor,
- diagonal: _int = 0,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- diag(input, diagonal=0, *, out=None) -> Tensor
- - If :attr:`input` is a vector (1-D tensor), then returns a 2-D square tensor
- with the elements of :attr:`input` as the diagonal.
- - If :attr:`input` is a matrix (2-D tensor), then returns a 1-D tensor with
- the diagonal elements of :attr:`input`.
- The argument :attr:`diagonal` controls which diagonal to consider:
- - If :attr:`diagonal` = 0, it is the main diagonal.
- - If :attr:`diagonal` > 0, it is above the main diagonal.
- - If :attr:`diagonal` < 0, it is below the main diagonal.
- Args:
- input (Tensor): the input tensor.
- diagonal (int, optional): the diagonal to consider
- Keyword args:
- out (Tensor, optional): the output tensor.
- .. seealso::
- :func:`torch.diagonal` always returns the diagonal of its input.
- :func:`torch.diagflat` always constructs a tensor with diagonal elements
- specified by the input.
- Examples:
- Get the square matrix where the input vector is the diagonal::
- >>> a = torch.randn(3)
- >>> a
- tensor([ 0.5950,-0.0872, 2.3298])
- >>> torch.diag(a)
- tensor([[ 0.5950, 0.0000, 0.0000],
- [ 0.0000,-0.0872, 0.0000],
- [ 0.0000, 0.0000, 2.3298]])
- >>> torch.diag(a, 1)
- tensor([[ 0.0000, 0.5950, 0.0000, 0.0000],
- [ 0.0000, 0.0000,-0.0872, 0.0000],
- [ 0.0000, 0.0000, 0.0000, 2.3298],
- [ 0.0000, 0.0000, 0.0000, 0.0000]])
- Get the k-th diagonal of a given matrix::
- >>> a = torch.randn(3, 3)
- >>> a
- tensor([[-0.4264, 0.0255,-0.1064],
- [ 0.8795,-0.2429, 0.1374],
- [ 0.1029,-0.6482,-1.6300]])
- >>> torch.diag(a, 0)
- tensor([-0.4264,-0.2429,-1.6300])
- >>> torch.diag(a, 1)
- tensor([ 0.0255, 0.1374])
- """
- def diag_embed(
- input: Tensor,
- offset: _int = 0,
- dim1: _int = -2,
- dim2: _int = -1,
- ) -> Tensor:
- r"""
- diag_embed(input, offset=0, dim1=-2, dim2=-1) -> Tensor
- Creates a tensor whose diagonals of certain 2D planes (specified by
- :attr:`dim1` and :attr:`dim2`) are filled by :attr:`input`.
- To facilitate creating batched diagonal matrices, the 2D planes formed by
- the last two dimensions of the returned tensor are chosen by default.
- The argument :attr:`offset` controls which diagonal to consider:
- - If :attr:`offset` = 0, it is the main diagonal.
- - If :attr:`offset` > 0, it is above the main diagonal.
- - If :attr:`offset` < 0, it is below the main diagonal.
- The size of the new matrix will be calculated to make the specified diagonal
- of the size of the last input dimension.
- Note that for :attr:`offset` other than :math:`0`, the order of :attr:`dim1`
- and :attr:`dim2` matters. Exchanging them is equivalent to changing the
- sign of :attr:`offset`.
- Applying :meth:`torch.diagonal` to the output of this function with
- the same arguments yields a matrix identical to input. However,
- :meth:`torch.diagonal` has different default dimensions, so those
- need to be explicitly specified.
- Args:
- input (Tensor): the input tensor. Must be at least 1-dimensional.
- offset (int, optional): which diagonal to consider. Default: 0
- (main diagonal).
- dim1 (int, optional): first dimension with respect to which to
- take diagonal. Default: -2.
- dim2 (int, optional): second dimension with respect to which to
- take diagonal. Default: -1.
- Example::
- >>> a = torch.randn(2, 3)
- >>> torch.diag_embed(a)
- tensor([[[ 1.5410, 0.0000, 0.0000],
- [ 0.0000, -0.2934, 0.0000],
- [ 0.0000, 0.0000, -2.1788]],
- [[ 0.5684, 0.0000, 0.0000],
- [ 0.0000, -1.0845, 0.0000],
- [ 0.0000, 0.0000, -1.3986]]])
- >>> torch.diag_embed(a, offset=1, dim1=0, dim2=2)
- tensor([[[ 0.0000, 1.5410, 0.0000, 0.0000],
- [ 0.0000, 0.5684, 0.0000, 0.0000]],
- [[ 0.0000, 0.0000, -0.2934, 0.0000],
- [ 0.0000, 0.0000, -1.0845, 0.0000]],
- [[ 0.0000, 0.0000, 0.0000, -2.1788],
- [ 0.0000, 0.0000, 0.0000, -1.3986]],
- [[ 0.0000, 0.0000, 0.0000, 0.0000],
- [ 0.0000, 0.0000, 0.0000, 0.0000]]])
- """
- def diagflat(input: Tensor, offset: _int = 0) -> Tensor:
- r"""
- diagflat(input, offset=0) -> Tensor
- - If :attr:`input` is a vector (1-D tensor), then returns a 2-D square tensor
- with the elements of :attr:`input` as the diagonal.
- - If :attr:`input` is a tensor with more than one dimension, then returns a
- 2-D tensor with diagonal elements equal to a flattened :attr:`input`.
- The argument :attr:`offset` controls which diagonal to consider:
- - If :attr:`offset` = 0, it is the main diagonal.
- - If :attr:`offset` > 0, it is above the main diagonal.
- - If :attr:`offset` < 0, it is below the main diagonal.
- Args:
- input (Tensor): the input tensor.
- offset (int, optional): the diagonal to consider. Default: 0 (main
- diagonal).
- Examples::
- >>> a = torch.randn(3)
- >>> a
- tensor([-0.2956, -0.9068, 0.1695])
- >>> torch.diagflat(a)
- tensor([[-0.2956, 0.0000, 0.0000],
- [ 0.0000, -0.9068, 0.0000],
- [ 0.0000, 0.0000, 0.1695]])
- >>> torch.diagflat(a, 1)
- tensor([[ 0.0000, -0.2956, 0.0000, 0.0000],
- [ 0.0000, 0.0000, -0.9068, 0.0000],
- [ 0.0000, 0.0000, 0.0000, 0.1695],
- [ 0.0000, 0.0000, 0.0000, 0.0000]])
- >>> a = torch.randn(2, 2)
- >>> a
- tensor([[ 0.2094, -0.3018],
- [-0.1516, 1.9342]])
- >>> torch.diagflat(a)
- tensor([[ 0.2094, 0.0000, 0.0000, 0.0000],
- [ 0.0000, -0.3018, 0.0000, 0.0000],
- [ 0.0000, 0.0000, -0.1516, 0.0000],
- [ 0.0000, 0.0000, 0.0000, 1.9342]])
- """
- @overload
- def diagonal(
- input: Tensor,
- offset: _int = 0,
- dim1: _int = 0,
- dim2: _int = 1,
- ) -> Tensor:
- r"""
- diagonal(input, offset=0, dim1=0, dim2=1) -> Tensor
- Returns a partial view of :attr:`input` with the its diagonal elements
- with respect to :attr:`dim1` and :attr:`dim2` appended as a dimension
- at the end of the shape.
- The argument :attr:`offset` controls which diagonal to consider:
- - If :attr:`offset` = 0, it is the main diagonal.
- - If :attr:`offset` > 0, it is above the main diagonal.
- - If :attr:`offset` < 0, it is below the main diagonal.
- Applying :meth:`torch.diag_embed` to the output of this function with
- the same arguments yields a diagonal matrix with the diagonal entries
- of the input. However, :meth:`torch.diag_embed` has different default
- dimensions, so those need to be explicitly specified.
- Args:
- input (Tensor): the input tensor. Must be at least 2-dimensional.
- offset (int, optional): which diagonal to consider. Default: 0
- (main diagonal).
- dim1 (int, optional): first dimension with respect to which to
- take diagonal. Default: 0.
- dim2 (int, optional): second dimension with respect to which to
- take diagonal. Default: 1.
- .. note:: To take a batch diagonal, pass in dim1=-2, dim2=-1.
- Examples::
- >>> a = torch.randn(3, 3)
- >>> a
- tensor([[-1.0854, 1.1431, -0.1752],
- [ 0.8536, -0.0905, 0.0360],
- [ 0.6927, -0.3735, -0.4945]])
- >>> torch.diagonal(a)
- tensor([-1.0854, -0.0905, -0.4945])
- >>> torch.diagonal(a, 1)
- tensor([ 1.1431, 0.0360])
- >>> b = torch.randn(2, 5)
- >>> b
- tensor([[-1.7948, -1.2731, -0.3181, 2.0200, -1.6745],
- [ 1.8262, -1.5049, 0.4114, 1.0704, -1.2607]])
- >>> torch.diagonal(b, 1, 1, 0)
- tensor([1.8262])
- >>> x = torch.randn(2, 5, 4, 2)
- >>> torch.diagonal(x, offset=-1, dim1=1, dim2=2)
- tensor([[[-1.2631, 0.3755, -1.5977, -1.8172],
- [-1.1065, 1.0401, -0.2235, -0.7938]],
- [[-1.7325, -0.3081, 0.6166, 0.2335],
- [ 1.0500, 0.7336, -0.3836, -1.1015]]])
- """
- @overload
- def diagonal(
- input: Tensor,
- *,
- outdim: str | EllipsisType | None,
- dim1: str | EllipsisType | None,
- dim2: str | EllipsisType | None,
- offset: _int = 0,
- ) -> Tensor:
- r"""
- diagonal(input, offset=0, dim1=0, dim2=1) -> Tensor
- Returns a partial view of :attr:`input` with the its diagonal elements
- with respect to :attr:`dim1` and :attr:`dim2` appended as a dimension
- at the end of the shape.
- The argument :attr:`offset` controls which diagonal to consider:
- - If :attr:`offset` = 0, it is the main diagonal.
- - If :attr:`offset` > 0, it is above the main diagonal.
- - If :attr:`offset` < 0, it is below the main diagonal.
- Applying :meth:`torch.diag_embed` to the output of this function with
- the same arguments yields a diagonal matrix with the diagonal entries
- of the input. However, :meth:`torch.diag_embed` has different default
- dimensions, so those need to be explicitly specified.
- Args:
- input (Tensor): the input tensor. Must be at least 2-dimensional.
- offset (int, optional): which diagonal to consider. Default: 0
- (main diagonal).
- dim1 (int, optional): first dimension with respect to which to
- take diagonal. Default: 0.
- dim2 (int, optional): second dimension with respect to which to
- take diagonal. Default: 1.
- .. note:: To take a batch diagonal, pass in dim1=-2, dim2=-1.
- Examples::
- >>> a = torch.randn(3, 3)
- >>> a
- tensor([[-1.0854, 1.1431, -0.1752],
- [ 0.8536, -0.0905, 0.0360],
- [ 0.6927, -0.3735, -0.4945]])
- >>> torch.diagonal(a)
- tensor([-1.0854, -0.0905, -0.4945])
- >>> torch.diagonal(a, 1)
- tensor([ 1.1431, 0.0360])
- >>> b = torch.randn(2, 5)
- >>> b
- tensor([[-1.7948, -1.2731, -0.3181, 2.0200, -1.6745],
- [ 1.8262, -1.5049, 0.4114, 1.0704, -1.2607]])
- >>> torch.diagonal(b, 1, 1, 0)
- tensor([1.8262])
- >>> x = torch.randn(2, 5, 4, 2)
- >>> torch.diagonal(x, offset=-1, dim1=1, dim2=2)
- tensor([[[-1.2631, 0.3755, -1.5977, -1.8172],
- [-1.1065, 1.0401, -0.2235, -0.7938]],
- [[-1.7325, -0.3081, 0.6166, 0.2335],
- [ 1.0500, 0.7336, -0.3836, -1.1015]]])
- """
- def diagonal_copy(
- input: Tensor,
- offset: _int = 0,
- dim1: _int = 0,
- dim2: _int = 1,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.diagonal`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def diagonal_scatter(
- input: Tensor,
- src: Tensor,
- offset: _int = 0,
- dim1: _int = 0,
- dim2: _int = 1,
- ) -> Tensor:
- r"""
- diagonal_scatter(input, src, offset=0, dim1=0, dim2=1) -> Tensor
- Embeds the values of the :attr:`src` tensor into :attr:`input` along
- the diagonal elements of :attr:`input`, with respect to :attr:`dim1`
- and :attr:`dim2`.
- This function returns a tensor with fresh storage; it does not
- return a view.
- The argument :attr:`offset` controls which diagonal to consider:
- - If :attr:`offset` = 0, it is the main diagonal.
- - If :attr:`offset` > 0, it is above the main diagonal.
- - If :attr:`offset` < 0, it is below the main diagonal.
- Args:
- input (Tensor): the input tensor. Must be at least 2-dimensional.
- src (Tensor): the tensor to embed into :attr:`input`.
- offset (int, optional): which diagonal to consider. Default: 0
- (main diagonal).
- dim1 (int, optional): first dimension with respect to which to
- take diagonal. Default: 0.
- dim2 (int, optional): second dimension with respect to which to
- take diagonal. Default: 1.
- .. note::
- :attr:`src` must be of the proper size in order to be embedded
- into :attr:`input`. Specifically, it should have the same shape as
- ``torch.diagonal(input, offset, dim1, dim2)``
- Examples::
- >>> a = torch.zeros(3, 3)
- >>> a
- tensor([[0., 0., 0.],
- [0., 0., 0.],
- [0., 0., 0.]])
- >>> torch.diagonal_scatter(a, torch.ones(3), 0)
- tensor([[1., 0., 0.],
- [0., 1., 0.],
- [0., 0., 1.]])
- >>> torch.diagonal_scatter(a, torch.ones(2), 1)
- tensor([[0., 1., 0.],
- [0., 0., 1.],
- [0., 0., 0.]])
- """
- def diff(
- input: Tensor,
- n: _int = 1,
- dim: _int = -1,
- prepend: Tensor | None = None,
- append: Tensor | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- diff(input, n=1, dim=-1, prepend=None, append=None) -> Tensor
- Computes the n-th forward difference along the given dimension.
- The first-order differences are given by `out[i] = input[i + 1] - input[i]`. Higher-order
- differences are calculated by using :func:`torch.diff` recursively.
- Args:
- input (Tensor): the tensor to compute the differences on
- n (int, optional): the number of times to recursively compute the difference
- dim (int, optional): the dimension to compute the difference along.
- Default is the last dimension.
- prepend, append (Tensor, optional): values to prepend or append to
- :attr:`input` along :attr:`dim` before computing the difference.
- Their dimensions must be equivalent to that of input, and their shapes
- must match input's shape except on :attr:`dim`.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([1, 3, 2])
- >>> torch.diff(a)
- tensor([ 2, -1])
- >>> b = torch.tensor([4, 5])
- >>> torch.diff(a, append=b)
- tensor([ 2, -1, 2, 1])
- >>> c = torch.tensor([[1, 2, 3], [3, 4, 5]])
- >>> torch.diff(c, dim=0)
- tensor([[2, 2, 2]])
- >>> torch.diff(c, dim=1)
- tensor([[1, 1],
- [1, 1]])
- """
- def digamma(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- digamma(input, *, out=None) -> Tensor
- Alias for :func:`torch.special.digamma`.
- """
- def dist(input: Tensor, other: Tensor, p: Number | _complex = 2) -> Tensor:
- r"""
- dist(input, other, p=2) -> Tensor
- Returns the p-norm of (:attr:`input` - :attr:`other`)
- The shapes of :attr:`input` and :attr:`other` must be
- :ref:`broadcastable <broadcasting-semantics>`.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the Right-hand-side input tensor
- p (float, optional): the norm to be computed
- Example::
- >>> x = torch.randn(4)
- >>> x
- tensor([-1.5393, -0.8675, 0.5916, 1.6321])
- >>> y = torch.randn(4)
- >>> y
- tensor([ 0.0967, -1.0511, 0.6295, 0.8360])
- >>> torch.dist(x, y, 3.5)
- tensor(1.6727)
- >>> torch.dist(x, y, 3)
- tensor(1.6973)
- >>> torch.dist(x, y, 0)
- tensor(4.)
- >>> torch.dist(x, y, 1)
- tensor(2.6537)
- """
- def div(
- input: Tensor | Number,
- other: Tensor | Number,
- *,
- rounding_mode: str | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- div(input, other, *, rounding_mode=None, out=None) -> Tensor
- Divides each element of the input ``input`` by the corresponding element of
- :attr:`other`.
- .. math::
- \text{out}_i = \frac{\text{input}_i}{\text{other}_i}
- .. note::
- By default, this performs a "true" division like Python 3.
- See the :attr:`rounding_mode` argument for floor division.
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer, float, and complex inputs.
- Always promotes integer types to the default scalar type.
- Args:
- input (Tensor): the dividend
- other (Tensor or Number): the divisor
- Keyword args:
- rounding_mode (str, optional): Type of rounding applied to the result:
- * None - default behavior. Performs no rounding and, if both :attr:`input` and
- :attr:`other` are integer types, promotes the inputs to the default scalar type.
- Equivalent to true division in Python (the ``/`` operator) and NumPy's ``np.true_divide``.
- * ``"trunc"`` - rounds the results of the division towards zero.
- Equivalent to C-style integer division.
- * ``"floor"`` - rounds the results of the division down.
- Equivalent to floor division in Python (the ``//`` operator) and NumPy's ``np.floor_divide``.
- out (Tensor, optional): the output tensor.
- Examples::
- >>> x = torch.tensor([ 0.3810, 1.2774, -0.2972, -0.3719, 0.4637])
- >>> torch.div(x, 0.5)
- tensor([ 0.7620, 2.5548, -0.5944, -0.7438, 0.9274])
- >>> a = torch.tensor([[-0.3711, -1.9353, -0.4605, -0.2917],
- ... [ 0.1815, -1.0111, 0.9805, -1.5923],
- ... [ 0.1062, 1.4581, 0.7759, -1.2344],
- ... [-0.1830, -0.0313, 1.1908, -1.4757]])
- >>> b = torch.tensor([ 0.8032, 0.2930, -0.8113, -0.2308])
- >>> torch.div(a, b)
- tensor([[-0.4620, -6.6051, 0.5676, 1.2639],
- [ 0.2260, -3.4509, -1.2086, 6.8990],
- [ 0.1322, 4.9764, -0.9564, 5.3484],
- [-0.2278, -0.1068, -1.4678, 6.3938]])
- >>> torch.div(a, b, rounding_mode='trunc')
- tensor([[-0., -6., 0., 1.],
- [ 0., -3., -1., 6.],
- [ 0., 4., -0., 5.],
- [-0., -0., -1., 6.]])
- >>> torch.div(a, b, rounding_mode='floor')
- tensor([[-1., -7., 0., 1.],
- [ 0., -4., -2., 6.],
- [ 0., 4., -1., 5.],
- [-1., -1., -2., 6.]])
- """
- @overload
- def divide(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- divide(input, other, *, rounding_mode=None, out=None) -> Tensor
- Alias for :func:`torch.div`.
- """
- @overload
- def divide(
- input: Tensor,
- other: Tensor,
- *,
- rounding_mode: str | None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- divide(input, other, *, rounding_mode=None, out=None) -> Tensor
- Alias for :func:`torch.div`.
- """
- @overload
- def divide(
- input: Tensor,
- other: Number | _complex,
- *,
- rounding_mode: str | None,
- ) -> Tensor:
- r"""
- divide(input, other, *, rounding_mode=None, out=None) -> Tensor
- Alias for :func:`torch.div`.
- """
- @overload
- def divide(input: Tensor, other: Number | _complex) -> Tensor:
- r"""
- divide(input, other, *, rounding_mode=None, out=None) -> Tensor
- Alias for :func:`torch.div`.
- """
- def dot(
- input: Tensor,
- tensor: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- dot(input, tensor, *, out=None) -> Tensor
- Computes the dot product of two 1D tensors.
- .. note::
- Unlike NumPy's dot, torch.dot intentionally only supports computing the dot product
- of two 1D tensors with the same number of elements.
- Args:
- input (Tensor): first tensor in the dot product, must be 1D.
- tensor (Tensor): second tensor in the dot product, must be 1D.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.dot(torch.tensor([2, 3]), torch.tensor([2, 1]))
- tensor(7)
- >>> t1, t2 = torch.tensor([0, 1]), torch.tensor([2, 3])
- >>> torch.dot(t1, t2)
- tensor(3)
- """
- def dropout(input: Tensor, p: _float, train: _bool) -> Tensor: ...
- def dropout_(input: Tensor, p: _float, train: _bool) -> Tensor: ...
- def dsmm(input: Tensor, mat2: Tensor) -> Tensor: ...
- @overload
- def dsplit(input: Tensor, sections: _int) -> tuple[Tensor, ...]:
- r"""
- dsplit(input, indices_or_sections) -> List of Tensors
- Splits :attr:`input`, a tensor with three or more dimensions, into multiple tensors
- depthwise according to :attr:`indices_or_sections`. Each split is a view of
- :attr:`input`.
- This is equivalent to calling torch.tensor_split(input, indices_or_sections, dim=2)
- (the split dimension is 2), except that if :attr:`indices_or_sections` is an integer
- it must evenly divide the split dimension or a runtime error will be thrown.
- This function is based on NumPy's :func:`numpy.dsplit`.
- Args:
- input (Tensor): tensor to split.
- indices_or_sections (int or list or tuple of ints): See argument in :func:`torch.tensor_split`.
- Example::
- >>> t = torch.arange(16.0).reshape(2, 2, 4)
- >>> t
- tensor([[[ 0., 1., 2., 3.],
- [ 4., 5., 6., 7.]],
- [[ 8., 9., 10., 11.],
- [12., 13., 14., 15.]]])
- >>> torch.dsplit(t, 2)
- (tensor([[[ 0., 1.],
- [ 4., 5.]],
- [[ 8., 9.],
- [12., 13.]]]),
- tensor([[[ 2., 3.],
- [ 6., 7.]],
- [[10., 11.],
- [14., 15.]]]))
- >>> torch.dsplit(t, [3, 6])
- (tensor([[[ 0., 1., 2.],
- [ 4., 5., 6.]],
- [[ 8., 9., 10.],
- [12., 13., 14.]]]),
- tensor([[[ 3.],
- [ 7.]],
- [[11.],
- [15.]]]),
- tensor([], size=(2, 2, 0)))
- """
- @overload
- def dsplit(input: Tensor, indices: _size) -> tuple[Tensor, ...]:
- r"""
- dsplit(input, indices_or_sections) -> List of Tensors
- Splits :attr:`input`, a tensor with three or more dimensions, into multiple tensors
- depthwise according to :attr:`indices_or_sections`. Each split is a view of
- :attr:`input`.
- This is equivalent to calling torch.tensor_split(input, indices_or_sections, dim=2)
- (the split dimension is 2), except that if :attr:`indices_or_sections` is an integer
- it must evenly divide the split dimension or a runtime error will be thrown.
- This function is based on NumPy's :func:`numpy.dsplit`.
- Args:
- input (Tensor): tensor to split.
- indices_or_sections (int or list or tuple of ints): See argument in :func:`torch.tensor_split`.
- Example::
- >>> t = torch.arange(16.0).reshape(2, 2, 4)
- >>> t
- tensor([[[ 0., 1., 2., 3.],
- [ 4., 5., 6., 7.]],
- [[ 8., 9., 10., 11.],
- [12., 13., 14., 15.]]])
- >>> torch.dsplit(t, 2)
- (tensor([[[ 0., 1.],
- [ 4., 5.]],
- [[ 8., 9.],
- [12., 13.]]]),
- tensor([[[ 2., 3.],
- [ 6., 7.]],
- [[10., 11.],
- [14., 15.]]]))
- >>> torch.dsplit(t, [3, 6])
- (tensor([[[ 0., 1., 2.],
- [ 4., 5., 6.]],
- [[ 8., 9., 10.],
- [12., 13., 14.]]]),
- tensor([[[ 3.],
- [ 7.]],
- [[11.],
- [15.]]]),
- tensor([], size=(2, 2, 0)))
- """
- def dstack(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- dstack(tensors, *, out=None) -> Tensor
- Stack tensors in sequence depthwise (along third axis).
- This is equivalent to concatenation along the third axis after 1-D and 2-D tensors have been reshaped by :func:`torch.atleast_3d`.
- Args:
- tensors (sequence of Tensors): sequence of tensors to concatenate
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([1, 2, 3])
- >>> b = torch.tensor([4, 5, 6])
- >>> torch.dstack((a,b))
- tensor([[[1, 4],
- [2, 5],
- [3, 6]]])
- >>> a = torch.tensor([[1],[2],[3]])
- >>> b = torch.tensor([[4],[5],[6]])
- >>> torch.dstack((a,b))
- tensor([[[1, 4]],
- [[2, 5]],
- [[3, 6]]])
- """
- def embedding(
- weight: Tensor,
- indices: Tensor,
- padding_idx: _int | SymInt = -1,
- scale_grad_by_freq: _bool = False,
- sparse: _bool = False,
- ) -> Tensor: ...
- @overload
- def embedding_bag(
- weight: Tensor,
- indices: Tensor,
- offsets: Tensor,
- scale_grad_by_freq: _bool,
- mode: _int,
- sparse: _bool,
- per_sample_weights: Tensor | None,
- include_last_offset: _bool,
- padding_idx: _int | None,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor]: ...
- @overload
- def embedding_bag(
- weight: Tensor,
- indices: Tensor,
- offsets: Tensor,
- scale_grad_by_freq: _bool = False,
- mode: _int = 0,
- sparse: _bool = False,
- per_sample_weights: Tensor | None = None,
- include_last_offset: _bool = False,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor]: ...
- def embedding_renorm_(
- input: Tensor,
- indices: Tensor,
- max_norm: _float,
- norm_type: _float,
- ) -> Tensor: ...
- @overload
- def empty(
- size: Sequence[_int | SymInt],
- *,
- memory_format: memory_format | None = None,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- empty(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False, memory_format=torch.contiguous_format) -> Tensor
- Returns a tensor filled with uninitialized data. The shape of the tensor is
- defined by the variable argument :attr:`size`.
- .. note::
- If :func:`torch.use_deterministic_algorithms()` and
- :attr:`torch.utils.deterministic.fill_uninitialized_memory` are both set to
- ``True``, the output tensor is initialized to prevent any possible
- nondeterministic behavior from using the data as an input to an operation.
- Floating point and complex tensors are filled with NaN, and integer tensors
- are filled with the maximum value.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.contiguous_format``.
- Example::
- >>> torch.empty((2,3), dtype=torch.int64)
- tensor([[ 9.4064e+13, 2.8000e+01, 9.3493e+13],
- [ 7.5751e+18, 7.1428e+18, 7.5955e+18]])
- """
- @overload
- def empty(
- *size: _int | SymInt,
- memory_format: memory_format | None = None,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- empty(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False, memory_format=torch.contiguous_format) -> Tensor
- Returns a tensor filled with uninitialized data. The shape of the tensor is
- defined by the variable argument :attr:`size`.
- .. note::
- If :func:`torch.use_deterministic_algorithms()` and
- :attr:`torch.utils.deterministic.fill_uninitialized_memory` are both set to
- ``True``, the output tensor is initialized to prevent any possible
- nondeterministic behavior from using the data as an input to an operation.
- Floating point and complex tensors are filled with NaN, and integer tensors
- are filled with the maximum value.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.contiguous_format``.
- Example::
- >>> torch.empty((2,3), dtype=torch.int64)
- tensor([[ 9.4064e+13, 2.8000e+01, 9.3493e+13],
- [ 7.5751e+18, 7.1428e+18, 7.5955e+18]])
- """
- @overload
- def empty(
- size: _size,
- *,
- names: Sequence[str | EllipsisType | None] | None,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- empty(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False, memory_format=torch.contiguous_format) -> Tensor
- Returns a tensor filled with uninitialized data. The shape of the tensor is
- defined by the variable argument :attr:`size`.
- .. note::
- If :func:`torch.use_deterministic_algorithms()` and
- :attr:`torch.utils.deterministic.fill_uninitialized_memory` are both set to
- ``True``, the output tensor is initialized to prevent any possible
- nondeterministic behavior from using the data as an input to an operation.
- Floating point and complex tensors are filled with NaN, and integer tensors
- are filled with the maximum value.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.contiguous_format``.
- Example::
- >>> torch.empty((2,3), dtype=torch.int64)
- tensor([[ 9.4064e+13, 2.8000e+01, 9.3493e+13],
- [ 7.5751e+18, 7.1428e+18, 7.5955e+18]])
- """
- @overload
- def empty(
- *size: _int,
- names: Sequence[str | EllipsisType | None] | None,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- empty(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False, memory_format=torch.contiguous_format) -> Tensor
- Returns a tensor filled with uninitialized data. The shape of the tensor is
- defined by the variable argument :attr:`size`.
- .. note::
- If :func:`torch.use_deterministic_algorithms()` and
- :attr:`torch.utils.deterministic.fill_uninitialized_memory` are both set to
- ``True``, the output tensor is initialized to prevent any possible
- nondeterministic behavior from using the data as an input to an operation.
- Floating point and complex tensors are filled with NaN, and integer tensors
- are filled with the maximum value.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.contiguous_format``.
- Example::
- >>> torch.empty((2,3), dtype=torch.int64)
- tensor([[ 9.4064e+13, 2.8000e+01, 9.3493e+13],
- [ 7.5751e+18, 7.1428e+18, 7.5955e+18]])
- """
- def empty_like(
- input: Tensor,
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- empty_like(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns an uninitialized tensor with the same size as :attr:`input`.
- ``torch.empty_like(input)`` is equivalent to
- ``torch.empty(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)``.
- .. note::
- If :func:`torch.use_deterministic_algorithms()` and
- :attr:`torch.utils.deterministic.fill_uninitialized_memory` are both set to
- ``True``, the output tensor is initialized to prevent any possible
- nondeterministic behavior from using the data as an input to an operation.
- Floating point and complex tensors are filled with NaN, and integer tensors
- are filled with the maximum value.
- When ``torch.preserve_format`` is used:
- If the input tensor is dense (i.e., non-overlapping strided),
- its memory format (including strides) is retained.
- Otherwise (e.g., a non-dense view like a stepped slice),
- the output is converted to the dense format.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- Example::
- >>> a=torch.empty((2,3), dtype=torch.int32, device = 'cuda')
- >>> torch.empty_like(a)
- tensor([[0, 0, 0],
- [0, 0, 0]], device='cuda:0', dtype=torch.int32)
- """
- def empty_permuted(
- size: Sequence[_int | SymInt],
- physical_layout: _size,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- empty_permuted(size, physical_layout, *, dtype=None, layout=None, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Creates an uninitialized, non-overlapping and dense tensor with the
- specified :attr:`size`, with :attr:`physical_layout` specifying how the
- dimensions are physically laid out in memory (each logical dimension is listed
- from outermost to innermost). :attr:`physical_layout` is a generalization
- of NCHW/NHWC notation: if each dimension is assigned a number according to
- what order they occur in size (N=0, C=1, H=2, W=3), then NCHW is ``(0, 1, 2, 3)``
- while NHWC is ``(0, 2, 3, 1)``. Equivalently, the strides of the output
- tensor ``t`` are such that ``t.stride(physical_layout[i]) == contiguous_strides[i]``
- (notably, this function is *not* equivalent to ``torch.empty(size).permute(physical_layout)``).
- Unlike :func:`torch.empty_strided`, this is guaranteed to produce a dense
- tensor with no overlaps. If possible, prefer using this function over
- :func:`torch.empty_strided` or manual use of :func:`torch.as_strided`.
- .. note::
- If :func:`torch.use_deterministic_algorithms()` and
- :attr:`torch.utils.deterministic.fill_uninitialized_memory` are both set to
- ``True``, the output tensor is initialized to prevent any possible
- nondeterministic behavior from using the data as an input to an operation.
- Floating point and complex tensors are filled with NaN, and integer tensors
- are filled with the maximum value.
- Args:
- size (tuple of int): the shape of the output tensor
- physical_layout (tuple of int): the ordering of dimensions physically in memory
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Examples:
- >>> torch.empty((2, 3, 5, 7)).stride()
- (105, 35, 7, 1)
- >>> torch.empty_permuted((2, 3, 5, 7), (0, 1, 2, 3)).stride()
- (105, 35, 7, 1)
- >>> torch.empty((2, 3, 5, 7), memory_format=torch.channels_last).stride()
- (105, 1, 21, 3)
- >>> torch.empty_permuted((2, 3, 5, 7), (0, 2, 3, 1)).stride()
- (105, 1, 21, 3)
- >>> torch.empty_permuted((2, 3, 5, 7), (0, 2, 3, 1)).dim_order()
- (0, 2, 3, 1)
- """
- def empty_quantized(
- size: _size,
- qtensor: Tensor,
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor: ...
- def empty_strided(
- size: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- empty_strided(size, stride, *, dtype=None, layout=None, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Creates a tensor with the specified :attr:`size` and :attr:`stride` and filled with undefined data.
- .. warning::
- If the constructed tensor is "overlapped" (with multiple indices referring to the same element
- in memory) its behavior is undefined.
- .. note::
- If :func:`torch.use_deterministic_algorithms()` and
- :attr:`torch.utils.deterministic.fill_uninitialized_memory` are both set to
- ``True``, the output tensor is initialized to prevent any possible
- nondeterministic behavior from using the data as an input to an operation.
- Floating point and complex tensors are filled with NaN, and integer tensors
- are filled with the maximum value.
- Args:
- size (tuple of int): the shape of the output tensor
- stride (tuple of int): the strides of the output tensor
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> a = torch.empty_strided((2, 3), (1, 2))
- >>> a
- tensor([[8.9683e-44, 4.4842e-44, 5.1239e+07],
- [0.0000e+00, 0.0000e+00, 3.0705e-41]])
- >>> a.stride()
- (1, 2)
- >>> a.size()
- torch.Size([2, 3])
- """
- @overload
- def eq(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- eq(input, other, *, out=None) -> Tensor
- Computes element-wise equality
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or float): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is equal to :attr:`other` and False elsewhere
- Example::
- >>> torch.eq(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[ True, False],
- [False, True]])
- """
- @overload
- def eq(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- eq(input, other, *, out=None) -> Tensor
- Computes element-wise equality
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or float): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is equal to :attr:`other` and False elsewhere
- Example::
- >>> torch.eq(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[ True, False],
- [False, True]])
- """
- def equal(input: Tensor, other: Tensor) -> _bool:
- r"""
- equal(input, other) -> bool
- ``True`` if two tensors have the same size and elements, ``False`` otherwise.
- .. note::
- Tensors containing NaNs are never equal to each other. Additionally, this function does not
- differentiate between the data types of the tensors during comparison. For more thorough tensor checks,
- use :meth:`torch.testing.assert_close`.
- Example::
- >>> torch.equal(torch.tensor([1, 2]), torch.tensor([1, 2]))
- True
- >>> torch.equal(torch.tensor([3, torch.nan]), torch.tensor([3, torch.nan]))
- False
- >>> torch.equal(torch.tensor([1, 2, 3], dtype=torch.int32), torch.tensor([1, 2, 3], dtype=torch.float32))
- True
- """
- def erf(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- erf(input, *, out=None) -> Tensor
- Alias for :func:`torch.special.erf`.
- """
- def erf_(input: Tensor) -> Tensor: ...
- def erfc(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- erfc(input, *, out=None) -> Tensor
- Alias for :func:`torch.special.erfc`.
- """
- def erfc_(input: Tensor) -> Tensor: ...
- def erfinv(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- erfinv(input, *, out=None) -> Tensor
- Alias for :func:`torch.special.erfinv`.
- """
- def exp(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- exp(input, *, out=None) -> Tensor
- Returns a new tensor with the exponential of the elements
- of the input tensor :attr:`input`.
- .. math::
- y_{i} = e^{x_{i}}
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.exp(torch.tensor([0, math.log(2.)]))
- tensor([ 1., 2.])
- """
- def exp2(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- exp2(input, *, out=None) -> Tensor
- Alias for :func:`torch.special.exp2`.
- """
- def exp2_(input: Tensor) -> Tensor: ...
- def exp_(input: Tensor) -> Tensor: ...
- def expand_copy(
- input: Tensor,
- size: Sequence[_int | SymInt],
- *,
- implicit: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.Tensor.expand`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def expm1(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- expm1(input, *, out=None) -> Tensor
- Alias for :func:`torch.special.expm1`.
- """
- def expm1_(input: Tensor) -> Tensor: ...
- @overload
- def eye(
- n: _int | SymInt,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- eye(n, m=None, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a 2-D tensor with ones on the diagonal and zeros elsewhere.
- Args:
- n (int): the number of rows
- m (int, optional): the number of columns with default being :attr:`n`
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 2-D tensor with ones on the diagonal and zeros elsewhere
- Example::
- >>> torch.eye(3)
- tensor([[ 1., 0., 0.],
- [ 0., 1., 0.],
- [ 0., 0., 1.]])
- """
- @overload
- def eye(
- n: _int | SymInt,
- m: _int | SymInt,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- eye(n, m=None, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a 2-D tensor with ones on the diagonal and zeros elsewhere.
- Args:
- n (int): the number of rows
- m (int, optional): the number of columns with default being :attr:`n`
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 2-D tensor with ones on the diagonal and zeros elsewhere
- Example::
- >>> torch.eye(3)
- tensor([[ 1., 0., 0.],
- [ 0., 1., 0.],
- [ 0., 0., 1.]])
- """
- def fake_quantize_per_channel_affine(
- input: Tensor,
- scale: Tensor,
- zero_point: Tensor,
- axis: _int,
- quant_min: _int,
- quant_max: _int,
- ) -> Tensor:
- r"""
- fake_quantize_per_channel_affine(input, scale, zero_point, axis, quant_min, quant_max) -> Tensor
- Returns a new tensor with the data in :attr:`input` fake quantized per channel using :attr:`scale`,
- :attr:`zero_point`, :attr:`quant_min` and :attr:`quant_max`, across the channel specified by :attr:`axis`.
- .. math::
- \text{output} = (
- min(
- \text{quant\_max},
- max(
- \text{quant\_min},
- \text{std::nearby\_int}(\text{input} / \text{scale}) + \text{zero\_point}
- )
- ) - \text{zero\_point}
- ) \times \text{scale}
- Args:
- input (Tensor): the input value(s), in ``torch.float32``
- scale (Tensor): quantization scale, per channel in ``torch.float32``
- zero_point (Tensor): quantization zero_point, per channel in ``torch.int32`` or ``torch.half`` or ``torch.float32``
- axis (int32): channel axis
- quant_min (int64): lower bound of the quantized domain
- quant_max (int64): upper bound of the quantized domain
- Returns:
- Tensor: A newly fake_quantized per channel ``torch.float32`` tensor
- Example::
- >>> x = torch.randn(2, 2, 2)
- >>> x
- tensor([[[-0.2525, -0.0466],
- [ 0.3491, -0.2168]],
- [[-0.5906, 1.6258],
- [ 0.6444, -0.0542]]])
- >>> scales = (torch.randn(2) + 1) * 0.05
- >>> scales
- tensor([0.0475, 0.0486])
- >>> zero_points = torch.zeros(2).to(torch.int32)
- >>> zero_points
- tensor([0, 0])
- >>> torch.fake_quantize_per_channel_affine(x, scales, zero_points, 1, 0, 255)
- tensor([[[0.0000, 0.0000],
- [0.3405, 0.0000]],
- [[0.0000, 1.6134],
- [0.6323, 0.0000]]])
- """
- @overload
- def fake_quantize_per_tensor_affine(
- input: Tensor,
- scale: _float,
- zero_point: _int,
- quant_min: _int,
- quant_max: _int,
- ) -> Tensor:
- r"""
- fake_quantize_per_tensor_affine(input, scale, zero_point, quant_min, quant_max) -> Tensor
- Returns a new tensor with the data in :attr:`input` fake quantized using :attr:`scale`,
- :attr:`zero_point`, :attr:`quant_min` and :attr:`quant_max`.
- .. math::
- \text{output} = (
- min(
- \text{quant\_max},
- max(
- \text{quant\_min},
- \text{std::nearby\_int}(\text{input} / \text{scale}) + \text{zero\_point}
- )
- ) - \text{zero\_point}
- ) \times \text{scale}
- Args:
- input (Tensor): the input value(s), ``torch.float32`` tensor
- scale (double scalar or ``float32`` Tensor): quantization scale
- zero_point (int64 scalar or ``int32`` Tensor): quantization zero_point
- quant_min (int64): lower bound of the quantized domain
- quant_max (int64): upper bound of the quantized domain
- Returns:
- Tensor: A newly fake_quantized ``torch.float32`` tensor
- Example::
- >>> x = torch.randn(4)
- >>> x
- tensor([ 0.0552, 0.9730, 0.3973, -1.0780])
- >>> torch.fake_quantize_per_tensor_affine(x, 0.1, 0, 0, 255)
- tensor([0.1000, 1.0000, 0.4000, 0.0000])
- >>> torch.fake_quantize_per_tensor_affine(x, torch.tensor(0.1), torch.tensor(0), 0, 255)
- tensor([0.1000, 1.0000, 0.4000, 0.0000])
- """
- @overload
- def fake_quantize_per_tensor_affine(
- input: Tensor,
- scale: Tensor,
- zero_point: Tensor,
- quant_min: _int,
- quant_max: _int,
- ) -> Tensor:
- r"""
- fake_quantize_per_tensor_affine(input, scale, zero_point, quant_min, quant_max) -> Tensor
- Returns a new tensor with the data in :attr:`input` fake quantized using :attr:`scale`,
- :attr:`zero_point`, :attr:`quant_min` and :attr:`quant_max`.
- .. math::
- \text{output} = (
- min(
- \text{quant\_max},
- max(
- \text{quant\_min},
- \text{std::nearby\_int}(\text{input} / \text{scale}) + \text{zero\_point}
- )
- ) - \text{zero\_point}
- ) \times \text{scale}
- Args:
- input (Tensor): the input value(s), ``torch.float32`` tensor
- scale (double scalar or ``float32`` Tensor): quantization scale
- zero_point (int64 scalar or ``int32`` Tensor): quantization zero_point
- quant_min (int64): lower bound of the quantized domain
- quant_max (int64): upper bound of the quantized domain
- Returns:
- Tensor: A newly fake_quantized ``torch.float32`` tensor
- Example::
- >>> x = torch.randn(4)
- >>> x
- tensor([ 0.0552, 0.9730, 0.3973, -1.0780])
- >>> torch.fake_quantize_per_tensor_affine(x, 0.1, 0, 0, 255)
- tensor([0.1000, 1.0000, 0.4000, 0.0000])
- >>> torch.fake_quantize_per_tensor_affine(x, torch.tensor(0.1), torch.tensor(0), 0, 255)
- tensor([0.1000, 1.0000, 0.4000, 0.0000])
- """
- @overload
- def fbgemm_linear_fp16_weight(
- input: Tensor,
- packed_weight: Tensor,
- bias: Tensor,
- ) -> Tensor: ...
- @overload
- def fbgemm_linear_fp16_weight(
- input: Tensor,
- packed_weight: Tensor,
- bias: Tensor,
- output: Tensor,
- ) -> Tensor: ...
- @overload
- def fbgemm_linear_fp16_weight_fp32_activation(
- input: Tensor,
- packed_weight: Tensor,
- bias: Tensor | None,
- ) -> Tensor: ...
- @overload
- def fbgemm_linear_fp16_weight_fp32_activation(
- input: Tensor,
- packed_weight: Tensor,
- bias: Tensor | None,
- output: Tensor,
- ) -> Tensor: ...
- def fbgemm_linear_int8_weight(
- input: Tensor,
- weight: Tensor,
- packed: Tensor,
- col_offsets: Tensor,
- weight_scale: Number | _complex,
- weight_zero_point: Number | _complex,
- bias: Tensor,
- ) -> Tensor: ...
- def fbgemm_linear_int8_weight_fp32_activation(
- input: Tensor,
- weight: Tensor,
- packed: Tensor,
- col_offsets: Tensor,
- weight_scale: Number | _complex,
- weight_zero_point: Number | _complex,
- bias: Tensor,
- ) -> Tensor: ...
- def fbgemm_linear_quantize_weight(
- input: Tensor,
- ) -> tuple[Tensor, Tensor, _float, _int]: ...
- def fbgemm_pack_gemm_matrix_fp16(input: Tensor) -> Tensor: ...
- @overload
- def fbgemm_pack_quantized_matrix(input: Tensor) -> Tensor: ...
- @overload
- def fbgemm_pack_quantized_matrix(input: Tensor, K: _int, N: _int) -> Tensor: ...
- def feature_alpha_dropout(input: Tensor, p: _float, train: _bool) -> Tensor: ...
- def feature_alpha_dropout_(
- input: Tensor,
- p: _float,
- train: _bool,
- ) -> Tensor: ...
- def feature_dropout(input: Tensor, p: _float, train: _bool) -> Tensor: ...
- def feature_dropout_(input: Tensor, p: _float, train: _bool) -> Tensor: ...
- @overload
- def fill(input: Tensor, value: Tensor) -> Tensor: ...
- @overload
- def fill(input: Tensor, value: Number | _complex) -> Tensor: ...
- @overload
- def fill_(input: Tensor, value: Tensor) -> Tensor: ...
- @overload
- def fill_(input: Tensor, value: Number | _complex) -> Tensor: ...
- def fix(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- fix(input, *, out=None) -> Tensor
- Alias for :func:`torch.trunc`
- """
- def fix_(input: Tensor) -> Tensor: ...
- @overload
- def flatten(
- input: Tensor,
- start_dim: _int = 0,
- end_dim: _int = -1,
- ) -> Tensor:
- r"""
- flatten(input, start_dim=0, end_dim=-1) -> Tensor
- Flattens :attr:`input` by reshaping it into a one-dimensional tensor. If :attr:`start_dim` or :attr:`end_dim`
- are passed, only dimensions starting with :attr:`start_dim` and ending with :attr:`end_dim` are flattened.
- The order of elements in :attr:`input` is unchanged.
- Unlike NumPy's flatten, which always copies input's data, this function may return the original object, a view,
- or copy. If no dimensions are flattened, then the original object :attr:`input` is returned. Otherwise, if input can
- be viewed as the flattened shape, then that view is returned. Finally, only if the input cannot be viewed as the
- flattened shape is input's data copied. See :meth:`torch.Tensor.view` for details on when a view will be returned.
- .. note::
- Flattening a zero-dimensional tensor will return a one-dimensional view.
- Args:
- input (Tensor): the input tensor.
- start_dim (int): the first dim to flatten
- end_dim (int): the last dim to flatten
- Example::
- >>> t = torch.tensor([[[1, 2],
- ... [3, 4]],
- ... [[5, 6],
- ... [7, 8]]])
- >>> torch.flatten(t)
- tensor([1, 2, 3, 4, 5, 6, 7, 8])
- >>> torch.flatten(t, start_dim=1)
- tensor([[1, 2, 3, 4],
- [5, 6, 7, 8]])
- """
- @overload
- def flatten(
- input: Tensor,
- start_dim: _int,
- end_dim: _int,
- out_dim: str | EllipsisType | None,
- ) -> Tensor:
- r"""
- flatten(input, start_dim=0, end_dim=-1) -> Tensor
- Flattens :attr:`input` by reshaping it into a one-dimensional tensor. If :attr:`start_dim` or :attr:`end_dim`
- are passed, only dimensions starting with :attr:`start_dim` and ending with :attr:`end_dim` are flattened.
- The order of elements in :attr:`input` is unchanged.
- Unlike NumPy's flatten, which always copies input's data, this function may return the original object, a view,
- or copy. If no dimensions are flattened, then the original object :attr:`input` is returned. Otherwise, if input can
- be viewed as the flattened shape, then that view is returned. Finally, only if the input cannot be viewed as the
- flattened shape is input's data copied. See :meth:`torch.Tensor.view` for details on when a view will be returned.
- .. note::
- Flattening a zero-dimensional tensor will return a one-dimensional view.
- Args:
- input (Tensor): the input tensor.
- start_dim (int): the first dim to flatten
- end_dim (int): the last dim to flatten
- Example::
- >>> t = torch.tensor([[[1, 2],
- ... [3, 4]],
- ... [[5, 6],
- ... [7, 8]]])
- >>> torch.flatten(t)
- tensor([1, 2, 3, 4, 5, 6, 7, 8])
- >>> torch.flatten(t, start_dim=1)
- tensor([[1, 2, 3, 4],
- [5, 6, 7, 8]])
- """
- @overload
- def flatten(
- input: Tensor,
- start_dim: str | EllipsisType | None,
- end_dim: str | EllipsisType | None,
- out_dim: str | EllipsisType | None,
- ) -> Tensor:
- r"""
- flatten(input, start_dim=0, end_dim=-1) -> Tensor
- Flattens :attr:`input` by reshaping it into a one-dimensional tensor. If :attr:`start_dim` or :attr:`end_dim`
- are passed, only dimensions starting with :attr:`start_dim` and ending with :attr:`end_dim` are flattened.
- The order of elements in :attr:`input` is unchanged.
- Unlike NumPy's flatten, which always copies input's data, this function may return the original object, a view,
- or copy. If no dimensions are flattened, then the original object :attr:`input` is returned. Otherwise, if input can
- be viewed as the flattened shape, then that view is returned. Finally, only if the input cannot be viewed as the
- flattened shape is input's data copied. See :meth:`torch.Tensor.view` for details on when a view will be returned.
- .. note::
- Flattening a zero-dimensional tensor will return a one-dimensional view.
- Args:
- input (Tensor): the input tensor.
- start_dim (int): the first dim to flatten
- end_dim (int): the last dim to flatten
- Example::
- >>> t = torch.tensor([[[1, 2],
- ... [3, 4]],
- ... [[5, 6],
- ... [7, 8]]])
- >>> torch.flatten(t)
- tensor([1, 2, 3, 4, 5, 6, 7, 8])
- >>> torch.flatten(t, start_dim=1)
- tensor([[1, 2, 3, 4],
- [5, 6, 7, 8]])
- """
- @overload
- def flatten(
- input: Tensor,
- dims: Sequence[str | EllipsisType | None],
- out_dim: str | EllipsisType | None,
- ) -> Tensor:
- r"""
- flatten(input, start_dim=0, end_dim=-1) -> Tensor
- Flattens :attr:`input` by reshaping it into a one-dimensional tensor. If :attr:`start_dim` or :attr:`end_dim`
- are passed, only dimensions starting with :attr:`start_dim` and ending with :attr:`end_dim` are flattened.
- The order of elements in :attr:`input` is unchanged.
- Unlike NumPy's flatten, which always copies input's data, this function may return the original object, a view,
- or copy. If no dimensions are flattened, then the original object :attr:`input` is returned. Otherwise, if input can
- be viewed as the flattened shape, then that view is returned. Finally, only if the input cannot be viewed as the
- flattened shape is input's data copied. See :meth:`torch.Tensor.view` for details on when a view will be returned.
- .. note::
- Flattening a zero-dimensional tensor will return a one-dimensional view.
- Args:
- input (Tensor): the input tensor.
- start_dim (int): the first dim to flatten
- end_dim (int): the last dim to flatten
- Example::
- >>> t = torch.tensor([[[1, 2],
- ... [3, 4]],
- ... [[5, 6],
- ... [7, 8]]])
- >>> torch.flatten(t)
- tensor([1, 2, 3, 4, 5, 6, 7, 8])
- >>> torch.flatten(t, start_dim=1)
- tensor([[1, 2, 3, 4],
- [5, 6, 7, 8]])
- """
- def flip(input: Tensor, dims: _size) -> Tensor:
- r"""
- flip(input, dims) -> Tensor
- Reverse the order of an n-D tensor along given axis in dims.
- .. note::
- `torch.flip` makes a copy of :attr:`input`'s data. This is different from NumPy's `np.flip`,
- which returns a view in constant time. Since copying a tensor's data is more work than viewing that data,
- `torch.flip` is expected to be slower than `np.flip`.
- Args:
- input (Tensor): the input tensor.
- dims (a list or tuple): axis to flip on
- Example::
- >>> x = torch.arange(8).view(2, 2, 2)
- >>> x
- tensor([[[ 0, 1],
- [ 2, 3]],
- [[ 4, 5],
- [ 6, 7]]])
- >>> torch.flip(x, [0, 1])
- tensor([[[ 6, 7],
- [ 4, 5]],
- [[ 2, 3],
- [ 0, 1]]])
- """
- def fliplr(input: Tensor) -> Tensor:
- r"""
- fliplr(input) -> Tensor
- Flip tensor in the left/right direction, returning a new tensor.
- Flip the entries in each row in the left/right direction.
- Columns are preserved, but appear in a different order than before.
- Note:
- Requires the tensor to be at least 2-D.
- .. note::
- `torch.fliplr` makes a copy of :attr:`input`'s data. This is different from NumPy's `np.fliplr`,
- which returns a view in constant time. Since copying a tensor's data is more work than viewing that data,
- `torch.fliplr` is expected to be slower than `np.fliplr`.
- Args:
- input (Tensor): Must be at least 2-dimensional.
- Example::
- >>> x = torch.arange(4).view(2, 2)
- >>> x
- tensor([[0, 1],
- [2, 3]])
- >>> torch.fliplr(x)
- tensor([[1, 0],
- [3, 2]])
- """
- def flipud(input: Tensor) -> Tensor:
- r"""
- flipud(input) -> Tensor
- Flip tensor in the up/down direction, returning a new tensor.
- Flip the entries in each column in the up/down direction.
- Rows are preserved, but appear in a different order than before.
- Note:
- Requires the tensor to be at least 1-D.
- .. note::
- `torch.flipud` makes a copy of :attr:`input`'s data. This is different from NumPy's `np.flipud`,
- which returns a view in constant time. Since copying a tensor's data is more work than viewing that data,
- `torch.flipud` is expected to be slower than `np.flipud`.
- Args:
- input (Tensor): Must be at least 1-dimensional.
- Example::
- >>> x = torch.arange(4).view(2, 2)
- >>> x
- tensor([[0, 1],
- [2, 3]])
- >>> torch.flipud(x)
- tensor([[2, 3],
- [0, 1]])
- """
- @overload
- def float_power(
- input: Tensor,
- exponent: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- float_power(input, exponent, *, out=None) -> Tensor
- Raises :attr:`input` to the power of :attr:`exponent`, elementwise, in double precision.
- If neither input is complex returns a ``torch.float64`` tensor,
- and if one or more inputs is complex returns a ``torch.complex128`` tensor.
- .. note::
- This function always computes in double precision, unlike :func:`torch.pow`,
- which implements more typical :ref:`type promotion <type-promotion-doc>`.
- This is useful when the computation needs to be performed in a wider or more precise dtype,
- or the results of the computation may contain fractional values not representable in the input dtypes,
- like when an integer base is raised to a negative integer exponent.
- Args:
- input (Tensor or Number): the base value(s)
- exponent (Tensor or Number): the exponent value(s)
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randint(10, (4,))
- >>> a
- tensor([6, 4, 7, 1])
- >>> torch.float_power(a, 2)
- tensor([36., 16., 49., 1.], dtype=torch.float64)
- >>> a = torch.arange(1, 5)
- >>> a
- tensor([ 1, 2, 3, 4])
- >>> exp = torch.tensor([2, -3, 4, -5])
- >>> exp
- tensor([ 2, -3, 4, -5])
- >>> torch.float_power(a, exp)
- tensor([1.0000e+00, 1.2500e-01, 8.1000e+01, 9.7656e-04], dtype=torch.float64)
- """
- @overload
- def float_power(
- self: Number | _complex,
- exponent: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- float_power(input, exponent, *, out=None) -> Tensor
- Raises :attr:`input` to the power of :attr:`exponent`, elementwise, in double precision.
- If neither input is complex returns a ``torch.float64`` tensor,
- and if one or more inputs is complex returns a ``torch.complex128`` tensor.
- .. note::
- This function always computes in double precision, unlike :func:`torch.pow`,
- which implements more typical :ref:`type promotion <type-promotion-doc>`.
- This is useful when the computation needs to be performed in a wider or more precise dtype,
- or the results of the computation may contain fractional values not representable in the input dtypes,
- like when an integer base is raised to a negative integer exponent.
- Args:
- input (Tensor or Number): the base value(s)
- exponent (Tensor or Number): the exponent value(s)
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randint(10, (4,))
- >>> a
- tensor([6, 4, 7, 1])
- >>> torch.float_power(a, 2)
- tensor([36., 16., 49., 1.], dtype=torch.float64)
- >>> a = torch.arange(1, 5)
- >>> a
- tensor([ 1, 2, 3, 4])
- >>> exp = torch.tensor([2, -3, 4, -5])
- >>> exp
- tensor([ 2, -3, 4, -5])
- >>> torch.float_power(a, exp)
- tensor([1.0000e+00, 1.2500e-01, 8.1000e+01, 9.7656e-04], dtype=torch.float64)
- """
- @overload
- def float_power(
- input: Tensor,
- exponent: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- float_power(input, exponent, *, out=None) -> Tensor
- Raises :attr:`input` to the power of :attr:`exponent`, elementwise, in double precision.
- If neither input is complex returns a ``torch.float64`` tensor,
- and if one or more inputs is complex returns a ``torch.complex128`` tensor.
- .. note::
- This function always computes in double precision, unlike :func:`torch.pow`,
- which implements more typical :ref:`type promotion <type-promotion-doc>`.
- This is useful when the computation needs to be performed in a wider or more precise dtype,
- or the results of the computation may contain fractional values not representable in the input dtypes,
- like when an integer base is raised to a negative integer exponent.
- Args:
- input (Tensor or Number): the base value(s)
- exponent (Tensor or Number): the exponent value(s)
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randint(10, (4,))
- >>> a
- tensor([6, 4, 7, 1])
- >>> torch.float_power(a, 2)
- tensor([36., 16., 49., 1.], dtype=torch.float64)
- >>> a = torch.arange(1, 5)
- >>> a
- tensor([ 1, 2, 3, 4])
- >>> exp = torch.tensor([2, -3, 4, -5])
- >>> exp
- tensor([ 2, -3, 4, -5])
- >>> torch.float_power(a, exp)
- tensor([1.0000e+00, 1.2500e-01, 8.1000e+01, 9.7656e-04], dtype=torch.float64)
- """
- def floor(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- floor(input, *, out=None) -> Tensor
- Returns a new tensor with the floor of the elements of :attr:`input`,
- the largest integer less than or equal to each element.
- For integer inputs, follows the array-api convention of returning a
- copy of the input tensor.
- .. math::
- \text{out}_{i} = \left\lfloor \text{input}_{i} \right\rfloor
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-0.8166, 1.5308, -0.2530, -0.2091])
- >>> torch.floor(a)
- tensor([-1., 1., -1., -1.])
- """
- def floor_(input: Tensor) -> Tensor: ...
- def floor_divide(
- input: Tensor | Number,
- other: Tensor | Number,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- floor_divide(input, other, *, out=None) -> Tensor
- .. note::
- Before PyTorch 1.13 :func:`torch.floor_divide` incorrectly performed
- truncation division. To restore the previous behavior use
- :func:`torch.div` with ``rounding_mode='trunc'``.
- Computes :attr:`input` divided by :attr:`other`, elementwise, and floors
- the result.
- .. math::
- \text{{out}}_i = \text{floor} \left( \frac{{\text{{input}}_i}}{{\text{{other}}_i}} \right)
- Supports broadcasting to a common shape, type promotion, and integer and float inputs.
- Args:
- input (Tensor or Number): the dividend
- other (Tensor or Number): the divisor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([4.0, 3.0])
- >>> b = torch.tensor([2.0, 2.0])
- >>> torch.floor_divide(a, b)
- tensor([2.0, 1.0])
- >>> torch.floor_divide(a, 1.4)
- tensor([2.0, 2.0])
- """
- def fmax(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- fmax(input, other, *, out=None) -> Tensor
- Computes the element-wise maximum of :attr:`input` and :attr:`other`.
- This is like :func:`torch.maximum` except it handles NaNs differently:
- if exactly one of the two elements being compared is a NaN then the non-NaN element is taken as the maximum.
- Only if both elements are NaN is NaN propagated.
- This function is a wrapper around C++'s ``std::fmax`` and is similar to NumPy's ``fmax`` function.
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer and floating-point inputs.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([9.7, float('nan'), 3.1, float('nan')])
- >>> b = torch.tensor([-2.2, 0.5, float('nan'), float('nan')])
- >>> torch.fmax(a, b)
- tensor([9.7000, 0.5000, 3.1000, nan])
- """
- def fmin(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- fmin(input, other, *, out=None) -> Tensor
- Computes the element-wise minimum of :attr:`input` and :attr:`other`.
- This is like :func:`torch.minimum` except it handles NaNs differently:
- if exactly one of the two elements being compared is a NaN then the non-NaN element is taken as the minimum.
- Only if both elements are NaN is NaN propagated.
- This function is a wrapper around C++'s ``std::fmin`` and is similar to NumPy's ``fmin`` function.
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer and floating-point inputs.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([2.2, float('nan'), 2.1, float('nan')])
- >>> b = torch.tensor([-9.3, 0.1, float('nan'), float('nan')])
- >>> torch.fmin(a, b)
- tensor([-9.3000, 0.1000, 2.1000, nan])
- """
- @overload
- def fmod(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- fmod(input, other, *, out=None) -> Tensor
- Applies C++'s `std::fmod <https://en.cppreference.com/w/cpp/numeric/math/fmod>`_ entrywise.
- The result has the same sign as the dividend :attr:`input` and its absolute value
- is less than that of :attr:`other`.
- This function may be defined in terms of :func:`torch.div` as
- .. code:: python
- torch.fmod(a, b) == a - a.div(b, rounding_mode="trunc") * b
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer and float inputs.
- .. note::
- When the divisor is zero, returns ``NaN`` for floating point dtypes
- on both CPU and GPU; raises ``RuntimeError`` for integer division by
- zero on CPU; Integer division by zero on GPU may return any value.
- .. note::
- Complex inputs are not supported. In some cases, it is not mathematically
- possible to satisfy the definition of a modulo operation with complex numbers.
- .. seealso::
- :func:`torch.remainder` which implements Python's modulus operator.
- This one is defined using division rounding down the result.
- Args:
- input (Tensor): the dividend
- other (Tensor or Scalar): the divisor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.fmod(torch.tensor([-3., -2, -1, 1, 2, 3]), 2)
- tensor([-1., -0., -1., 1., 0., 1.])
- >>> torch.fmod(torch.tensor([1, 2, 3, 4, 5]), -1.5)
- tensor([1.0000, 0.5000, 0.0000, 1.0000, 0.5000])
- """
- @overload
- def fmod(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- fmod(input, other, *, out=None) -> Tensor
- Applies C++'s `std::fmod <https://en.cppreference.com/w/cpp/numeric/math/fmod>`_ entrywise.
- The result has the same sign as the dividend :attr:`input` and its absolute value
- is less than that of :attr:`other`.
- This function may be defined in terms of :func:`torch.div` as
- .. code:: python
- torch.fmod(a, b) == a - a.div(b, rounding_mode="trunc") * b
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer and float inputs.
- .. note::
- When the divisor is zero, returns ``NaN`` for floating point dtypes
- on both CPU and GPU; raises ``RuntimeError`` for integer division by
- zero on CPU; Integer division by zero on GPU may return any value.
- .. note::
- Complex inputs are not supported. In some cases, it is not mathematically
- possible to satisfy the definition of a modulo operation with complex numbers.
- .. seealso::
- :func:`torch.remainder` which implements Python's modulus operator.
- This one is defined using division rounding down the result.
- Args:
- input (Tensor): the dividend
- other (Tensor or Scalar): the divisor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.fmod(torch.tensor([-3., -2, -1, 1, 2, 3]), 2)
- tensor([-1., -0., -1., 1., 0., 1.])
- >>> torch.fmod(torch.tensor([1, 2, 3, 4, 5]), -1.5)
- tensor([1.0000, 0.5000, 0.0000, 1.0000, 0.5000])
- """
- def frac(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- frac(input, *, out=None) -> Tensor
- Computes the fractional portion of each element in :attr:`input`.
- .. math::
- \text{out}_{i} = \text{input}_{i} - \left\lfloor |\text{input}_{i}| \right\rfloor * \operatorname{sgn}(\text{input}_{i})
- Example::
- >>> torch.frac(torch.tensor([1, 2.5, -3.2]))
- tensor([ 0.0000, 0.5000, -0.2000])
- """
- def frac_(input: Tensor) -> Tensor: ...
- def frexp(
- input: Tensor,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.frexp:
- r"""
- frexp(input, *, out=None) -> (Tensor mantissa, Tensor exponent)
- Decomposes :attr:`input` into mantissa and exponent tensors
- such that :math:`\text{input} = \text{mantissa} \times 2^{\text{exponent}}`.
- The range of mantissa is the open interval (-1, 1).
- Supports float inputs.
- Args:
- input (Tensor): the input tensor
- Keyword args:
- out (tuple, optional): the output tensors
- Example::
- >>> x = torch.arange(9.)
- >>> mantissa, exponent = torch.frexp(x)
- >>> mantissa
- tensor([0.0000, 0.5000, 0.5000, 0.7500, 0.5000, 0.6250, 0.7500, 0.8750, 0.5000])
- >>> exponent
- tensor([0, 1, 2, 2, 3, 3, 3, 3, 4], dtype=torch.int32)
- >>> torch.ldexp(mantissa, exponent)
- tensor([0., 1., 2., 3., 4., 5., 6., 7., 8.])
- """
- def frobenius_norm(
- input: Tensor,
- dim: _int | _size,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def from_file(
- filename: str,
- shared: _bool | None = None,
- size: _int | None = 0,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- from_file(filename, shared=None, size=0, *, dtype=None, layout=None, device=None, pin_memory=False)
- Creates a CPU tensor with a storage backed by a memory-mapped file.
- If ``shared`` is True, then memory is shared between processes. All changes are written to the file.
- If ``shared`` is False, then changes to the tensor do not affect the file.
- ``size`` is the number of elements in the Tensor. If ``shared`` is ``False``, then the file must contain
- at least ``size * sizeof(dtype)`` bytes. If ``shared`` is ``True`` the file will be created if needed.
- .. note::
- Only CPU tensors can be mapped to files.
- .. note::
- For now, tensors with storages backed by a memory-mapped file cannot be created in pinned memory.
- Args:
- filename (str): file name to map
- shared (bool): whether to share memory (whether ``MAP_SHARED`` or ``MAP_PRIVATE`` is passed to the
- underlying `mmap(2) call <https://man7.org/linux/man-pages/man2/mmap.2.html>`_)
- size (int): number of elements in the tensor
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> t = torch.randn(2, 5, dtype=torch.float64)
- >>> t.numpy().tofile('storage.pt')
- >>> t_mapped = torch.from_file('storage.pt', shared=False, size=10, dtype=torch.float64)
- """
- def from_numpy(ndarray) -> Tensor:
- r"""
- from_numpy(ndarray) -> Tensor
- Creates a :class:`Tensor` from a :class:`numpy.ndarray`.
- The returned tensor and :attr:`ndarray` share the same memory. Modifications to
- the tensor will be reflected in the :attr:`ndarray` and vice versa. The returned
- tensor is not resizable.
- It currently accepts :attr:`ndarray` with dtypes of ``numpy.float64``,
- ``numpy.float32``, ``numpy.float16``, ``numpy.complex64``, ``numpy.complex128``,
- ``numpy.int64``, ``numpy.int32``, ``numpy.int16``, ``numpy.int8``, ``numpy.uint8``,
- and ``bool``.
- .. warning::
- Writing to a tensor created from a read-only NumPy array is not supported and will result in undefined behavior.
- Example::
- >>> a = numpy.array([1, 2, 3])
- >>> t = torch.from_numpy(a)
- >>> t
- tensor([ 1, 2, 3])
- >>> t[0] = -1
- >>> a
- array([-1, 2, 3])
- """
- def frombuffer(
- buffer: Any,
- *,
- dtype: _dtype,
- count: int = -1,
- offset: int = 0,
- requires_grad: _bool = False,
- ) -> Tensor:
- r"""
- frombuffer(buffer, *, dtype, count=-1, offset=0, requires_grad=False) -> Tensor
- Creates a 1-dimensional :class:`Tensor` from an object that implements
- the Python buffer protocol.
- Skips the first :attr:`offset` bytes in the buffer, and interprets the rest of
- the raw bytes as a 1-dimensional tensor of type :attr:`dtype` with :attr:`count`
- elements.
- Note that either of the following must be true:
- 1. :attr:`count` is a positive non-zero number, and the total number of bytes
- in the buffer is more than :attr:`offset` plus :attr:`count` times the size
- (in bytes) of :attr:`dtype`.
- 2. :attr:`count` is negative, and the length (number of bytes) of the buffer
- subtracted by the :attr:`offset` is a multiple of the size (in bytes) of
- :attr:`dtype`.
- The returned tensor and buffer share the same memory. Modifications to
- the tensor will be reflected in the buffer and vice versa. The returned
- tensor is not resizable.
- .. note::
- This function increments the reference count for the object that
- owns the shared memory. Therefore, such memory will not be deallocated
- before the returned tensor goes out of scope.
- .. warning::
- This function's behavior is undefined when passed an object implementing
- the buffer protocol whose data is not on the CPU. Doing so is likely to
- cause a segmentation fault.
- .. warning::
- This function does not try to infer the :attr:`dtype` (hence, it is not
- optional). Passing a different :attr:`dtype` than its source may result
- in unexpected behavior.
- Args:
- buffer (object): a Python object that exposes the buffer interface.
- Keyword args:
- dtype (:class:`torch.dtype`): the desired data type of returned tensor.
- count (int, optional): the number of desired elements to be read.
- If negative, all the elements (until the end of the buffer) will be
- read. Default: -1.
- offset (int, optional): the number of bytes to skip at the start of
- the buffer. Default: 0.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> import array
- >>> a = array.array('i', [1, 2, 3])
- >>> t = torch.frombuffer(a, dtype=torch.int32)
- >>> t
- tensor([ 1, 2, 3])
- >>> t[0] = -1
- >>> a
- array([-1, 2, 3])
- >>> # Interprets the signed char bytes as 32-bit integers.
- >>> # Each 4 signed char elements will be interpreted as
- >>> # 1 signed 32-bit integer.
- >>> import array
- >>> a = array.array('b', [-1, 0, 0, 0])
- >>> torch.frombuffer(a, dtype=torch.int32)
- tensor([255], dtype=torch.int32)
- """
- @overload
- def full(
- size: _size,
- fill_value: Number | _complex,
- *,
- out: Tensor | None = None,
- layout: _layout = strided,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- full(size, fill_value, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a tensor of size :attr:`size` filled with :attr:`fill_value`. The
- tensor's dtype is inferred from :attr:`fill_value`.
- Args:
- size (int...): a list, tuple, or :class:`torch.Size` of integers defining the
- shape of the output tensor.
- fill_value (Scalar): the value to fill the output tensor with.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.full((2, 3), 3.141592)
- tensor([[ 3.1416, 3.1416, 3.1416],
- [ 3.1416, 3.1416, 3.1416]])
- """
- @overload
- def full(
- size: _size,
- fill_value: Number | _complex,
- *,
- names: list[str | None],
- layout: _layout = strided,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- full(size, fill_value, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a tensor of size :attr:`size` filled with :attr:`fill_value`. The
- tensor's dtype is inferred from :attr:`fill_value`.
- Args:
- size (int...): a list, tuple, or :class:`torch.Size` of integers defining the
- shape of the output tensor.
- fill_value (Scalar): the value to fill the output tensor with.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.full((2, 3), 3.141592)
- tensor([[ 3.1416, 3.1416, 3.1416],
- [ 3.1416, 3.1416, 3.1416]])
- """
- @overload
- def full(
- size: Sequence[_int | SymInt],
- fill_value: Number | _complex,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- full(size, fill_value, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a tensor of size :attr:`size` filled with :attr:`fill_value`. The
- tensor's dtype is inferred from :attr:`fill_value`.
- Args:
- size (int...): a list, tuple, or :class:`torch.Size` of integers defining the
- shape of the output tensor.
- fill_value (Scalar): the value to fill the output tensor with.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.full((2, 3), 3.141592)
- tensor([[ 3.1416, 3.1416, 3.1416],
- [ 3.1416, 3.1416, 3.1416]])
- """
- @overload
- def full(
- size: _size,
- fill_value: Number | _complex,
- *,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- full(size, fill_value, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a tensor of size :attr:`size` filled with :attr:`fill_value`. The
- tensor's dtype is inferred from :attr:`fill_value`.
- Args:
- size (int...): a list, tuple, or :class:`torch.Size` of integers defining the
- shape of the output tensor.
- fill_value (Scalar): the value to fill the output tensor with.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.full((2, 3), 3.141592)
- tensor([[ 3.1416, 3.1416, 3.1416],
- [ 3.1416, 3.1416, 3.1416]])
- """
- def full_like(
- input: Tensor,
- fill_value: Number | _complex,
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- full_like(input, fill_value, \*, dtype=None, layout=torch.strided, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same size as :attr:`input` filled with :attr:`fill_value`.
- ``torch.full_like(input, fill_value)`` is equivalent to
- ``torch.full(input.size(), fill_value, dtype=input.dtype, layout=input.layout, device=input.device)``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- fill_value: the number to fill the output tensor with.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- Example::
- >>> x = torch.ones(2, 3)
- >>> torch.full_like(x, 3.141592)
- tensor([[ 3.1416, 3.1416, 3.1416],
- [ 3.1416, 3.1416, 3.1416]])
- >>> torch.full_like(x, 7)
- tensor([[7., 7., 7.],
- [7., 7., 7.]])
- >>> torch.full_like(x, 0.5, dtype=torch.int32)
- tensor([[0, 0, 0],
- [0, 0, 0]], dtype=torch.int32)
- >>> y = torch.randn(3, 4, dtype=torch.float64)
- >>> torch.full_like(y, -1.0)
- tensor([[-1., -1., -1., -1.],
- [-1., -1., -1., -1.],
- [-1., -1., -1., -1.]], dtype=torch.float64)
- """
- def fused_moving_avg_obs_fake_quant(
- input: Tensor,
- observer_on: Tensor,
- fake_quant_on: Tensor,
- running_min: Tensor,
- running_max: Tensor,
- scale: Tensor,
- zero_point: Tensor,
- averaging_const: _float,
- quant_min: _int,
- quant_max: _int,
- ch_axis: _int,
- per_row_fake_quant: _bool = False,
- symmetric_quant: _bool = False,
- ) -> Tensor: ...
- @overload
- def gather(
- input: Tensor,
- dim: _int,
- index: Tensor,
- *,
- sparse_grad: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- gather(input, dim, index, *, sparse_grad=False, out=None) -> Tensor
- Gathers values along an axis specified by `dim`.
- For a 3-D tensor the output is specified by::
- out[i][j][k] = input[index[i][j][k]][j][k] # if dim == 0
- out[i][j][k] = input[i][index[i][j][k]][k] # if dim == 1
- out[i][j][k] = input[i][j][index[i][j][k]] # if dim == 2
- :attr:`input` and :attr:`index` must have the same number of dimensions.
- It is also required that ``index.size(d) <= input.size(d)`` for all
- dimensions ``d != dim``. :attr:`out` will have the same shape as :attr:`index`.
- Note that ``input`` and ``index`` do not broadcast against each other.
- When :attr:`index` is empty, we always return an empty output with the same shape
- without further error checking.
- Args:
- input (Tensor): the source tensor
- dim (int): the axis along which to index
- index (LongTensor): the indices of elements to gather
- Keyword arguments:
- sparse_grad (bool, optional): If ``True``, gradient w.r.t. :attr:`input` will be a sparse tensor.
- out (Tensor, optional): the destination tensor
- Example::
- >>> t = torch.tensor([[1, 2], [3, 4]])
- >>> torch.gather(t, 1, torch.tensor([[0, 0], [1, 0]]))
- tensor([[ 1, 1],
- [ 4, 3]])
- """
- @overload
- def gather(
- input: Tensor,
- dim: str | EllipsisType | None,
- index: Tensor,
- *,
- sparse_grad: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- gather(input, dim, index, *, sparse_grad=False, out=None) -> Tensor
- Gathers values along an axis specified by `dim`.
- For a 3-D tensor the output is specified by::
- out[i][j][k] = input[index[i][j][k]][j][k] # if dim == 0
- out[i][j][k] = input[i][index[i][j][k]][k] # if dim == 1
- out[i][j][k] = input[i][j][index[i][j][k]] # if dim == 2
- :attr:`input` and :attr:`index` must have the same number of dimensions.
- It is also required that ``index.size(d) <= input.size(d)`` for all
- dimensions ``d != dim``. :attr:`out` will have the same shape as :attr:`index`.
- Note that ``input`` and ``index`` do not broadcast against each other.
- When :attr:`index` is empty, we always return an empty output with the same shape
- without further error checking.
- Args:
- input (Tensor): the source tensor
- dim (int): the axis along which to index
- index (LongTensor): the indices of elements to gather
- Keyword arguments:
- sparse_grad (bool, optional): If ``True``, gradient w.r.t. :attr:`input` will be a sparse tensor.
- out (Tensor, optional): the destination tensor
- Example::
- >>> t = torch.tensor([[1, 2], [3, 4]])
- >>> torch.gather(t, 1, torch.tensor([[0, 0], [1, 0]]))
- tensor([[ 1, 1],
- [ 4, 3]])
- """
- def gcd(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- gcd(input, other, *, out=None) -> Tensor
- Computes the element-wise greatest common divisor (GCD) of :attr:`input` and :attr:`other`.
- Both :attr:`input` and :attr:`other` must have integer types.
- .. note::
- This defines :math:`gcd(0, 0) = 0`.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the second input tensor
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([5, 10, 15])
- >>> b = torch.tensor([3, 4, 5])
- >>> torch.gcd(a, b)
- tensor([1, 2, 5])
- >>> c = torch.tensor([3])
- >>> torch.gcd(a, c)
- tensor([1, 1, 3])
- """
- def gcd_(input: Tensor, other: Tensor) -> Tensor: ...
- @overload
- def ge(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- ge(input, other, *, out=None) -> Tensor
- Computes :math:`\text{input} \geq \text{other}` element-wise.
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or float): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is greater than or equal to :attr:`other` and False elsewhere
- Example::
- >>> torch.ge(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[True, True], [False, True]])
- """
- @overload
- def ge(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- ge(input, other, *, out=None) -> Tensor
- Computes :math:`\text{input} \geq \text{other}` element-wise.
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or float): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is greater than or equal to :attr:`other` and False elsewhere
- Example::
- >>> torch.ge(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[True, True], [False, True]])
- """
- def geqrf(
- input: Tensor,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.geqrf:
- r"""
- geqrf(input, *, out=None) -> (Tensor, Tensor)
- This is a low-level function for calling LAPACK's geqrf directly. This function
- returns a namedtuple (a, tau) as defined in `LAPACK documentation for geqrf`_ .
- Computes a QR decomposition of :attr:`input`.
- Both `Q` and `R` matrices are stored in the same output tensor `a`.
- The elements of `R` are stored on and above the diagonal.
- Elementary reflectors (or Householder vectors) implicitly defining matrix `Q`
- are stored below the diagonal.
- The results of this function can be used together with :func:`torch.linalg.householder_product`
- to obtain the `Q` matrix or
- with :func:`torch.ormqr`, which uses an implicit representation of the `Q` matrix,
- for an efficient matrix-matrix multiplication.
- See `LAPACK documentation for geqrf`_ for further details.
- .. note::
- See also :func:`torch.linalg.qr`, which computes Q and R matrices, and :func:`torch.linalg.lstsq`
- with the ``driver="gels"`` option for a function that can solve matrix equations using a QR decomposition.
- Args:
- input (Tensor): the input matrix
- Keyword args:
- out (tuple, optional): the output tuple of (Tensor, Tensor). Ignored if `None`. Default: `None`.
- .. _LAPACK documentation for geqrf:
- http://www.netlib.org/lapack/explore-html/df/dc5/group__variants_g_ecomputational_ga3766ea903391b5cf9008132f7440ec7b.html
- """
- def ger(
- input: Tensor,
- vec2: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- ger(input, vec2, *, out=None) -> Tensor
- Alias of :func:`torch.outer`.
- .. warning::
- This function is deprecated and will be removed in a future PyTorch release.
- Use :func:`torch.outer` instead.
- """
- def get_default_dtype() -> _dtype:
- r"""
- get_default_dtype() -> torch.dtype
- Get the current default floating point :class:`torch.dtype`.
- Example::
- >>> torch.get_default_dtype() # initial default for floating point is torch.float32
- torch.float32
- >>> torch.set_default_dtype(torch.float64)
- >>> torch.get_default_dtype() # default is now changed to torch.float64
- torch.float64
- """
- def get_num_interop_threads() -> _int:
- r"""
- get_num_interop_threads() -> int
- Returns the number of threads used for inter-op parallelism on CPU
- (e.g. in JIT interpreter)
- """
- def get_num_threads() -> _int:
- r"""
- get_num_threads() -> int
- Returns the number of threads used for parallelizing CPU operations
- """
- @overload
- def gradient(
- input: Tensor,
- *,
- spacing: Number | _complex | None = None,
- dim: _int | None = None,
- edge_order: _int = 1,
- ) -> tuple[Tensor, ...]:
- r"""
- gradient(input, *, spacing=1, dim=None, edge_order=1) -> List of Tensors
- Estimates the gradient of a function :math:`g : \mathbb{R}^n \rightarrow \mathbb{R}` in
- one or more dimensions using the `second-order accurate central differences method
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ and
- either first or second order estimates at the boundaries.
- The gradient of :math:`g` is estimated using samples. By default, when :attr:`spacing` is not
- specified, the samples are entirely described by :attr:`input`, and the mapping of input coordinates
- to an output is the same as the tensor's mapping of indices to values. For example, for a three-dimensional
- :attr:`input` the function described is :math:`g : \mathbb{R}^3 \rightarrow \mathbb{R}`, and
- :math:`g(1, 2, 3)\ == input[1, 2, 3]`.
- When :attr:`spacing` is specified, it modifies the relationship between :attr:`input` and input coordinates.
- This is detailed in the "Keyword Arguments" section below.
- The gradient is estimated by estimating each partial derivative of :math:`g` independently. This estimation is
- accurate if :math:`g` is in :math:`C^3` (it has at least 3 continuous derivatives), and the estimation can be
- improved by providing closer samples. Mathematically, the value at each interior point of a partial derivative
- is estimated using `Taylor's theorem with remainder <https://en.wikipedia.org/wiki/Taylor%27s_theorem>`_.
- Letting :math:`x` be an interior point with :math:`x-h_l` and :math:`x+h_r` be points neighboring
- it to the left and right respectively, :math:`f(x+h_r)` and :math:`f(x-h_l)` can be estimated using:
- .. math::
- \begin{aligned}
- f(x+h_r) = f(x) + h_r f'(x) + {h_r}^2 \frac{f''(x)}{2} + {h_r}^3 \frac{f'''(\xi_1)}{6}, \xi_1 \in (x, x+h_r) \\
- f(x-h_l) = f(x) - h_l f'(x) + {h_l}^2 \frac{f''(x)}{2} - {h_l}^3 \frac{f'''(\xi_2)}{6}, \xi_2 \in (x, x-h_l) \\
- \end{aligned}
- Using the fact that :math:`f \in C^3` and solving the linear system, we derive:
- .. math::
- f'(x) \approx \frac{ {h_l}^2 f(x+h_r) - {h_r}^2 f(x-h_l)
- + ({h_r}^2-{h_l}^2 ) f(x) }{ {h_r} {h_l}^2 + {h_r}^2 {h_l} }
- .. note::
- We estimate the gradient of functions in complex domain
- :math:`g : \mathbb{C}^n \rightarrow \mathbb{C}` in the same way.
- The value of each partial derivative at the boundary points is computed differently. See edge_order below.
- Args:
- input (``Tensor``): the tensor that represents the values of the function
- Keyword args:
- spacing (``scalar``, ``list of scalar``, ``list of Tensor``, optional): :attr:`spacing` can be used to modify
- how the :attr:`input` tensor's indices relate to sample coordinates. If :attr:`spacing` is a scalar then
- the indices are multiplied by the scalar to produce the coordinates. For example, if :attr:`spacing=2` the
- indices (1, 2, 3) become coordinates (2, 4, 6). If :attr:`spacing` is a list of scalars then the corresponding
- indices are multiplied. For example, if :attr:`spacing=(2, -1, 3)` the indices (1, 2, 3) become coordinates (2, -2, 9).
- Finally, if :attr:`spacing` is a list of one-dimensional tensors then each tensor specifies the coordinates for
- the corresponding dimension. For example, if the indices are (1, 2, 3) and the tensors are (t0, t1, t2), then
- the coordinates are (t0[1], t1[2], t2[3])
- dim (``int``, ``list of int``, optional): the dimension or dimensions to approximate the gradient over. By default
- the partial gradient in every dimension is computed. Note that when :attr:`dim` is specified the elements of
- the :attr:`spacing` argument must correspond with the specified dims."
- edge_order (``int``, optional): 1 or 2, for `first-order
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ or
- `second-order <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_
- estimation of the boundary ("edge") values, respectively. Note that when :attr:`edge_order` is specified, each
- dimension size of :attr:`input` should be at least edge_order+1
- Examples::
- >>> # Estimates the gradient of f(x)=x^2 at points [-2, -1, 2, 4]
- >>> coordinates = (torch.tensor([-2., -1., 1., 4.]),)
- >>> values = torch.tensor([4., 1., 1., 16.], )
- >>> torch.gradient(values, spacing = coordinates)
- (tensor([-3., -2., 2., 5.]),)
- >>> # Estimates the gradient of the R^2 -> R function whose samples are
- >>> # described by the tensor t. Implicit coordinates are [0, 1] for the outermost
- >>> # dimension and [0, 1, 2, 3] for the innermost dimension, and function estimates
- >>> # partial derivative for both dimensions.
- >>> t = torch.tensor([[1, 2, 4, 8], [10, 20, 40, 80]])
- >>> torch.gradient(t)
- (tensor([[ 9., 18., 36., 72.],
- [ 9., 18., 36., 72.]]),
- tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]))
- >>> # A scalar value for spacing modifies the relationship between tensor indices
- >>> # and input coordinates by multiplying the indices to find the
- >>> # coordinates. For example, below the indices of the innermost
- >>> # 0, 1, 2, 3 translate to coordinates of [0, 2, 4, 6], and the indices of
- >>> # the outermost dimension 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = 2.0) # dim = None (implicitly [0, 1])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.5000, 0.7500, 1.5000, 2.0000],
- [ 5.0000, 7.5000, 15.0000, 20.0000]]))
- >>> # doubling the spacing between samples halves the estimated partial gradients.
- >>>
- >>> # Estimates only the partial derivative for dimension 1
- >>> torch.gradient(t, dim = 1) # spacing = None (implicitly 1.)
- (tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]),)
- >>> # When spacing is a list of scalars, the relationship between the tensor
- >>> # indices and input coordinates changes based on dimension.
- >>> # For example, below, the indices of the innermost dimension 0, 1, 2, 3 translate
- >>> # to coordinates of [0, 3, 6, 9], and the indices of the outermost dimension
- >>> # 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = [3., 2.])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- >>> # The following example is a replication of the previous one with explicit
- >>> # coordinates.
- >>> coords = (torch.tensor([0, 2]), torch.tensor([0, 3, 6, 9]))
- >>> torch.gradient(t, spacing = coords)
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- """
- @overload
- def gradient(
- input: Tensor,
- *,
- spacing: Sequence[Number | _complex],
- dim: _int | None = None,
- edge_order: _int = 1,
- ) -> tuple[Tensor, ...]:
- r"""
- gradient(input, *, spacing=1, dim=None, edge_order=1) -> List of Tensors
- Estimates the gradient of a function :math:`g : \mathbb{R}^n \rightarrow \mathbb{R}` in
- one or more dimensions using the `second-order accurate central differences method
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ and
- either first or second order estimates at the boundaries.
- The gradient of :math:`g` is estimated using samples. By default, when :attr:`spacing` is not
- specified, the samples are entirely described by :attr:`input`, and the mapping of input coordinates
- to an output is the same as the tensor's mapping of indices to values. For example, for a three-dimensional
- :attr:`input` the function described is :math:`g : \mathbb{R}^3 \rightarrow \mathbb{R}`, and
- :math:`g(1, 2, 3)\ == input[1, 2, 3]`.
- When :attr:`spacing` is specified, it modifies the relationship between :attr:`input` and input coordinates.
- This is detailed in the "Keyword Arguments" section below.
- The gradient is estimated by estimating each partial derivative of :math:`g` independently. This estimation is
- accurate if :math:`g` is in :math:`C^3` (it has at least 3 continuous derivatives), and the estimation can be
- improved by providing closer samples. Mathematically, the value at each interior point of a partial derivative
- is estimated using `Taylor's theorem with remainder <https://en.wikipedia.org/wiki/Taylor%27s_theorem>`_.
- Letting :math:`x` be an interior point with :math:`x-h_l` and :math:`x+h_r` be points neighboring
- it to the left and right respectively, :math:`f(x+h_r)` and :math:`f(x-h_l)` can be estimated using:
- .. math::
- \begin{aligned}
- f(x+h_r) = f(x) + h_r f'(x) + {h_r}^2 \frac{f''(x)}{2} + {h_r}^3 \frac{f'''(\xi_1)}{6}, \xi_1 \in (x, x+h_r) \\
- f(x-h_l) = f(x) - h_l f'(x) + {h_l}^2 \frac{f''(x)}{2} - {h_l}^3 \frac{f'''(\xi_2)}{6}, \xi_2 \in (x, x-h_l) \\
- \end{aligned}
- Using the fact that :math:`f \in C^3` and solving the linear system, we derive:
- .. math::
- f'(x) \approx \frac{ {h_l}^2 f(x+h_r) - {h_r}^2 f(x-h_l)
- + ({h_r}^2-{h_l}^2 ) f(x) }{ {h_r} {h_l}^2 + {h_r}^2 {h_l} }
- .. note::
- We estimate the gradient of functions in complex domain
- :math:`g : \mathbb{C}^n \rightarrow \mathbb{C}` in the same way.
- The value of each partial derivative at the boundary points is computed differently. See edge_order below.
- Args:
- input (``Tensor``): the tensor that represents the values of the function
- Keyword args:
- spacing (``scalar``, ``list of scalar``, ``list of Tensor``, optional): :attr:`spacing` can be used to modify
- how the :attr:`input` tensor's indices relate to sample coordinates. If :attr:`spacing` is a scalar then
- the indices are multiplied by the scalar to produce the coordinates. For example, if :attr:`spacing=2` the
- indices (1, 2, 3) become coordinates (2, 4, 6). If :attr:`spacing` is a list of scalars then the corresponding
- indices are multiplied. For example, if :attr:`spacing=(2, -1, 3)` the indices (1, 2, 3) become coordinates (2, -2, 9).
- Finally, if :attr:`spacing` is a list of one-dimensional tensors then each tensor specifies the coordinates for
- the corresponding dimension. For example, if the indices are (1, 2, 3) and the tensors are (t0, t1, t2), then
- the coordinates are (t0[1], t1[2], t2[3])
- dim (``int``, ``list of int``, optional): the dimension or dimensions to approximate the gradient over. By default
- the partial gradient in every dimension is computed. Note that when :attr:`dim` is specified the elements of
- the :attr:`spacing` argument must correspond with the specified dims."
- edge_order (``int``, optional): 1 or 2, for `first-order
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ or
- `second-order <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_
- estimation of the boundary ("edge") values, respectively. Note that when :attr:`edge_order` is specified, each
- dimension size of :attr:`input` should be at least edge_order+1
- Examples::
- >>> # Estimates the gradient of f(x)=x^2 at points [-2, -1, 2, 4]
- >>> coordinates = (torch.tensor([-2., -1., 1., 4.]),)
- >>> values = torch.tensor([4., 1., 1., 16.], )
- >>> torch.gradient(values, spacing = coordinates)
- (tensor([-3., -2., 2., 5.]),)
- >>> # Estimates the gradient of the R^2 -> R function whose samples are
- >>> # described by the tensor t. Implicit coordinates are [0, 1] for the outermost
- >>> # dimension and [0, 1, 2, 3] for the innermost dimension, and function estimates
- >>> # partial derivative for both dimensions.
- >>> t = torch.tensor([[1, 2, 4, 8], [10, 20, 40, 80]])
- >>> torch.gradient(t)
- (tensor([[ 9., 18., 36., 72.],
- [ 9., 18., 36., 72.]]),
- tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]))
- >>> # A scalar value for spacing modifies the relationship between tensor indices
- >>> # and input coordinates by multiplying the indices to find the
- >>> # coordinates. For example, below the indices of the innermost
- >>> # 0, 1, 2, 3 translate to coordinates of [0, 2, 4, 6], and the indices of
- >>> # the outermost dimension 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = 2.0) # dim = None (implicitly [0, 1])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.5000, 0.7500, 1.5000, 2.0000],
- [ 5.0000, 7.5000, 15.0000, 20.0000]]))
- >>> # doubling the spacing between samples halves the estimated partial gradients.
- >>>
- >>> # Estimates only the partial derivative for dimension 1
- >>> torch.gradient(t, dim = 1) # spacing = None (implicitly 1.)
- (tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]),)
- >>> # When spacing is a list of scalars, the relationship between the tensor
- >>> # indices and input coordinates changes based on dimension.
- >>> # For example, below, the indices of the innermost dimension 0, 1, 2, 3 translate
- >>> # to coordinates of [0, 3, 6, 9], and the indices of the outermost dimension
- >>> # 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = [3., 2.])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- >>> # The following example is a replication of the previous one with explicit
- >>> # coordinates.
- >>> coords = (torch.tensor([0, 2]), torch.tensor([0, 3, 6, 9]))
- >>> torch.gradient(t, spacing = coords)
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- """
- @overload
- def gradient(
- input: Tensor,
- *,
- spacing: Sequence[Number | _complex],
- dim: _size,
- edge_order: _int = 1,
- ) -> tuple[Tensor, ...]:
- r"""
- gradient(input, *, spacing=1, dim=None, edge_order=1) -> List of Tensors
- Estimates the gradient of a function :math:`g : \mathbb{R}^n \rightarrow \mathbb{R}` in
- one or more dimensions using the `second-order accurate central differences method
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ and
- either first or second order estimates at the boundaries.
- The gradient of :math:`g` is estimated using samples. By default, when :attr:`spacing` is not
- specified, the samples are entirely described by :attr:`input`, and the mapping of input coordinates
- to an output is the same as the tensor's mapping of indices to values. For example, for a three-dimensional
- :attr:`input` the function described is :math:`g : \mathbb{R}^3 \rightarrow \mathbb{R}`, and
- :math:`g(1, 2, 3)\ == input[1, 2, 3]`.
- When :attr:`spacing` is specified, it modifies the relationship between :attr:`input` and input coordinates.
- This is detailed in the "Keyword Arguments" section below.
- The gradient is estimated by estimating each partial derivative of :math:`g` independently. This estimation is
- accurate if :math:`g` is in :math:`C^3` (it has at least 3 continuous derivatives), and the estimation can be
- improved by providing closer samples. Mathematically, the value at each interior point of a partial derivative
- is estimated using `Taylor's theorem with remainder <https://en.wikipedia.org/wiki/Taylor%27s_theorem>`_.
- Letting :math:`x` be an interior point with :math:`x-h_l` and :math:`x+h_r` be points neighboring
- it to the left and right respectively, :math:`f(x+h_r)` and :math:`f(x-h_l)` can be estimated using:
- .. math::
- \begin{aligned}
- f(x+h_r) = f(x) + h_r f'(x) + {h_r}^2 \frac{f''(x)}{2} + {h_r}^3 \frac{f'''(\xi_1)}{6}, \xi_1 \in (x, x+h_r) \\
- f(x-h_l) = f(x) - h_l f'(x) + {h_l}^2 \frac{f''(x)}{2} - {h_l}^3 \frac{f'''(\xi_2)}{6}, \xi_2 \in (x, x-h_l) \\
- \end{aligned}
- Using the fact that :math:`f \in C^3` and solving the linear system, we derive:
- .. math::
- f'(x) \approx \frac{ {h_l}^2 f(x+h_r) - {h_r}^2 f(x-h_l)
- + ({h_r}^2-{h_l}^2 ) f(x) }{ {h_r} {h_l}^2 + {h_r}^2 {h_l} }
- .. note::
- We estimate the gradient of functions in complex domain
- :math:`g : \mathbb{C}^n \rightarrow \mathbb{C}` in the same way.
- The value of each partial derivative at the boundary points is computed differently. See edge_order below.
- Args:
- input (``Tensor``): the tensor that represents the values of the function
- Keyword args:
- spacing (``scalar``, ``list of scalar``, ``list of Tensor``, optional): :attr:`spacing` can be used to modify
- how the :attr:`input` tensor's indices relate to sample coordinates. If :attr:`spacing` is a scalar then
- the indices are multiplied by the scalar to produce the coordinates. For example, if :attr:`spacing=2` the
- indices (1, 2, 3) become coordinates (2, 4, 6). If :attr:`spacing` is a list of scalars then the corresponding
- indices are multiplied. For example, if :attr:`spacing=(2, -1, 3)` the indices (1, 2, 3) become coordinates (2, -2, 9).
- Finally, if :attr:`spacing` is a list of one-dimensional tensors then each tensor specifies the coordinates for
- the corresponding dimension. For example, if the indices are (1, 2, 3) and the tensors are (t0, t1, t2), then
- the coordinates are (t0[1], t1[2], t2[3])
- dim (``int``, ``list of int``, optional): the dimension or dimensions to approximate the gradient over. By default
- the partial gradient in every dimension is computed. Note that when :attr:`dim` is specified the elements of
- the :attr:`spacing` argument must correspond with the specified dims."
- edge_order (``int``, optional): 1 or 2, for `first-order
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ or
- `second-order <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_
- estimation of the boundary ("edge") values, respectively. Note that when :attr:`edge_order` is specified, each
- dimension size of :attr:`input` should be at least edge_order+1
- Examples::
- >>> # Estimates the gradient of f(x)=x^2 at points [-2, -1, 2, 4]
- >>> coordinates = (torch.tensor([-2., -1., 1., 4.]),)
- >>> values = torch.tensor([4., 1., 1., 16.], )
- >>> torch.gradient(values, spacing = coordinates)
- (tensor([-3., -2., 2., 5.]),)
- >>> # Estimates the gradient of the R^2 -> R function whose samples are
- >>> # described by the tensor t. Implicit coordinates are [0, 1] for the outermost
- >>> # dimension and [0, 1, 2, 3] for the innermost dimension, and function estimates
- >>> # partial derivative for both dimensions.
- >>> t = torch.tensor([[1, 2, 4, 8], [10, 20, 40, 80]])
- >>> torch.gradient(t)
- (tensor([[ 9., 18., 36., 72.],
- [ 9., 18., 36., 72.]]),
- tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]))
- >>> # A scalar value for spacing modifies the relationship between tensor indices
- >>> # and input coordinates by multiplying the indices to find the
- >>> # coordinates. For example, below the indices of the innermost
- >>> # 0, 1, 2, 3 translate to coordinates of [0, 2, 4, 6], and the indices of
- >>> # the outermost dimension 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = 2.0) # dim = None (implicitly [0, 1])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.5000, 0.7500, 1.5000, 2.0000],
- [ 5.0000, 7.5000, 15.0000, 20.0000]]))
- >>> # doubling the spacing between samples halves the estimated partial gradients.
- >>>
- >>> # Estimates only the partial derivative for dimension 1
- >>> torch.gradient(t, dim = 1) # spacing = None (implicitly 1.)
- (tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]),)
- >>> # When spacing is a list of scalars, the relationship between the tensor
- >>> # indices and input coordinates changes based on dimension.
- >>> # For example, below, the indices of the innermost dimension 0, 1, 2, 3 translate
- >>> # to coordinates of [0, 3, 6, 9], and the indices of the outermost dimension
- >>> # 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = [3., 2.])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- >>> # The following example is a replication of the previous one with explicit
- >>> # coordinates.
- >>> coords = (torch.tensor([0, 2]), torch.tensor([0, 3, 6, 9]))
- >>> torch.gradient(t, spacing = coords)
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- """
- @overload
- def gradient(
- input: Tensor,
- *,
- spacing: tuple[Tensor, ...] | list[Tensor] | None,
- dim: _int | None = None,
- edge_order: _int = 1,
- ) -> tuple[Tensor, ...]:
- r"""
- gradient(input, *, spacing=1, dim=None, edge_order=1) -> List of Tensors
- Estimates the gradient of a function :math:`g : \mathbb{R}^n \rightarrow \mathbb{R}` in
- one or more dimensions using the `second-order accurate central differences method
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ and
- either first or second order estimates at the boundaries.
- The gradient of :math:`g` is estimated using samples. By default, when :attr:`spacing` is not
- specified, the samples are entirely described by :attr:`input`, and the mapping of input coordinates
- to an output is the same as the tensor's mapping of indices to values. For example, for a three-dimensional
- :attr:`input` the function described is :math:`g : \mathbb{R}^3 \rightarrow \mathbb{R}`, and
- :math:`g(1, 2, 3)\ == input[1, 2, 3]`.
- When :attr:`spacing` is specified, it modifies the relationship between :attr:`input` and input coordinates.
- This is detailed in the "Keyword Arguments" section below.
- The gradient is estimated by estimating each partial derivative of :math:`g` independently. This estimation is
- accurate if :math:`g` is in :math:`C^3` (it has at least 3 continuous derivatives), and the estimation can be
- improved by providing closer samples. Mathematically, the value at each interior point of a partial derivative
- is estimated using `Taylor's theorem with remainder <https://en.wikipedia.org/wiki/Taylor%27s_theorem>`_.
- Letting :math:`x` be an interior point with :math:`x-h_l` and :math:`x+h_r` be points neighboring
- it to the left and right respectively, :math:`f(x+h_r)` and :math:`f(x-h_l)` can be estimated using:
- .. math::
- \begin{aligned}
- f(x+h_r) = f(x) + h_r f'(x) + {h_r}^2 \frac{f''(x)}{2} + {h_r}^3 \frac{f'''(\xi_1)}{6}, \xi_1 \in (x, x+h_r) \\
- f(x-h_l) = f(x) - h_l f'(x) + {h_l}^2 \frac{f''(x)}{2} - {h_l}^3 \frac{f'''(\xi_2)}{6}, \xi_2 \in (x, x-h_l) \\
- \end{aligned}
- Using the fact that :math:`f \in C^3` and solving the linear system, we derive:
- .. math::
- f'(x) \approx \frac{ {h_l}^2 f(x+h_r) - {h_r}^2 f(x-h_l)
- + ({h_r}^2-{h_l}^2 ) f(x) }{ {h_r} {h_l}^2 + {h_r}^2 {h_l} }
- .. note::
- We estimate the gradient of functions in complex domain
- :math:`g : \mathbb{C}^n \rightarrow \mathbb{C}` in the same way.
- The value of each partial derivative at the boundary points is computed differently. See edge_order below.
- Args:
- input (``Tensor``): the tensor that represents the values of the function
- Keyword args:
- spacing (``scalar``, ``list of scalar``, ``list of Tensor``, optional): :attr:`spacing` can be used to modify
- how the :attr:`input` tensor's indices relate to sample coordinates. If :attr:`spacing` is a scalar then
- the indices are multiplied by the scalar to produce the coordinates. For example, if :attr:`spacing=2` the
- indices (1, 2, 3) become coordinates (2, 4, 6). If :attr:`spacing` is a list of scalars then the corresponding
- indices are multiplied. For example, if :attr:`spacing=(2, -1, 3)` the indices (1, 2, 3) become coordinates (2, -2, 9).
- Finally, if :attr:`spacing` is a list of one-dimensional tensors then each tensor specifies the coordinates for
- the corresponding dimension. For example, if the indices are (1, 2, 3) and the tensors are (t0, t1, t2), then
- the coordinates are (t0[1], t1[2], t2[3])
- dim (``int``, ``list of int``, optional): the dimension or dimensions to approximate the gradient over. By default
- the partial gradient in every dimension is computed. Note that when :attr:`dim` is specified the elements of
- the :attr:`spacing` argument must correspond with the specified dims."
- edge_order (``int``, optional): 1 or 2, for `first-order
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ or
- `second-order <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_
- estimation of the boundary ("edge") values, respectively. Note that when :attr:`edge_order` is specified, each
- dimension size of :attr:`input` should be at least edge_order+1
- Examples::
- >>> # Estimates the gradient of f(x)=x^2 at points [-2, -1, 2, 4]
- >>> coordinates = (torch.tensor([-2., -1., 1., 4.]),)
- >>> values = torch.tensor([4., 1., 1., 16.], )
- >>> torch.gradient(values, spacing = coordinates)
- (tensor([-3., -2., 2., 5.]),)
- >>> # Estimates the gradient of the R^2 -> R function whose samples are
- >>> # described by the tensor t. Implicit coordinates are [0, 1] for the outermost
- >>> # dimension and [0, 1, 2, 3] for the innermost dimension, and function estimates
- >>> # partial derivative for both dimensions.
- >>> t = torch.tensor([[1, 2, 4, 8], [10, 20, 40, 80]])
- >>> torch.gradient(t)
- (tensor([[ 9., 18., 36., 72.],
- [ 9., 18., 36., 72.]]),
- tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]))
- >>> # A scalar value for spacing modifies the relationship between tensor indices
- >>> # and input coordinates by multiplying the indices to find the
- >>> # coordinates. For example, below the indices of the innermost
- >>> # 0, 1, 2, 3 translate to coordinates of [0, 2, 4, 6], and the indices of
- >>> # the outermost dimension 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = 2.0) # dim = None (implicitly [0, 1])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.5000, 0.7500, 1.5000, 2.0000],
- [ 5.0000, 7.5000, 15.0000, 20.0000]]))
- >>> # doubling the spacing between samples halves the estimated partial gradients.
- >>>
- >>> # Estimates only the partial derivative for dimension 1
- >>> torch.gradient(t, dim = 1) # spacing = None (implicitly 1.)
- (tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]),)
- >>> # When spacing is a list of scalars, the relationship between the tensor
- >>> # indices and input coordinates changes based on dimension.
- >>> # For example, below, the indices of the innermost dimension 0, 1, 2, 3 translate
- >>> # to coordinates of [0, 3, 6, 9], and the indices of the outermost dimension
- >>> # 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = [3., 2.])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- >>> # The following example is a replication of the previous one with explicit
- >>> # coordinates.
- >>> coords = (torch.tensor([0, 2]), torch.tensor([0, 3, 6, 9]))
- >>> torch.gradient(t, spacing = coords)
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- """
- @overload
- def gradient(
- input: Tensor,
- *,
- spacing: Number | _complex,
- dim: _size,
- edge_order: _int = 1,
- ) -> tuple[Tensor, ...]:
- r"""
- gradient(input, *, spacing=1, dim=None, edge_order=1) -> List of Tensors
- Estimates the gradient of a function :math:`g : \mathbb{R}^n \rightarrow \mathbb{R}` in
- one or more dimensions using the `second-order accurate central differences method
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ and
- either first or second order estimates at the boundaries.
- The gradient of :math:`g` is estimated using samples. By default, when :attr:`spacing` is not
- specified, the samples are entirely described by :attr:`input`, and the mapping of input coordinates
- to an output is the same as the tensor's mapping of indices to values. For example, for a three-dimensional
- :attr:`input` the function described is :math:`g : \mathbb{R}^3 \rightarrow \mathbb{R}`, and
- :math:`g(1, 2, 3)\ == input[1, 2, 3]`.
- When :attr:`spacing` is specified, it modifies the relationship between :attr:`input` and input coordinates.
- This is detailed in the "Keyword Arguments" section below.
- The gradient is estimated by estimating each partial derivative of :math:`g` independently. This estimation is
- accurate if :math:`g` is in :math:`C^3` (it has at least 3 continuous derivatives), and the estimation can be
- improved by providing closer samples. Mathematically, the value at each interior point of a partial derivative
- is estimated using `Taylor's theorem with remainder <https://en.wikipedia.org/wiki/Taylor%27s_theorem>`_.
- Letting :math:`x` be an interior point with :math:`x-h_l` and :math:`x+h_r` be points neighboring
- it to the left and right respectively, :math:`f(x+h_r)` and :math:`f(x-h_l)` can be estimated using:
- .. math::
- \begin{aligned}
- f(x+h_r) = f(x) + h_r f'(x) + {h_r}^2 \frac{f''(x)}{2} + {h_r}^3 \frac{f'''(\xi_1)}{6}, \xi_1 \in (x, x+h_r) \\
- f(x-h_l) = f(x) - h_l f'(x) + {h_l}^2 \frac{f''(x)}{2} - {h_l}^3 \frac{f'''(\xi_2)}{6}, \xi_2 \in (x, x-h_l) \\
- \end{aligned}
- Using the fact that :math:`f \in C^3` and solving the linear system, we derive:
- .. math::
- f'(x) \approx \frac{ {h_l}^2 f(x+h_r) - {h_r}^2 f(x-h_l)
- + ({h_r}^2-{h_l}^2 ) f(x) }{ {h_r} {h_l}^2 + {h_r}^2 {h_l} }
- .. note::
- We estimate the gradient of functions in complex domain
- :math:`g : \mathbb{C}^n \rightarrow \mathbb{C}` in the same way.
- The value of each partial derivative at the boundary points is computed differently. See edge_order below.
- Args:
- input (``Tensor``): the tensor that represents the values of the function
- Keyword args:
- spacing (``scalar``, ``list of scalar``, ``list of Tensor``, optional): :attr:`spacing` can be used to modify
- how the :attr:`input` tensor's indices relate to sample coordinates. If :attr:`spacing` is a scalar then
- the indices are multiplied by the scalar to produce the coordinates. For example, if :attr:`spacing=2` the
- indices (1, 2, 3) become coordinates (2, 4, 6). If :attr:`spacing` is a list of scalars then the corresponding
- indices are multiplied. For example, if :attr:`spacing=(2, -1, 3)` the indices (1, 2, 3) become coordinates (2, -2, 9).
- Finally, if :attr:`spacing` is a list of one-dimensional tensors then each tensor specifies the coordinates for
- the corresponding dimension. For example, if the indices are (1, 2, 3) and the tensors are (t0, t1, t2), then
- the coordinates are (t0[1], t1[2], t2[3])
- dim (``int``, ``list of int``, optional): the dimension or dimensions to approximate the gradient over. By default
- the partial gradient in every dimension is computed. Note that when :attr:`dim` is specified the elements of
- the :attr:`spacing` argument must correspond with the specified dims."
- edge_order (``int``, optional): 1 or 2, for `first-order
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ or
- `second-order <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_
- estimation of the boundary ("edge") values, respectively. Note that when :attr:`edge_order` is specified, each
- dimension size of :attr:`input` should be at least edge_order+1
- Examples::
- >>> # Estimates the gradient of f(x)=x^2 at points [-2, -1, 2, 4]
- >>> coordinates = (torch.tensor([-2., -1., 1., 4.]),)
- >>> values = torch.tensor([4., 1., 1., 16.], )
- >>> torch.gradient(values, spacing = coordinates)
- (tensor([-3., -2., 2., 5.]),)
- >>> # Estimates the gradient of the R^2 -> R function whose samples are
- >>> # described by the tensor t. Implicit coordinates are [0, 1] for the outermost
- >>> # dimension and [0, 1, 2, 3] for the innermost dimension, and function estimates
- >>> # partial derivative for both dimensions.
- >>> t = torch.tensor([[1, 2, 4, 8], [10, 20, 40, 80]])
- >>> torch.gradient(t)
- (tensor([[ 9., 18., 36., 72.],
- [ 9., 18., 36., 72.]]),
- tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]))
- >>> # A scalar value for spacing modifies the relationship between tensor indices
- >>> # and input coordinates by multiplying the indices to find the
- >>> # coordinates. For example, below the indices of the innermost
- >>> # 0, 1, 2, 3 translate to coordinates of [0, 2, 4, 6], and the indices of
- >>> # the outermost dimension 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = 2.0) # dim = None (implicitly [0, 1])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.5000, 0.7500, 1.5000, 2.0000],
- [ 5.0000, 7.5000, 15.0000, 20.0000]]))
- >>> # doubling the spacing between samples halves the estimated partial gradients.
- >>>
- >>> # Estimates only the partial derivative for dimension 1
- >>> torch.gradient(t, dim = 1) # spacing = None (implicitly 1.)
- (tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]),)
- >>> # When spacing is a list of scalars, the relationship between the tensor
- >>> # indices and input coordinates changes based on dimension.
- >>> # For example, below, the indices of the innermost dimension 0, 1, 2, 3 translate
- >>> # to coordinates of [0, 3, 6, 9], and the indices of the outermost dimension
- >>> # 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = [3., 2.])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- >>> # The following example is a replication of the previous one with explicit
- >>> # coordinates.
- >>> coords = (torch.tensor([0, 2]), torch.tensor([0, 3, 6, 9]))
- >>> torch.gradient(t, spacing = coords)
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- """
- @overload
- def gradient(
- input: Tensor,
- *,
- spacing: tuple[Tensor, ...] | list[Tensor] | None,
- dim: _size,
- edge_order: _int = 1,
- ) -> tuple[Tensor, ...]:
- r"""
- gradient(input, *, spacing=1, dim=None, edge_order=1) -> List of Tensors
- Estimates the gradient of a function :math:`g : \mathbb{R}^n \rightarrow \mathbb{R}` in
- one or more dimensions using the `second-order accurate central differences method
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ and
- either first or second order estimates at the boundaries.
- The gradient of :math:`g` is estimated using samples. By default, when :attr:`spacing` is not
- specified, the samples are entirely described by :attr:`input`, and the mapping of input coordinates
- to an output is the same as the tensor's mapping of indices to values. For example, for a three-dimensional
- :attr:`input` the function described is :math:`g : \mathbb{R}^3 \rightarrow \mathbb{R}`, and
- :math:`g(1, 2, 3)\ == input[1, 2, 3]`.
- When :attr:`spacing` is specified, it modifies the relationship between :attr:`input` and input coordinates.
- This is detailed in the "Keyword Arguments" section below.
- The gradient is estimated by estimating each partial derivative of :math:`g` independently. This estimation is
- accurate if :math:`g` is in :math:`C^3` (it has at least 3 continuous derivatives), and the estimation can be
- improved by providing closer samples. Mathematically, the value at each interior point of a partial derivative
- is estimated using `Taylor's theorem with remainder <https://en.wikipedia.org/wiki/Taylor%27s_theorem>`_.
- Letting :math:`x` be an interior point with :math:`x-h_l` and :math:`x+h_r` be points neighboring
- it to the left and right respectively, :math:`f(x+h_r)` and :math:`f(x-h_l)` can be estimated using:
- .. math::
- \begin{aligned}
- f(x+h_r) = f(x) + h_r f'(x) + {h_r}^2 \frac{f''(x)}{2} + {h_r}^3 \frac{f'''(\xi_1)}{6}, \xi_1 \in (x, x+h_r) \\
- f(x-h_l) = f(x) - h_l f'(x) + {h_l}^2 \frac{f''(x)}{2} - {h_l}^3 \frac{f'''(\xi_2)}{6}, \xi_2 \in (x, x-h_l) \\
- \end{aligned}
- Using the fact that :math:`f \in C^3` and solving the linear system, we derive:
- .. math::
- f'(x) \approx \frac{ {h_l}^2 f(x+h_r) - {h_r}^2 f(x-h_l)
- + ({h_r}^2-{h_l}^2 ) f(x) }{ {h_r} {h_l}^2 + {h_r}^2 {h_l} }
- .. note::
- We estimate the gradient of functions in complex domain
- :math:`g : \mathbb{C}^n \rightarrow \mathbb{C}` in the same way.
- The value of each partial derivative at the boundary points is computed differently. See edge_order below.
- Args:
- input (``Tensor``): the tensor that represents the values of the function
- Keyword args:
- spacing (``scalar``, ``list of scalar``, ``list of Tensor``, optional): :attr:`spacing` can be used to modify
- how the :attr:`input` tensor's indices relate to sample coordinates. If :attr:`spacing` is a scalar then
- the indices are multiplied by the scalar to produce the coordinates. For example, if :attr:`spacing=2` the
- indices (1, 2, 3) become coordinates (2, 4, 6). If :attr:`spacing` is a list of scalars then the corresponding
- indices are multiplied. For example, if :attr:`spacing=(2, -1, 3)` the indices (1, 2, 3) become coordinates (2, -2, 9).
- Finally, if :attr:`spacing` is a list of one-dimensional tensors then each tensor specifies the coordinates for
- the corresponding dimension. For example, if the indices are (1, 2, 3) and the tensors are (t0, t1, t2), then
- the coordinates are (t0[1], t1[2], t2[3])
- dim (``int``, ``list of int``, optional): the dimension or dimensions to approximate the gradient over. By default
- the partial gradient in every dimension is computed. Note that when :attr:`dim` is specified the elements of
- the :attr:`spacing` argument must correspond with the specified dims."
- edge_order (``int``, optional): 1 or 2, for `first-order
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ or
- `second-order <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_
- estimation of the boundary ("edge") values, respectively. Note that when :attr:`edge_order` is specified, each
- dimension size of :attr:`input` should be at least edge_order+1
- Examples::
- >>> # Estimates the gradient of f(x)=x^2 at points [-2, -1, 2, 4]
- >>> coordinates = (torch.tensor([-2., -1., 1., 4.]),)
- >>> values = torch.tensor([4., 1., 1., 16.], )
- >>> torch.gradient(values, spacing = coordinates)
- (tensor([-3., -2., 2., 5.]),)
- >>> # Estimates the gradient of the R^2 -> R function whose samples are
- >>> # described by the tensor t. Implicit coordinates are [0, 1] for the outermost
- >>> # dimension and [0, 1, 2, 3] for the innermost dimension, and function estimates
- >>> # partial derivative for both dimensions.
- >>> t = torch.tensor([[1, 2, 4, 8], [10, 20, 40, 80]])
- >>> torch.gradient(t)
- (tensor([[ 9., 18., 36., 72.],
- [ 9., 18., 36., 72.]]),
- tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]))
- >>> # A scalar value for spacing modifies the relationship between tensor indices
- >>> # and input coordinates by multiplying the indices to find the
- >>> # coordinates. For example, below the indices of the innermost
- >>> # 0, 1, 2, 3 translate to coordinates of [0, 2, 4, 6], and the indices of
- >>> # the outermost dimension 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = 2.0) # dim = None (implicitly [0, 1])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.5000, 0.7500, 1.5000, 2.0000],
- [ 5.0000, 7.5000, 15.0000, 20.0000]]))
- >>> # doubling the spacing between samples halves the estimated partial gradients.
- >>>
- >>> # Estimates only the partial derivative for dimension 1
- >>> torch.gradient(t, dim = 1) # spacing = None (implicitly 1.)
- (tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]),)
- >>> # When spacing is a list of scalars, the relationship between the tensor
- >>> # indices and input coordinates changes based on dimension.
- >>> # For example, below, the indices of the innermost dimension 0, 1, 2, 3 translate
- >>> # to coordinates of [0, 3, 6, 9], and the indices of the outermost dimension
- >>> # 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = [3., 2.])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- >>> # The following example is a replication of the previous one with explicit
- >>> # coordinates.
- >>> coords = (torch.tensor([0, 2]), torch.tensor([0, 3, 6, 9]))
- >>> torch.gradient(t, spacing = coords)
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- """
- @overload
- def gradient(
- input: Tensor,
- *,
- dim: _size,
- edge_order: _int = 1,
- ) -> tuple[Tensor, ...]:
- r"""
- gradient(input, *, spacing=1, dim=None, edge_order=1) -> List of Tensors
- Estimates the gradient of a function :math:`g : \mathbb{R}^n \rightarrow \mathbb{R}` in
- one or more dimensions using the `second-order accurate central differences method
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ and
- either first or second order estimates at the boundaries.
- The gradient of :math:`g` is estimated using samples. By default, when :attr:`spacing` is not
- specified, the samples are entirely described by :attr:`input`, and the mapping of input coordinates
- to an output is the same as the tensor's mapping of indices to values. For example, for a three-dimensional
- :attr:`input` the function described is :math:`g : \mathbb{R}^3 \rightarrow \mathbb{R}`, and
- :math:`g(1, 2, 3)\ == input[1, 2, 3]`.
- When :attr:`spacing` is specified, it modifies the relationship between :attr:`input` and input coordinates.
- This is detailed in the "Keyword Arguments" section below.
- The gradient is estimated by estimating each partial derivative of :math:`g` independently. This estimation is
- accurate if :math:`g` is in :math:`C^3` (it has at least 3 continuous derivatives), and the estimation can be
- improved by providing closer samples. Mathematically, the value at each interior point of a partial derivative
- is estimated using `Taylor's theorem with remainder <https://en.wikipedia.org/wiki/Taylor%27s_theorem>`_.
- Letting :math:`x` be an interior point with :math:`x-h_l` and :math:`x+h_r` be points neighboring
- it to the left and right respectively, :math:`f(x+h_r)` and :math:`f(x-h_l)` can be estimated using:
- .. math::
- \begin{aligned}
- f(x+h_r) = f(x) + h_r f'(x) + {h_r}^2 \frac{f''(x)}{2} + {h_r}^3 \frac{f'''(\xi_1)}{6}, \xi_1 \in (x, x+h_r) \\
- f(x-h_l) = f(x) - h_l f'(x) + {h_l}^2 \frac{f''(x)}{2} - {h_l}^3 \frac{f'''(\xi_2)}{6}, \xi_2 \in (x, x-h_l) \\
- \end{aligned}
- Using the fact that :math:`f \in C^3` and solving the linear system, we derive:
- .. math::
- f'(x) \approx \frac{ {h_l}^2 f(x+h_r) - {h_r}^2 f(x-h_l)
- + ({h_r}^2-{h_l}^2 ) f(x) }{ {h_r} {h_l}^2 + {h_r}^2 {h_l} }
- .. note::
- We estimate the gradient of functions in complex domain
- :math:`g : \mathbb{C}^n \rightarrow \mathbb{C}` in the same way.
- The value of each partial derivative at the boundary points is computed differently. See edge_order below.
- Args:
- input (``Tensor``): the tensor that represents the values of the function
- Keyword args:
- spacing (``scalar``, ``list of scalar``, ``list of Tensor``, optional): :attr:`spacing` can be used to modify
- how the :attr:`input` tensor's indices relate to sample coordinates. If :attr:`spacing` is a scalar then
- the indices are multiplied by the scalar to produce the coordinates. For example, if :attr:`spacing=2` the
- indices (1, 2, 3) become coordinates (2, 4, 6). If :attr:`spacing` is a list of scalars then the corresponding
- indices are multiplied. For example, if :attr:`spacing=(2, -1, 3)` the indices (1, 2, 3) become coordinates (2, -2, 9).
- Finally, if :attr:`spacing` is a list of one-dimensional tensors then each tensor specifies the coordinates for
- the corresponding dimension. For example, if the indices are (1, 2, 3) and the tensors are (t0, t1, t2), then
- the coordinates are (t0[1], t1[2], t2[3])
- dim (``int``, ``list of int``, optional): the dimension or dimensions to approximate the gradient over. By default
- the partial gradient in every dimension is computed. Note that when :attr:`dim` is specified the elements of
- the :attr:`spacing` argument must correspond with the specified dims."
- edge_order (``int``, optional): 1 or 2, for `first-order
- <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_ or
- `second-order <https://www.ams.org/journals/mcom/1988-51-184/S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_
- estimation of the boundary ("edge") values, respectively. Note that when :attr:`edge_order` is specified, each
- dimension size of :attr:`input` should be at least edge_order+1
- Examples::
- >>> # Estimates the gradient of f(x)=x^2 at points [-2, -1, 2, 4]
- >>> coordinates = (torch.tensor([-2., -1., 1., 4.]),)
- >>> values = torch.tensor([4., 1., 1., 16.], )
- >>> torch.gradient(values, spacing = coordinates)
- (tensor([-3., -2., 2., 5.]),)
- >>> # Estimates the gradient of the R^2 -> R function whose samples are
- >>> # described by the tensor t. Implicit coordinates are [0, 1] for the outermost
- >>> # dimension and [0, 1, 2, 3] for the innermost dimension, and function estimates
- >>> # partial derivative for both dimensions.
- >>> t = torch.tensor([[1, 2, 4, 8], [10, 20, 40, 80]])
- >>> torch.gradient(t)
- (tensor([[ 9., 18., 36., 72.],
- [ 9., 18., 36., 72.]]),
- tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]))
- >>> # A scalar value for spacing modifies the relationship between tensor indices
- >>> # and input coordinates by multiplying the indices to find the
- >>> # coordinates. For example, below the indices of the innermost
- >>> # 0, 1, 2, 3 translate to coordinates of [0, 2, 4, 6], and the indices of
- >>> # the outermost dimension 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = 2.0) # dim = None (implicitly [0, 1])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.5000, 0.7500, 1.5000, 2.0000],
- [ 5.0000, 7.5000, 15.0000, 20.0000]]))
- >>> # doubling the spacing between samples halves the estimated partial gradients.
- >>>
- >>> # Estimates only the partial derivative for dimension 1
- >>> torch.gradient(t, dim = 1) # spacing = None (implicitly 1.)
- (tensor([[ 1.0000, 1.5000, 3.0000, 4.0000],
- [10.0000, 15.0000, 30.0000, 40.0000]]),)
- >>> # When spacing is a list of scalars, the relationship between the tensor
- >>> # indices and input coordinates changes based on dimension.
- >>> # For example, below, the indices of the innermost dimension 0, 1, 2, 3 translate
- >>> # to coordinates of [0, 3, 6, 9], and the indices of the outermost dimension
- >>> # 0, 1 translate to coordinates of [0, 2].
- >>> torch.gradient(t, spacing = [3., 2.])
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- >>> # The following example is a replication of the previous one with explicit
- >>> # coordinates.
- >>> coords = (torch.tensor([0, 2]), torch.tensor([0, 3, 6, 9]))
- >>> torch.gradient(t, spacing = coords)
- (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000],
- [ 4.5000, 9.0000, 18.0000, 36.0000]]),
- tensor([[ 0.3333, 0.5000, 1.0000, 1.3333],
- [ 3.3333, 5.0000, 10.0000, 13.3333]]))
- """
- @overload
- def greater(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- greater(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.gt`.
- """
- @overload
- def greater(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- greater(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.gt`.
- """
- @overload
- def greater_equal(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- greater_equal(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.ge`.
- """
- @overload
- def greater_equal(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- greater_equal(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.ge`.
- """
- def grid_sampler(
- input: Tensor,
- grid: Tensor,
- interpolation_mode: _int,
- padding_mode: _int,
- align_corners: _bool,
- ) -> Tensor: ...
- def grid_sampler_2d(
- input: Tensor,
- grid: Tensor,
- interpolation_mode: _int,
- padding_mode: _int,
- align_corners: _bool,
- ) -> Tensor: ...
- def grid_sampler_3d(
- input: Tensor,
- grid: Tensor,
- interpolation_mode: _int,
- padding_mode: _int,
- align_corners: _bool,
- ) -> Tensor: ...
- def group_norm(
- input: Tensor,
- num_groups: _int,
- weight: Tensor | None = None,
- bias: Tensor | None = None,
- eps: _float = 1e-05,
- cudnn_enabled: _bool = True,
- ) -> Tensor: ...
- @overload
- def gru(
- data: Tensor,
- batch_sizes: Tensor,
- hx: Tensor,
- params: tuple[Tensor, ...] | list[Tensor] | None,
- has_biases: _bool,
- num_layers: _int,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- @overload
- def gru(
- input: Tensor,
- hx: Tensor,
- params: tuple[Tensor, ...] | list[Tensor] | None,
- has_biases: _bool,
- num_layers: _int,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- batch_first: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- def gru_cell(
- input: Tensor,
- hx: Tensor,
- w_ih: Tensor,
- w_hh: Tensor,
- b_ih: Tensor | None = None,
- b_hh: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def gt(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- gt(input, other, *, out=None) -> Tensor
- Computes :math:`\text{input} > \text{other}` element-wise.
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or float): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is greater than :attr:`other` and False elsewhere
- Example::
- >>> torch.gt(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[False, True], [False, False]])
- """
- @overload
- def gt(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- gt(input, other, *, out=None) -> Tensor
- Computes :math:`\text{input} > \text{other}` element-wise.
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or float): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is greater than :attr:`other` and False elsewhere
- Example::
- >>> torch.gt(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[False, True], [False, False]])
- """
- @overload
- def hamming_window(
- window_length: _int,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- hamming_window(window_length, *, dtype=None, layout=None, device=None, pin_memory=False, requires_grad=False) -> Tensor
- Hamming window function.
- .. math::
- w[n] = \alpha - \beta\ \cos \left( \frac{2 \pi n}{N - 1} \right),
- where :math:`N` is the full window size.
- The input :attr:`window_length` is a positive integer controlling the
- returned window size. :attr:`periodic` flag determines whether the returned
- window trims off the last duplicate value from the symmetric window and is
- ready to be used as a periodic window with functions like
- :meth:`torch.stft`. Therefore, if :attr:`periodic` is true, the :math:`N` in
- above formula is in fact :math:`\text{window\_length} + 1`. Also, we always have
- ``torch.hamming_window(L, periodic=True)`` equal to
- ``torch.hamming_window(L + 1, periodic=False)[:-1])``.
- .. note::
- If :attr:`window_length` :math:`=1`, the returned window contains a single value 1.
- .. note::
- This is a generalized version of :meth:`torch.hann_window`.
- Arguments:
- window_length (int): the size of returned window
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, *, dtype=None, layout=None, device=None, \
- pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, float alpha, *, dtype=None, layout=None, device=None, \
- pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic and alpha specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- alpha (float): The coefficient :math:`\alpha` in the equation above
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, float alpha, float beta, *, dtype=None, layout=None, \
- device=None, pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic, alpha and beta specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- alpha (float): The coefficient :math:`\alpha` in the equation above
- beta (float): The coefficient :math:`\beta` in the equation above
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- """
- @overload
- def hamming_window(
- window_length: _int,
- periodic: _bool,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- hamming_window(window_length, *, dtype=None, layout=None, device=None, pin_memory=False, requires_grad=False) -> Tensor
- Hamming window function.
- .. math::
- w[n] = \alpha - \beta\ \cos \left( \frac{2 \pi n}{N - 1} \right),
- where :math:`N` is the full window size.
- The input :attr:`window_length` is a positive integer controlling the
- returned window size. :attr:`periodic` flag determines whether the returned
- window trims off the last duplicate value from the symmetric window and is
- ready to be used as a periodic window with functions like
- :meth:`torch.stft`. Therefore, if :attr:`periodic` is true, the :math:`N` in
- above formula is in fact :math:`\text{window\_length} + 1`. Also, we always have
- ``torch.hamming_window(L, periodic=True)`` equal to
- ``torch.hamming_window(L + 1, periodic=False)[:-1])``.
- .. note::
- If :attr:`window_length` :math:`=1`, the returned window contains a single value 1.
- .. note::
- This is a generalized version of :meth:`torch.hann_window`.
- Arguments:
- window_length (int): the size of returned window
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, *, dtype=None, layout=None, device=None, \
- pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, float alpha, *, dtype=None, layout=None, device=None, \
- pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic and alpha specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- alpha (float): The coefficient :math:`\alpha` in the equation above
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, float alpha, float beta, *, dtype=None, layout=None, \
- device=None, pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic, alpha and beta specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- alpha (float): The coefficient :math:`\alpha` in the equation above
- beta (float): The coefficient :math:`\beta` in the equation above
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- """
- @overload
- def hamming_window(
- window_length: _int,
- periodic: _bool,
- alpha: _float,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- hamming_window(window_length, *, dtype=None, layout=None, device=None, pin_memory=False, requires_grad=False) -> Tensor
- Hamming window function.
- .. math::
- w[n] = \alpha - \beta\ \cos \left( \frac{2 \pi n}{N - 1} \right),
- where :math:`N` is the full window size.
- The input :attr:`window_length` is a positive integer controlling the
- returned window size. :attr:`periodic` flag determines whether the returned
- window trims off the last duplicate value from the symmetric window and is
- ready to be used as a periodic window with functions like
- :meth:`torch.stft`. Therefore, if :attr:`periodic` is true, the :math:`N` in
- above formula is in fact :math:`\text{window\_length} + 1`. Also, we always have
- ``torch.hamming_window(L, periodic=True)`` equal to
- ``torch.hamming_window(L + 1, periodic=False)[:-1])``.
- .. note::
- If :attr:`window_length` :math:`=1`, the returned window contains a single value 1.
- .. note::
- This is a generalized version of :meth:`torch.hann_window`.
- Arguments:
- window_length (int): the size of returned window
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, *, dtype=None, layout=None, device=None, \
- pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, float alpha, *, dtype=None, layout=None, device=None, \
- pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic and alpha specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- alpha (float): The coefficient :math:`\alpha` in the equation above
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, float alpha, float beta, *, dtype=None, layout=None, \
- device=None, pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic, alpha and beta specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- alpha (float): The coefficient :math:`\alpha` in the equation above
- beta (float): The coefficient :math:`\beta` in the equation above
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- """
- @overload
- def hamming_window(
- window_length: _int,
- periodic: _bool,
- alpha: _float,
- beta: _float,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- hamming_window(window_length, *, dtype=None, layout=None, device=None, pin_memory=False, requires_grad=False) -> Tensor
- Hamming window function.
- .. math::
- w[n] = \alpha - \beta\ \cos \left( \frac{2 \pi n}{N - 1} \right),
- where :math:`N` is the full window size.
- The input :attr:`window_length` is a positive integer controlling the
- returned window size. :attr:`periodic` flag determines whether the returned
- window trims off the last duplicate value from the symmetric window and is
- ready to be used as a periodic window with functions like
- :meth:`torch.stft`. Therefore, if :attr:`periodic` is true, the :math:`N` in
- above formula is in fact :math:`\text{window\_length} + 1`. Also, we always have
- ``torch.hamming_window(L, periodic=True)`` equal to
- ``torch.hamming_window(L + 1, periodic=False)[:-1])``.
- .. note::
- If :attr:`window_length` :math:`=1`, the returned window contains a single value 1.
- .. note::
- This is a generalized version of :meth:`torch.hann_window`.
- Arguments:
- window_length (int): the size of returned window
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, *, dtype=None, layout=None, device=None, \
- pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, float alpha, *, dtype=None, layout=None, device=None, \
- pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic and alpha specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- alpha (float): The coefficient :math:`\alpha` in the equation above
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- .. function:: hamming_window(window_length, periodic, float alpha, float beta, *, dtype=None, layout=None, \
- device=None, pin_memory=False, requires_grad=False) -> Tensor
- :noindex:
- Hamming window function with periodic, alpha and beta specified.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- alpha (float): The coefficient :math:`\alpha` in the equation above
- beta (float): The coefficient :math:`\beta` in the equation above
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window.
- """
- @overload
- def hann_window(
- window_length: _int,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- hann_window(window_length, periodic=True, *, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Hann window function.
- .. math::
- w[n] = \frac{1}{2}\ \left[1 - \cos \left( \frac{2 \pi n}{N - 1} \right)\right] =
- \sin^2 \left( \frac{\pi n}{N - 1} \right),
- where :math:`N` is the full window size.
- The input :attr:`window_length` is a positive integer controlling the
- returned window size. :attr:`periodic` flag determines whether the returned
- window trims off the last duplicate value from the symmetric window and is
- ready to be used as a periodic window with functions like
- :meth:`torch.stft`. Therefore, if :attr:`periodic` is true, the :math:`N` in
- above formula is in fact :math:`\text{window\_length} + 1`. Also, we always have
- ``torch.hann_window(L, periodic=True)`` equal to
- ``torch.hann_window(L + 1, periodic=False)[:-1])``.
- .. note::
- If :attr:`window_length` :math:`=1`, the returned window contains a single value 1.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool, optional): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window
- """
- @overload
- def hann_window(
- window_length: _int,
- periodic: _bool,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- hann_window(window_length, periodic=True, *, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Hann window function.
- .. math::
- w[n] = \frac{1}{2}\ \left[1 - \cos \left( \frac{2 \pi n}{N - 1} \right)\right] =
- \sin^2 \left( \frac{\pi n}{N - 1} \right),
- where :math:`N` is the full window size.
- The input :attr:`window_length` is a positive integer controlling the
- returned window size. :attr:`periodic` flag determines whether the returned
- window trims off the last duplicate value from the symmetric window and is
- ready to be used as a periodic window with functions like
- :meth:`torch.stft`. Therefore, if :attr:`periodic` is true, the :math:`N` in
- above formula is in fact :math:`\text{window\_length} + 1`. Also, we always have
- ``torch.hann_window(L, periodic=True)`` equal to
- ``torch.hann_window(L + 1, periodic=False)[:-1])``.
- .. note::
- If :attr:`window_length` :math:`=1`, the returned window contains a single value 1.
- Arguments:
- window_length (int): the size of returned window
- periodic (bool, optional): If True, returns a window to be used as periodic
- function. If False, return a symmetric window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). Only floating point types are supported.
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Returns:
- Tensor: A 1-D tensor of size :math:`(\text{window\_length},)` containing the window
- """
- def hardshrink(
- input: Tensor,
- lambd: Number | _complex = 0.5,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def hash_tensor(
- input: Tensor,
- dim: _int | _size = (),
- *,
- keepdim: _bool = False,
- mode: _int = 0,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- hash_tensor(input, *, mode=0) -> Tensor
- Returns a hash of all elements in the :attr:`input` tensor.
- Currently only mode=0 (reduction via xor) is supported. The output will always
- be of type ``torch.uint64``. The elements of ``input`` are upcasted to their
- 64 bit float / integer equivalent and bitcasted to ``torch.uint64`` before
- reduction via xor.
- Args:
- input (Tensor): the input tensor.
- Keyword Args:
- mode (int) : The hash to use. Default: 0 (xor_reduction)
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 1.1918, -1.1813, 0.3373]])
- >>> torch.hash_tensor(a)
- tensor(13822780554648485888, dtype=torch.uint64)
- .. function:: hash_tensor(input, dim, *, keepdim=False, mode=0) -> Tensor
- :noindex:
- Returns the hash of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim` given by mode. If :attr:`dim` is a list of dimensions,
- reduce over all of them.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword Args:
- mode (int) : The hash to use. Default: 0 (xor_reduction)
- Example::
- >>> a = torch.randn(2, 4)
- >>> a
- tensor([[ 0.1317, -0.5554, -1.4724, -1.1391],
- [ 0.0778, -0.6070, 0.6375, 0.1798]])
- >>> torch.hash_tensor(a, 1)
- tensor([9233691267014066176, 9255993250844508160], dtype=torch.uint64)
- """
- def heaviside(
- input: Tensor,
- values: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- heaviside(input, values, *, out=None) -> Tensor
- Computes the Heaviside step function for each element in :attr:`input`.
- The Heaviside step function is defined as:
- .. math::
- \text{{heaviside}}(input, values) = \begin{cases}
- 0, & \text{if input < 0}\\
- values, & \text{if input == 0}\\
- 1, & \text{if input > 0}
- \end{cases}
- Args:
- input (Tensor): the input tensor.
- values (Tensor): The values to use where :attr:`input` is zero.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- Example::
- >>> input = torch.tensor([-1.5, 0, 2.0])
- >>> values = torch.tensor([0.5])
- >>> torch.heaviside(input, values)
- tensor([0.0000, 0.5000, 1.0000])
- >>> values = torch.tensor([1.2, -2.0, 3.5])
- >>> torch.heaviside(input, values)
- tensor([0., -2., 1.])
- """
- def hinge_embedding_loss(
- input: Tensor,
- target: Tensor,
- margin: _float = 1.0,
- reduction: _int = 1,
- ) -> Tensor: ...
- def histc(
- input: Tensor,
- bins: _int = 100,
- min: Number | _complex = 0,
- max: Number | _complex = 0,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- histc(input, bins=100, min=0, max=0, *, out=None) -> Tensor
- Computes the histogram of a tensor.
- The elements are sorted into equal width bins between :attr:`min` and
- :attr:`max`. If :attr:`min` and :attr:`max` are both zero, the minimum and
- maximum values of the data are used.
- Elements lower than min and higher than max and ``NaN`` elements are ignored.
- Args:
- input (Tensor): the input tensor.
- bins (int): number of histogram bins
- min (Scalar): lower end of the range (inclusive)
- max (Scalar): upper end of the range (inclusive)
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- Tensor: Histogram represented as a tensor
- Example::
- >>> torch.histc(torch.tensor([1., 2, 1]), bins=4, min=0, max=3)
- tensor([ 0., 2., 1., 0.])
- """
- @overload
- def histogram(
- input: Tensor,
- bins: Tensor,
- *,
- weight: Tensor | None = None,
- density: _bool = False,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.histogram:
- r"""
- histogram(input, bins, *, range=None, weight=None, density=False, out=None) -> (Tensor, Tensor)
- Computes a histogram of the values in a tensor.
- :attr:`bins` can be an integer or a 1D tensor.
- If :attr:`bins` is an int, it specifies the number of equal-width bins.
- By default, the lower and upper range of the bins is determined by the
- minimum and maximum elements of the input tensor. The :attr:`range`
- argument can be provided to specify a range for the bins.
- If :attr:`bins` is a 1D tensor, it specifies the sequence of bin edges
- including the rightmost edge. It should contain at least 2 elements
- and its elements should be increasing.
- Args:
- input (Tensor): the input tensor.
- bins: int or 1D Tensor. If int, defines the number of equal-width bins. If tensor,
- defines the sequence of bin edges including the rightmost edge.
- Keyword args:
- range (tuple of float): Defines the range of the bins.
- weight (Tensor): If provided, weight should have the same shape as input. Each value in
- input contributes its associated weight towards its bin's result.
- density (bool): If False, the result will contain the count (or total weight) in each bin.
- If True, the result is the value of the probability density function over the bins,
- normalized such that the integral over the range of the bins is 1.
- out (Tensor, optional): the output tensor. (tuple, optional): The result tuple of two output tensors (hist, bin_edges).
- Returns:
- hist (Tensor): 1D Tensor containing the values of the histogram.
- bin_edges(Tensor): 1D Tensor containing the edges of the histogram bins.
- Example::
- >>> torch.histogram(torch.tensor([1., 2, 1]), bins=4, range=(0., 3.), weight=torch.tensor([1., 2., 4.]))
- (tensor([ 0., 5., 2., 0.]), tensor([0., 0.75, 1.5, 2.25, 3.]))
- >>> torch.histogram(torch.tensor([1., 2, 1]), bins=4, range=(0., 3.), weight=torch.tensor([1., 2., 4.]), density=True)
- (tensor([ 0., 0.9524, 0.3810, 0.]), tensor([0., 0.75, 1.5, 2.25, 3.]))
- """
- @overload
- def histogram(
- input: Tensor,
- bins: _int = 100,
- *,
- range: Sequence[_float] | None = None,
- weight: Tensor | None = None,
- density: _bool = False,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.histogram:
- r"""
- histogram(input, bins, *, range=None, weight=None, density=False, out=None) -> (Tensor, Tensor)
- Computes a histogram of the values in a tensor.
- :attr:`bins` can be an integer or a 1D tensor.
- If :attr:`bins` is an int, it specifies the number of equal-width bins.
- By default, the lower and upper range of the bins is determined by the
- minimum and maximum elements of the input tensor. The :attr:`range`
- argument can be provided to specify a range for the bins.
- If :attr:`bins` is a 1D tensor, it specifies the sequence of bin edges
- including the rightmost edge. It should contain at least 2 elements
- and its elements should be increasing.
- Args:
- input (Tensor): the input tensor.
- bins: int or 1D Tensor. If int, defines the number of equal-width bins. If tensor,
- defines the sequence of bin edges including the rightmost edge.
- Keyword args:
- range (tuple of float): Defines the range of the bins.
- weight (Tensor): If provided, weight should have the same shape as input. Each value in
- input contributes its associated weight towards its bin's result.
- density (bool): If False, the result will contain the count (or total weight) in each bin.
- If True, the result is the value of the probability density function over the bins,
- normalized such that the integral over the range of the bins is 1.
- out (Tensor, optional): the output tensor. (tuple, optional): The result tuple of two output tensors (hist, bin_edges).
- Returns:
- hist (Tensor): 1D Tensor containing the values of the histogram.
- bin_edges(Tensor): 1D Tensor containing the edges of the histogram bins.
- Example::
- >>> torch.histogram(torch.tensor([1., 2, 1]), bins=4, range=(0., 3.), weight=torch.tensor([1., 2., 4.]))
- (tensor([ 0., 5., 2., 0.]), tensor([0., 0.75, 1.5, 2.25, 3.]))
- >>> torch.histogram(torch.tensor([1., 2, 1]), bins=4, range=(0., 3.), weight=torch.tensor([1., 2., 4.]), density=True)
- (tensor([ 0., 0.9524, 0.3810, 0.]), tensor([0., 0.75, 1.5, 2.25, 3.]))
- """
- @overload
- def histogramdd(
- input: Tensor,
- bins: _int,
- range: Sequence[_float] | None = None,
- weight: Tensor | None = None,
- density: _bool = False,
- ) -> torch.return_types.histogramdd:
- r"""
- histogramdd(input, bins, *, range=None, weight=None, density=False, out=None) -> (Tensor, Tensor[])
- Computes a multi-dimensional histogram of the values in a tensor.
- Interprets the elements of an input tensor whose innermost dimension has size N
- as a collection of N-dimensional points. Maps each of the points into a set of
- N-dimensional bins and returns the number of points (or total weight) in each bin.
- :attr:`input` must be a tensor with at least 2 dimensions.
- If input has shape (M, N), each of its M rows defines a point in N-dimensional space.
- If input has three or more dimensions, all but the last dimension are flattened.
- Each dimension is independently associated with its own strictly increasing sequence
- of bin edges. Bin edges may be specified explicitly by passing a sequence of 1D
- tensors. Alternatively, bin edges may be constructed automatically by passing a
- sequence of integers specifying the number of equal-width bins in each dimension.
- For each N-dimensional point in input:
- - Each of its coordinates is binned independently among the bin edges
- corresponding to its dimension
- - Binning results are combined to identify the N-dimensional bin (if any)
- into which the point falls
- - If the point falls into a bin, the bin's count (or total weight) is incremented
- - Points which do not fall into any bin do not contribute to the output
- :attr:`bins` can be a sequence of N 1D tensors, a sequence of N ints, or a single int.
- If :attr:`bins` is a sequence of N 1D tensors, it explicitly specifies the N sequences
- of bin edges. Each 1D tensor should contain a strictly increasing sequence with at
- least one element. A sequence of K bin edges defines K-1 bins, explicitly specifying
- the left and right edges of all bins. Every bin is inclusive of its left edge. Only
- the rightmost bin is inclusive of its right edge.
- If :attr:`bins` is a sequence of N ints, it specifies the number of equal-width bins
- in each dimension. By default, the leftmost and rightmost bin edges in each dimension
- are determined by the minimum and maximum elements of the input tensor in the
- corresponding dimension. The :attr:`range` argument can be provided to manually
- specify the leftmost and rightmost bin edges in each dimension.
- If :attr:`bins` is an int, it specifies the number of equal-width bins for all dimensions.
- .. note::
- See also :func:`torch.histogram`, which specifically computes 1D histograms.
- While :func:`torch.histogramdd` infers the dimensionality of its bins and
- binned values from the shape of :attr:`input`, :func:`torch.histogram`
- accepts and flattens :attr:`input` of any shape.
- Args:
- input (Tensor): the input tensor.
- bins: Tensor[], int[], or int.
- If Tensor[], defines the sequences of bin edges.
- If int[], defines the number of equal-width bins in each dimension.
- If int, defines the number of equal-width bins for all dimensions.
- Keyword args:
- range (sequence of float): Defines the leftmost and rightmost bin edges
- in each dimension.
- weight (Tensor): By default, each value in the input has weight 1. If a weight
- tensor is passed, each N-dimensional coordinate in input
- contributes its associated weight towards its bin's result.
- The weight tensor should have the same shape as the :attr:`input`
- tensor excluding its innermost dimension N.
- density (bool): If False (default), the result will contain the count (or total weight)
- in each bin. If True, each count (weight) is divided by the total count
- (total weight), then divided by the volume of its associated bin.
- Returns:
- hist (Tensor): N-dimensional Tensor containing the values of the histogram.
- bin_edges(Tensor[]): sequence of N 1D Tensors containing the bin edges.
- Example::
- >>> torch.histogramdd(torch.tensor([[0., 1.], [1., 0.], [2., 0.], [2., 2.]]), bins=[3, 3],
- ... weight=torch.tensor([1., 2., 4., 8.]))
- torch.return_types.histogramdd(
- hist=tensor([[0., 1., 0.],
- [2., 0., 0.],
- [4., 0., 8.]]),
- bin_edges=(tensor([0.0000, 0.6667, 1.3333, 2.0000]),
- tensor([0.0000, 0.6667, 1.3333, 2.0000])))
- >>> torch.histogramdd(torch.tensor([[0., 0.], [1., 1.], [2., 2.]]), bins=[2, 2],
- ... range=[0., 1., 0., 1.], density=True)
- torch.return_types.histogramdd(
- hist=tensor([[2., 0.],
- [0., 2.]]),
- bin_edges=(tensor([0.0000, 0.5000, 1.0000]),
- tensor([0.0000, 0.5000, 1.0000])))
- """
- @overload
- def histogramdd(
- input: Tensor,
- bins: _size,
- range: Sequence[_float] | None = None,
- weight: Tensor | None = None,
- density: _bool = False,
- ) -> torch.return_types.histogramdd:
- r"""
- histogramdd(input, bins, *, range=None, weight=None, density=False, out=None) -> (Tensor, Tensor[])
- Computes a multi-dimensional histogram of the values in a tensor.
- Interprets the elements of an input tensor whose innermost dimension has size N
- as a collection of N-dimensional points. Maps each of the points into a set of
- N-dimensional bins and returns the number of points (or total weight) in each bin.
- :attr:`input` must be a tensor with at least 2 dimensions.
- If input has shape (M, N), each of its M rows defines a point in N-dimensional space.
- If input has three or more dimensions, all but the last dimension are flattened.
- Each dimension is independently associated with its own strictly increasing sequence
- of bin edges. Bin edges may be specified explicitly by passing a sequence of 1D
- tensors. Alternatively, bin edges may be constructed automatically by passing a
- sequence of integers specifying the number of equal-width bins in each dimension.
- For each N-dimensional point in input:
- - Each of its coordinates is binned independently among the bin edges
- corresponding to its dimension
- - Binning results are combined to identify the N-dimensional bin (if any)
- into which the point falls
- - If the point falls into a bin, the bin's count (or total weight) is incremented
- - Points which do not fall into any bin do not contribute to the output
- :attr:`bins` can be a sequence of N 1D tensors, a sequence of N ints, or a single int.
- If :attr:`bins` is a sequence of N 1D tensors, it explicitly specifies the N sequences
- of bin edges. Each 1D tensor should contain a strictly increasing sequence with at
- least one element. A sequence of K bin edges defines K-1 bins, explicitly specifying
- the left and right edges of all bins. Every bin is inclusive of its left edge. Only
- the rightmost bin is inclusive of its right edge.
- If :attr:`bins` is a sequence of N ints, it specifies the number of equal-width bins
- in each dimension. By default, the leftmost and rightmost bin edges in each dimension
- are determined by the minimum and maximum elements of the input tensor in the
- corresponding dimension. The :attr:`range` argument can be provided to manually
- specify the leftmost and rightmost bin edges in each dimension.
- If :attr:`bins` is an int, it specifies the number of equal-width bins for all dimensions.
- .. note::
- See also :func:`torch.histogram`, which specifically computes 1D histograms.
- While :func:`torch.histogramdd` infers the dimensionality of its bins and
- binned values from the shape of :attr:`input`, :func:`torch.histogram`
- accepts and flattens :attr:`input` of any shape.
- Args:
- input (Tensor): the input tensor.
- bins: Tensor[], int[], or int.
- If Tensor[], defines the sequences of bin edges.
- If int[], defines the number of equal-width bins in each dimension.
- If int, defines the number of equal-width bins for all dimensions.
- Keyword args:
- range (sequence of float): Defines the leftmost and rightmost bin edges
- in each dimension.
- weight (Tensor): By default, each value in the input has weight 1. If a weight
- tensor is passed, each N-dimensional coordinate in input
- contributes its associated weight towards its bin's result.
- The weight tensor should have the same shape as the :attr:`input`
- tensor excluding its innermost dimension N.
- density (bool): If False (default), the result will contain the count (or total weight)
- in each bin. If True, each count (weight) is divided by the total count
- (total weight), then divided by the volume of its associated bin.
- Returns:
- hist (Tensor): N-dimensional Tensor containing the values of the histogram.
- bin_edges(Tensor[]): sequence of N 1D Tensors containing the bin edges.
- Example::
- >>> torch.histogramdd(torch.tensor([[0., 1.], [1., 0.], [2., 0.], [2., 2.]]), bins=[3, 3],
- ... weight=torch.tensor([1., 2., 4., 8.]))
- torch.return_types.histogramdd(
- hist=tensor([[0., 1., 0.],
- [2., 0., 0.],
- [4., 0., 8.]]),
- bin_edges=(tensor([0.0000, 0.6667, 1.3333, 2.0000]),
- tensor([0.0000, 0.6667, 1.3333, 2.0000])))
- >>> torch.histogramdd(torch.tensor([[0., 0.], [1., 1.], [2., 2.]]), bins=[2, 2],
- ... range=[0., 1., 0., 1.], density=True)
- torch.return_types.histogramdd(
- hist=tensor([[2., 0.],
- [0., 2.]]),
- bin_edges=(tensor([0.0000, 0.5000, 1.0000]),
- tensor([0.0000, 0.5000, 1.0000])))
- """
- @overload
- def histogramdd(
- input: Tensor,
- bins: tuple[Tensor, ...] | list[Tensor] | None,
- range: Sequence[_float] | None = None,
- weight: Tensor | None = None,
- density: _bool = False,
- ) -> torch.return_types.histogramdd:
- r"""
- histogramdd(input, bins, *, range=None, weight=None, density=False, out=None) -> (Tensor, Tensor[])
- Computes a multi-dimensional histogram of the values in a tensor.
- Interprets the elements of an input tensor whose innermost dimension has size N
- as a collection of N-dimensional points. Maps each of the points into a set of
- N-dimensional bins and returns the number of points (or total weight) in each bin.
- :attr:`input` must be a tensor with at least 2 dimensions.
- If input has shape (M, N), each of its M rows defines a point in N-dimensional space.
- If input has three or more dimensions, all but the last dimension are flattened.
- Each dimension is independently associated with its own strictly increasing sequence
- of bin edges. Bin edges may be specified explicitly by passing a sequence of 1D
- tensors. Alternatively, bin edges may be constructed automatically by passing a
- sequence of integers specifying the number of equal-width bins in each dimension.
- For each N-dimensional point in input:
- - Each of its coordinates is binned independently among the bin edges
- corresponding to its dimension
- - Binning results are combined to identify the N-dimensional bin (if any)
- into which the point falls
- - If the point falls into a bin, the bin's count (or total weight) is incremented
- - Points which do not fall into any bin do not contribute to the output
- :attr:`bins` can be a sequence of N 1D tensors, a sequence of N ints, or a single int.
- If :attr:`bins` is a sequence of N 1D tensors, it explicitly specifies the N sequences
- of bin edges. Each 1D tensor should contain a strictly increasing sequence with at
- least one element. A sequence of K bin edges defines K-1 bins, explicitly specifying
- the left and right edges of all bins. Every bin is inclusive of its left edge. Only
- the rightmost bin is inclusive of its right edge.
- If :attr:`bins` is a sequence of N ints, it specifies the number of equal-width bins
- in each dimension. By default, the leftmost and rightmost bin edges in each dimension
- are determined by the minimum and maximum elements of the input tensor in the
- corresponding dimension. The :attr:`range` argument can be provided to manually
- specify the leftmost and rightmost bin edges in each dimension.
- If :attr:`bins` is an int, it specifies the number of equal-width bins for all dimensions.
- .. note::
- See also :func:`torch.histogram`, which specifically computes 1D histograms.
- While :func:`torch.histogramdd` infers the dimensionality of its bins and
- binned values from the shape of :attr:`input`, :func:`torch.histogram`
- accepts and flattens :attr:`input` of any shape.
- Args:
- input (Tensor): the input tensor.
- bins: Tensor[], int[], or int.
- If Tensor[], defines the sequences of bin edges.
- If int[], defines the number of equal-width bins in each dimension.
- If int, defines the number of equal-width bins for all dimensions.
- Keyword args:
- range (sequence of float): Defines the leftmost and rightmost bin edges
- in each dimension.
- weight (Tensor): By default, each value in the input has weight 1. If a weight
- tensor is passed, each N-dimensional coordinate in input
- contributes its associated weight towards its bin's result.
- The weight tensor should have the same shape as the :attr:`input`
- tensor excluding its innermost dimension N.
- density (bool): If False (default), the result will contain the count (or total weight)
- in each bin. If True, each count (weight) is divided by the total count
- (total weight), then divided by the volume of its associated bin.
- Returns:
- hist (Tensor): N-dimensional Tensor containing the values of the histogram.
- bin_edges(Tensor[]): sequence of N 1D Tensors containing the bin edges.
- Example::
- >>> torch.histogramdd(torch.tensor([[0., 1.], [1., 0.], [2., 0.], [2., 2.]]), bins=[3, 3],
- ... weight=torch.tensor([1., 2., 4., 8.]))
- torch.return_types.histogramdd(
- hist=tensor([[0., 1., 0.],
- [2., 0., 0.],
- [4., 0., 8.]]),
- bin_edges=(tensor([0.0000, 0.6667, 1.3333, 2.0000]),
- tensor([0.0000, 0.6667, 1.3333, 2.0000])))
- >>> torch.histogramdd(torch.tensor([[0., 0.], [1., 1.], [2., 2.]]), bins=[2, 2],
- ... range=[0., 1., 0., 1.], density=True)
- torch.return_types.histogramdd(
- hist=tensor([[2., 0.],
- [0., 2.]]),
- bin_edges=(tensor([0.0000, 0.5000, 1.0000]),
- tensor([0.0000, 0.5000, 1.0000])))
- """
- def hsmm(input: Tensor, mat2: Tensor) -> Tensor: ...
- @overload
- def hsplit(input: Tensor, sections: _int) -> tuple[Tensor, ...]:
- r"""
- hsplit(input, indices_or_sections) -> List of Tensors
- Splits :attr:`input`, a tensor with one or more dimensions, into multiple tensors
- horizontally according to :attr:`indices_or_sections`. Each split is a view of
- :attr:`input`.
- If :attr:`input` is one dimensional this is equivalent to calling
- torch.tensor_split(input, indices_or_sections, dim=0) (the split dimension is
- zero), and if :attr:`input` has two or more dimensions it's equivalent to calling
- torch.tensor_split(input, indices_or_sections, dim=1) (the split dimension is 1),
- except that if :attr:`indices_or_sections` is an integer it must evenly divide
- the split dimension or a runtime error will be thrown.
- This function is based on NumPy's :func:`numpy.hsplit`.
- Args:
- input (Tensor): tensor to split.
- indices_or_sections (int or list or tuple of ints): See argument in :func:`torch.tensor_split`.
- Example::
- >>> t = torch.arange(16.0).reshape(4,4)
- >>> t
- tensor([[ 0., 1., 2., 3.],
- [ 4., 5., 6., 7.],
- [ 8., 9., 10., 11.],
- [12., 13., 14., 15.]])
- >>> torch.hsplit(t, 2)
- (tensor([[ 0., 1.],
- [ 4., 5.],
- [ 8., 9.],
- [12., 13.]]),
- tensor([[ 2., 3.],
- [ 6., 7.],
- [10., 11.],
- [14., 15.]]))
- >>> torch.hsplit(t, [3, 6])
- (tensor([[ 0., 1., 2.],
- [ 4., 5., 6.],
- [ 8., 9., 10.],
- [12., 13., 14.]]),
- tensor([[ 3.],
- [ 7.],
- [11.],
- [15.]]),
- tensor([], size=(4, 0)))
- """
- @overload
- def hsplit(input: Tensor, indices: _size) -> tuple[Tensor, ...]:
- r"""
- hsplit(input, indices_or_sections) -> List of Tensors
- Splits :attr:`input`, a tensor with one or more dimensions, into multiple tensors
- horizontally according to :attr:`indices_or_sections`. Each split is a view of
- :attr:`input`.
- If :attr:`input` is one dimensional this is equivalent to calling
- torch.tensor_split(input, indices_or_sections, dim=0) (the split dimension is
- zero), and if :attr:`input` has two or more dimensions it's equivalent to calling
- torch.tensor_split(input, indices_or_sections, dim=1) (the split dimension is 1),
- except that if :attr:`indices_or_sections` is an integer it must evenly divide
- the split dimension or a runtime error will be thrown.
- This function is based on NumPy's :func:`numpy.hsplit`.
- Args:
- input (Tensor): tensor to split.
- indices_or_sections (int or list or tuple of ints): See argument in :func:`torch.tensor_split`.
- Example::
- >>> t = torch.arange(16.0).reshape(4,4)
- >>> t
- tensor([[ 0., 1., 2., 3.],
- [ 4., 5., 6., 7.],
- [ 8., 9., 10., 11.],
- [12., 13., 14., 15.]])
- >>> torch.hsplit(t, 2)
- (tensor([[ 0., 1.],
- [ 4., 5.],
- [ 8., 9.],
- [12., 13.]]),
- tensor([[ 2., 3.],
- [ 6., 7.],
- [10., 11.],
- [14., 15.]]))
- >>> torch.hsplit(t, [3, 6])
- (tensor([[ 0., 1., 2.],
- [ 4., 5., 6.],
- [ 8., 9., 10.],
- [12., 13., 14.]]),
- tensor([[ 3.],
- [ 7.],
- [11.],
- [15.]]),
- tensor([], size=(4, 0)))
- """
- def hspmm(
- mat1: Tensor,
- mat2: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- hspmm(mat1, mat2, *, out=None) -> Tensor
- Performs a matrix multiplication of a :ref:`sparse COO matrix
- <sparse-coo-docs>` :attr:`mat1` and a strided matrix :attr:`mat2`. The
- result is a (1 + 1)-dimensional :ref:`hybrid COO matrix
- <sparse-hybrid-coo-docs>`.
- Args:
- mat1 (Tensor): the first sparse matrix to be matrix multiplied
- mat2 (Tensor): the second strided matrix to be matrix multiplied
- Keyword args:
- out (Tensor, optional): the output tensor.
- """
- def hstack(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- hstack(tensors, *, out=None) -> Tensor
- Stack tensors in sequence horizontally (column wise).
- This is equivalent to concatenation along the first axis for 1-D tensors, and along the second axis for all other tensors.
- Args:
- tensors (sequence of Tensors): sequence of tensors to concatenate
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([1, 2, 3])
- >>> b = torch.tensor([4, 5, 6])
- >>> torch.hstack((a,b))
- tensor([1, 2, 3, 4, 5, 6])
- >>> a = torch.tensor([[1],[2],[3]])
- >>> b = torch.tensor([[4],[5],[6]])
- >>> torch.hstack((a,b))
- tensor([[1, 4],
- [2, 5],
- [3, 6]])
- """
- def hypot(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- hypot(input, other, *, out=None) -> Tensor
- Given the legs of a right triangle, return its hypotenuse.
- .. math::
- \text{out}_{i} = \sqrt{\text{input}_{i}^{2} + \text{other}_{i}^{2}}
- The shapes of ``input`` and ``other`` must be
- :ref:`broadcastable <broadcasting-semantics>`.
- Args:
- input (Tensor): the first input tensor
- other (Tensor): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.hypot(torch.tensor([4.0]), torch.tensor([3.0, 4.0, 5.0]))
- tensor([5.0000, 5.6569, 6.4031])
- """
- def i0(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- i0(input, *, out=None) -> Tensor
- Alias for :func:`torch.special.i0`.
- """
- def i0_(input: Tensor) -> Tensor: ...
- def igamma(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- igamma(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.special.gammainc`.
- """
- def igammac(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- igammac(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.special.gammaincc`.
- """
- def imag(input: Tensor) -> Tensor:
- r"""
- imag(input) -> Tensor
- Returns a new tensor containing imaginary values of the :attr:`self` tensor.
- The returned tensor and :attr:`self` share the same underlying storage.
- .. warning::
- :func:`imag` is only supported for tensors with complex dtypes.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> x=torch.randn(4, dtype=torch.cfloat)
- >>> x
- tensor([(0.3100+0.3553j), (-0.5445-0.7896j), (-1.6492-0.0633j), (-0.0638-0.8119j)])
- >>> x.imag
- tensor([ 0.3553, -0.7896, -0.0633, -0.8119])
- """
- @overload
- def index_add(
- input: Tensor,
- dim: _int,
- index: Tensor,
- source: Tensor,
- *,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- index_add(input: Tensor, dim: int, index: Tensor, source: Tensor, *, alpha: Union[Number, _complex] = 1, out: Optional[Tensor]) -> Tensor # noqa: B950
- See :meth:`~Tensor.index_add_` for function description.
- """
- @overload
- def index_add(
- input: Tensor,
- dim: str | EllipsisType | None,
- index: Tensor,
- source: Tensor,
- *,
- alpha: Number | _complex = 1,
- ) -> Tensor:
- r"""
- index_add(input: Tensor, dim: int, index: Tensor, source: Tensor, *, alpha: Union[Number, _complex] = 1, out: Optional[Tensor]) -> Tensor # noqa: B950
- See :meth:`~Tensor.index_add_` for function description.
- """
- @overload
- def index_copy(
- input: Tensor,
- dim: _int,
- index: Tensor,
- source: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- index_copy(input: Tensor, dim: int, index: Tensor, source: Tensor, *, out: Optional[Tensor]) -> Tensor
- See :meth:`~Tensor.index_add_` for function description.
- """
- @overload
- def index_copy(
- input: Tensor,
- dim: str | EllipsisType | None,
- index: Tensor,
- source: Tensor,
- ) -> Tensor:
- r"""
- index_copy(input: Tensor, dim: int, index: Tensor, source: Tensor, *, out: Optional[Tensor]) -> Tensor
- See :meth:`~Tensor.index_add_` for function description.
- """
- @overload
- def index_fill(
- input: Tensor,
- dim: _int,
- index: Tensor,
- value: Tensor,
- ) -> Tensor: ...
- @overload
- def index_fill(
- input: Tensor,
- dim: str | EllipsisType | None,
- index: Tensor,
- value: Tensor,
- ) -> Tensor: ...
- @overload
- def index_fill(
- input: Tensor,
- dim: _int,
- index: Tensor,
- value: Number | _complex,
- ) -> Tensor: ...
- @overload
- def index_fill(
- input: Tensor,
- dim: str | EllipsisType | None,
- index: Tensor,
- value: Number | _complex,
- ) -> Tensor: ...
- def index_put(
- input: Tensor,
- indices: tuple[Tensor, ...] | list[Tensor] | None,
- values: Tensor,
- accumulate: _bool = False,
- ) -> Tensor: ...
- def index_put_(
- input: Tensor,
- indices: tuple[Tensor, ...] | list[Tensor] | None,
- values: Tensor,
- accumulate: _bool = False,
- ) -> Tensor: ...
- def index_reduce(
- input: Tensor,
- dim: _int,
- index: Tensor,
- source: Tensor,
- reduce: str,
- *,
- include_self: _bool = True,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- index_reduce(input: Tensor, dim: int, index: Tensor, source: Tensor, reduce: str, *, include_self: bool = True, out: Optional[Tensor]) -> Tensor # noqa: B950
- See :meth:`~Tensor.index_reduce_` for function description.
- """
- @overload
- def index_select(
- input: Tensor,
- dim: _int,
- index: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- index_select(input, dim, index, *, out=None) -> Tensor
- Returns a new tensor which indexes the :attr:`input` tensor along dimension
- :attr:`dim` using the entries in :attr:`index`.
- The returned tensor has the same number of dimensions as the original tensor
- (:attr:`input`). The :attr:`dim`\ th dimension has the same size as the length
- of :attr:`index`; other dimensions have the same size as in the original tensor.
- .. note:: The returned tensor does **not** use the same storage as the original
- tensor. If :attr:`out` has a different shape than expected, we
- silently change it to the correct shape, reallocating the underlying
- storage if necessary.
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension in which we index
- index (IntTensor or LongTensor): the 1-D tensor containing the indices to index
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> x = torch.randn(3, 4)
- >>> x
- tensor([[ 0.1427, 0.0231, -0.5414, -1.0009],
- [-0.4664, 0.2647, -0.1228, -1.1068],
- [-1.1734, -0.6571, 0.7230, -0.6004]])
- >>> indices = torch.tensor([0, 2])
- >>> torch.index_select(x, 0, indices)
- tensor([[ 0.1427, 0.0231, -0.5414, -1.0009],
- [-1.1734, -0.6571, 0.7230, -0.6004]])
- >>> torch.index_select(x, 1, indices)
- tensor([[ 0.1427, -0.5414],
- [-0.4664, -0.1228],
- [-1.1734, 0.7230]])
- """
- @overload
- def index_select(
- input: Tensor,
- dim: str | EllipsisType | None,
- index: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- index_select(input, dim, index, *, out=None) -> Tensor
- Returns a new tensor which indexes the :attr:`input` tensor along dimension
- :attr:`dim` using the entries in :attr:`index`.
- The returned tensor has the same number of dimensions as the original tensor
- (:attr:`input`). The :attr:`dim`\ th dimension has the same size as the length
- of :attr:`index`; other dimensions have the same size as in the original tensor.
- .. note:: The returned tensor does **not** use the same storage as the original
- tensor. If :attr:`out` has a different shape than expected, we
- silently change it to the correct shape, reallocating the underlying
- storage if necessary.
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension in which we index
- index (IntTensor or LongTensor): the 1-D tensor containing the indices to index
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> x = torch.randn(3, 4)
- >>> x
- tensor([[ 0.1427, 0.0231, -0.5414, -1.0009],
- [-0.4664, 0.2647, -0.1228, -1.1068],
- [-1.1734, -0.6571, 0.7230, -0.6004]])
- >>> indices = torch.tensor([0, 2])
- >>> torch.index_select(x, 0, indices)
- tensor([[ 0.1427, 0.0231, -0.5414, -1.0009],
- [-1.1734, -0.6571, 0.7230, -0.6004]])
- >>> torch.index_select(x, 1, indices)
- tensor([[ 0.1427, -0.5414],
- [-0.4664, -0.1228],
- [-1.1734, 0.7230]])
- """
- def indices_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.indices`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def init_num_threads() -> None: ...
- def inner(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- inner(input, other, *, out=None) -> Tensor
- Computes the dot product for 1D tensors. For higher dimensions, sums the product
- of elements from :attr:`input` and :attr:`other` along their last dimension.
- .. note::
- If either :attr:`input` or :attr:`other` is a scalar, the result is equivalent
- to `torch.mul(input, other)`.
- If both :attr:`input` and :attr:`other` are non-scalars, the size of their last
- dimension must match and the result is equivalent to `torch.tensordot(input,
- other, dims=([-1], [-1]))`
- Args:
- input (Tensor): First input tensor
- other (Tensor): Second input tensor
- Keyword args:
- out (Tensor, optional): Optional output tensor to write result into. The output
- shape is `input.shape[:-1] + other.shape[:-1]`.
- Example::
- # Dot product
- >>> torch.inner(torch.tensor([1, 2, 3]), torch.tensor([0, 2, 1]))
- tensor(7)
- # Multidimensional input tensors
- >>> a = torch.randn(2, 3)
- >>> a
- tensor([[0.8173, 1.0874, 1.1784],
- [0.3279, 0.1234, 2.7894]])
- >>> b = torch.randn(2, 4, 3)
- >>> b
- tensor([[[-0.4682, -0.7159, 0.1506],
- [ 0.4034, -0.3657, 1.0387],
- [ 0.9892, -0.6684, 0.1774],
- [ 0.9482, 1.3261, 0.3917]],
- [[ 0.4537, 0.7493, 1.1724],
- [ 0.2291, 0.5749, -0.2267],
- [-0.7920, 0.3607, -0.3701],
- [ 1.3666, -0.5850, -1.7242]]])
- >>> torch.inner(a, b)
- tensor([[[-0.9837, 1.1560, 0.2907, 2.6785],
- [ 2.5671, 0.5452, -0.6912, -1.5509]],
- [[ 0.1782, 2.9843, 0.7366, 1.5672],
- [ 3.5115, -0.4864, -1.2476, -4.4337]]])
- # Scalar input
- >>> torch.inner(a, torch.tensor(2))
- tensor([[1.6347, 2.1748, 2.3567],
- [0.6558, 0.2469, 5.5787]])
- """
- def instance_norm(
- input: Tensor,
- weight: Tensor | None,
- bias: Tensor | None,
- running_mean: Tensor | None,
- running_var: Tensor | None,
- use_input_stats: _bool,
- momentum: _float,
- eps: _float,
- cudnn_enabled: _bool,
- ) -> Tensor: ...
- def int_repr(input: Tensor) -> Tensor: ...
- def inverse(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- inverse(input, *, out=None) -> Tensor
- Alias for :func:`torch.linalg.inv`
- """
- def is_complex(input: Tensor) -> _bool:
- r"""
- is_complex(input: Tensor) -> bool
- Returns True if the data type of :attr:`input` is a complex data type i.e.,
- one of ``torch.complex64``, and ``torch.complex128``.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> torch.is_complex(torch.tensor([1, 2, 3], dtype=torch.complex64))
- True
- >>> torch.is_complex(torch.tensor([1, 2, 3], dtype=torch.complex128))
- True
- >>> torch.is_complex(torch.tensor([1, 2, 3], dtype=torch.int32))
- False
- >>> torch.is_complex(torch.tensor([1.0, 2.0, 3.0], dtype=torch.float16))
- False
- """
- def is_conj(input: Tensor) -> _bool:
- r"""
- is_conj(input) -> (bool)
- Returns True if the :attr:`input` is a conjugated tensor, i.e. its conjugate bit is set to `True`.
- Args:
- input (Tensor): the input tensor.
- """
- def is_distributed(input: Tensor) -> _bool: ...
- def is_floating_point(input: Tensor) -> _bool:
- r"""
- is_floating_point(input: Tensor) -> bool
- Returns True if the data type of :attr:`input` is a floating point data type i.e.,
- one of ``torch.float64``, ``torch.float32``, ``torch.float16``, and ``torch.bfloat16``.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> torch.is_floating_point(torch.tensor([1.0, 2.0, 3.0]))
- True
- >>> torch.is_floating_point(torch.tensor([1, 2, 3], dtype=torch.int32))
- False
- >>> torch.is_floating_point(torch.tensor([1.0, 2.0, 3.0], dtype=torch.float16))
- True
- >>> torch.is_floating_point(torch.tensor([1, 2, 3], dtype=torch.complex64))
- False
- """
- def is_grad_enabled() -> _bool:
- r"""
- is_grad_enabled() -> (bool)
- Returns True if grad mode is currently enabled.
- """
- def is_inference(input: Tensor) -> _bool:
- r"""
- is_inference(input) -> (bool)
- Returns True if :attr:`input` is an inference tensor.
- A non-view tensor is an inference tensor if and only if it was
- allocated during inference mode. A view tensor is an inference
- tensor if and only if the tensor it is a view of is an inference tensor.
- For details on inference mode please see
- `Inference Mode <https://pytorch.org/cppdocs/notes/inference_mode.html>`_.
- Args:
- input (Tensor): the input tensor.
- """
- def is_inference_mode_enabled() -> _bool:
- r"""
- is_inference_mode_enabled() -> (bool)
- Returns True if inference mode is currently enabled.
- """
- def is_neg(input: Tensor) -> _bool: ...
- def is_nonzero(input: Tensor) -> _bool:
- r"""
- is_nonzero(input) -> (bool)
- Returns True if the :attr:`input` is a single element tensor which is not equal to zero
- after type conversions.
- i.e. not equal to ``torch.tensor([0.])`` or ``torch.tensor([0])`` or
- ``torch.tensor([False])``.
- Throws a ``RuntimeError`` if ``torch.numel() != 1`` (even in case
- of sparse tensors).
- Args:
- input (Tensor): the input tensor.
- Examples::
- >>> torch.is_nonzero(torch.tensor([0.]))
- False
- >>> torch.is_nonzero(torch.tensor([1.5]))
- True
- >>> torch.is_nonzero(torch.tensor([False]))
- False
- >>> torch.is_nonzero(torch.tensor([3]))
- True
- >>> torch.is_nonzero(torch.tensor([1, 3, 5]))
- Traceback (most recent call last):
- ...
- RuntimeError: Boolean value of Tensor with more than one value is ambiguous
- >>> torch.is_nonzero(torch.tensor([]))
- Traceback (most recent call last):
- ...
- RuntimeError: Boolean value of Tensor with no values is ambiguous
- """
- def is_same_size(input: Tensor, other: Tensor) -> _bool: ...
- def is_signed(input: Tensor) -> _bool: ...
- def is_vulkan_available() -> _bool: ...
- def isclose(
- input: Tensor,
- other: Tensor,
- rtol: _float = 1e-05,
- atol: _float = 1e-08,
- equal_nan: _bool = False,
- ) -> Tensor:
- r"""
- isclose(input, other, rtol=1e-05, atol=1e-08, equal_nan=False) -> Tensor
- Returns a new tensor with boolean elements representing if each element of
- :attr:`input` is "close" to the corresponding element of :attr:`other`.
- Closeness is defined as:
- .. math::
- \lvert \text{input}_i - \text{other}_i \rvert \leq \texttt{rtol} \times \lvert \text{other}_i \rvert + \texttt{atol}
- where :attr:`input` and :attr:`other` are finite. Where :attr:`input`
- and/or :attr:`other` are nonfinite they are close if and only if
- they are equal, with NaNs being considered equal to each other when
- :attr:`equal_nan` is True.
- Args:
- input (Tensor): first tensor to compare
- other (Tensor): second tensor to compare
- rtol (float, optional): relative tolerance. Default: 1e-05
- atol (float, optional): absolute tolerance. Default: 1e-08
- equal_nan (bool, optional): if ``True``, then two ``NaN`` s will be considered equal. Default: ``False``
- Examples::
- >>> torch.isclose(torch.tensor((1., 2, 3)), torch.tensor((1 + 1e-10, 3, 4)))
- tensor([ True, False, False])
- >>> torch.isclose(torch.tensor((float('inf'), 4)), torch.tensor((float('inf'), 6)), rtol=.5)
- tensor([True, True])
- """
- def isfinite(input: Tensor) -> Tensor:
- r"""
- isfinite(input) -> Tensor
- Returns a new tensor with boolean elements representing if each element is `finite` or not.
- Real values are finite when they are not NaN, negative infinity, or infinity.
- Complex values are finite when both their real and imaginary parts are finite.
- Args:
- input (Tensor): the input tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is finite and False elsewhere
- Example::
- >>> torch.isfinite(torch.tensor([1, float('inf'), 2, float('-inf'), float('nan')]))
- tensor([True, False, True, False, False])
- """
- @overload
- def isin(
- elements: Tensor,
- test_elements: Tensor,
- *,
- assume_unique: _bool = False,
- invert: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- isin(elements, test_elements, *, assume_unique=False, invert=False) -> Tensor
- Tests if each element of :attr:`elements` is in :attr:`test_elements`. Returns
- a boolean tensor of the same shape as :attr:`elements` that is True for elements
- in :attr:`test_elements` and False otherwise.
- .. note::
- One of :attr:`elements` or :attr:`test_elements` can be a scalar, but not both.
- Args:
- elements (Tensor or Scalar): Input elements
- test_elements (Tensor or Scalar): Values against which to test for each input element
- assume_unique (bool, optional): If True, assumes both :attr:`elements` and
- :attr:`test_elements` contain unique elements, which can speed up the
- calculation. Default: False
- invert (bool, optional): If True, inverts the boolean return tensor, resulting in True
- values for elements *not* in :attr:`test_elements`. Default: False
- Returns:
- A boolean tensor of the same shape as :attr:`elements` that is True for elements in
- :attr:`test_elements` and False otherwise
- Example:
- >>> torch.isin(torch.tensor([[1, 2], [3, 4]]), torch.tensor([2, 3]))
- tensor([[False, True],
- [ True, False]])
- """
- @overload
- def isin(
- element: Number | _complex,
- test_elements: Tensor,
- *,
- assume_unique: _bool = False,
- invert: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- isin(elements, test_elements, *, assume_unique=False, invert=False) -> Tensor
- Tests if each element of :attr:`elements` is in :attr:`test_elements`. Returns
- a boolean tensor of the same shape as :attr:`elements` that is True for elements
- in :attr:`test_elements` and False otherwise.
- .. note::
- One of :attr:`elements` or :attr:`test_elements` can be a scalar, but not both.
- Args:
- elements (Tensor or Scalar): Input elements
- test_elements (Tensor or Scalar): Values against which to test for each input element
- assume_unique (bool, optional): If True, assumes both :attr:`elements` and
- :attr:`test_elements` contain unique elements, which can speed up the
- calculation. Default: False
- invert (bool, optional): If True, inverts the boolean return tensor, resulting in True
- values for elements *not* in :attr:`test_elements`. Default: False
- Returns:
- A boolean tensor of the same shape as :attr:`elements` that is True for elements in
- :attr:`test_elements` and False otherwise
- Example:
- >>> torch.isin(torch.tensor([[1, 2], [3, 4]]), torch.tensor([2, 3]))
- tensor([[False, True],
- [ True, False]])
- """
- @overload
- def isin(
- elements: Tensor,
- test_element: Number | _complex,
- *,
- assume_unique: _bool = False,
- invert: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- isin(elements, test_elements, *, assume_unique=False, invert=False) -> Tensor
- Tests if each element of :attr:`elements` is in :attr:`test_elements`. Returns
- a boolean tensor of the same shape as :attr:`elements` that is True for elements
- in :attr:`test_elements` and False otherwise.
- .. note::
- One of :attr:`elements` or :attr:`test_elements` can be a scalar, but not both.
- Args:
- elements (Tensor or Scalar): Input elements
- test_elements (Tensor or Scalar): Values against which to test for each input element
- assume_unique (bool, optional): If True, assumes both :attr:`elements` and
- :attr:`test_elements` contain unique elements, which can speed up the
- calculation. Default: False
- invert (bool, optional): If True, inverts the boolean return tensor, resulting in True
- values for elements *not* in :attr:`test_elements`. Default: False
- Returns:
- A boolean tensor of the same shape as :attr:`elements` that is True for elements in
- :attr:`test_elements` and False otherwise
- Example:
- >>> torch.isin(torch.tensor([[1, 2], [3, 4]]), torch.tensor([2, 3]))
- tensor([[False, True],
- [ True, False]])
- """
- def isinf(input: Tensor) -> Tensor:
- r"""
- isinf(input) -> Tensor
- Tests if each element of :attr:`input` is infinite
- (positive or negative infinity) or not.
- .. note::
- Complex values are infinite when their real or imaginary part is
- infinite.
- Args:
- input (Tensor): the input tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is infinite and False elsewhere
- Example::
- >>> torch.isinf(torch.tensor([1, float('inf'), 2, float('-inf'), float('nan')]))
- tensor([False, True, False, True, False])
- """
- def isnan(input: Tensor) -> Tensor:
- r"""
- isnan(input) -> Tensor
- Returns a new tensor with boolean elements representing if each element of :attr:`input`
- is NaN or not. Complex values are considered NaN when either their real
- and/or imaginary part is NaN.
- Arguments:
- input (Tensor): the input tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is NaN and False elsewhere
- Example::
- >>> torch.isnan(torch.tensor([1, float('nan'), 2]))
- tensor([False, True, False])
- """
- def isneginf(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- isneginf(input, *, out=None) -> Tensor
- Tests if each element of :attr:`input` is negative infinity or not.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([-float('inf'), float('inf'), 1.2])
- >>> torch.isneginf(a)
- tensor([ True, False, False])
- """
- def isposinf(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- isposinf(input, *, out=None) -> Tensor
- Tests if each element of :attr:`input` is positive infinity or not.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([-float('inf'), float('inf'), 1.2])
- >>> torch.isposinf(a)
- tensor([False, True, False])
- """
- def isreal(input: Tensor) -> Tensor:
- r"""
- isreal(input) -> Tensor
- Returns a new tensor with boolean elements representing if each element of :attr:`input` is real-valued or not.
- All real-valued types are considered real. Complex values are considered real when their imaginary part is 0.
- Arguments:
- input (Tensor): the input tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is real and False elsewhere
- Example::
- >>> torch.isreal(torch.tensor([1, 1+1j, 2+0j]))
- tensor([True, False, True])
- """
- def istft(
- input: Tensor,
- n_fft: _int,
- hop_length: _int | None = None,
- win_length: _int | None = None,
- window: Tensor | None = None,
- center: _bool = True,
- normalized: _bool = False,
- onesided: _bool | None = None,
- length: _int | None = None,
- return_complex: _bool = False,
- ) -> Tensor: ...
- @overload
- def kaiser_window(
- window_length: _int,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- kaiser_window(window_length, periodic=True, beta=12.0, *, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Computes the Kaiser window with window length :attr:`window_length` and shape parameter :attr:`beta`.
- Let I_0 be the zeroth order modified Bessel function of the first kind (see :func:`torch.i0`) and
- ``N = L - 1`` if :attr:`periodic` is False and ``L`` if :attr:`periodic` is True,
- where ``L`` is the :attr:`window_length`. This function computes:
- .. math::
- out_i = I_0 \left( \beta \sqrt{1 - \left( {\frac{i - N/2}{N/2}} \right) ^2 } \right) / I_0( \beta )
- Calling ``torch.kaiser_window(L, B, periodic=True)`` is equivalent to calling
- ``torch.kaiser_window(L + 1, B, periodic=False)[:-1])``.
- The :attr:`periodic` argument is intended as a helpful shorthand
- to produce a periodic window as input to functions like :func:`torch.stft`.
- .. note::
- If :attr:`window_length` is one, then the returned window is a single element tensor containing a one.
- Args:
- window_length (int): length of the window.
- periodic (bool, optional): If True, returns a periodic window suitable for use in spectral analysis.
- If False, returns a symmetric window suitable for use in filter design.
- beta (float, optional): shape parameter for the window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- """
- @overload
- def kaiser_window(
- window_length: _int,
- periodic: _bool,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- kaiser_window(window_length, periodic=True, beta=12.0, *, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Computes the Kaiser window with window length :attr:`window_length` and shape parameter :attr:`beta`.
- Let I_0 be the zeroth order modified Bessel function of the first kind (see :func:`torch.i0`) and
- ``N = L - 1`` if :attr:`periodic` is False and ``L`` if :attr:`periodic` is True,
- where ``L`` is the :attr:`window_length`. This function computes:
- .. math::
- out_i = I_0 \left( \beta \sqrt{1 - \left( {\frac{i - N/2}{N/2}} \right) ^2 } \right) / I_0( \beta )
- Calling ``torch.kaiser_window(L, B, periodic=True)`` is equivalent to calling
- ``torch.kaiser_window(L + 1, B, periodic=False)[:-1])``.
- The :attr:`periodic` argument is intended as a helpful shorthand
- to produce a periodic window as input to functions like :func:`torch.stft`.
- .. note::
- If :attr:`window_length` is one, then the returned window is a single element tensor containing a one.
- Args:
- window_length (int): length of the window.
- periodic (bool, optional): If True, returns a periodic window suitable for use in spectral analysis.
- If False, returns a symmetric window suitable for use in filter design.
- beta (float, optional): shape parameter for the window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- """
- @overload
- def kaiser_window(
- window_length: _int,
- periodic: _bool,
- beta: _float,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- kaiser_window(window_length, periodic=True, beta=12.0, *, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Computes the Kaiser window with window length :attr:`window_length` and shape parameter :attr:`beta`.
- Let I_0 be the zeroth order modified Bessel function of the first kind (see :func:`torch.i0`) and
- ``N = L - 1`` if :attr:`periodic` is False and ``L`` if :attr:`periodic` is True,
- where ``L`` is the :attr:`window_length`. This function computes:
- .. math::
- out_i = I_0 \left( \beta \sqrt{1 - \left( {\frac{i - N/2}{N/2}} \right) ^2 } \right) / I_0( \beta )
- Calling ``torch.kaiser_window(L, B, periodic=True)`` is equivalent to calling
- ``torch.kaiser_window(L + 1, B, periodic=False)[:-1])``.
- The :attr:`periodic` argument is intended as a helpful shorthand
- to produce a periodic window as input to functions like :func:`torch.stft`.
- .. note::
- If :attr:`window_length` is one, then the returned window is a single element tensor containing a one.
- Args:
- window_length (int): length of the window.
- periodic (bool, optional): If True, returns a periodic window suitable for use in spectral analysis.
- If False, returns a symmetric window suitable for use in filter design.
- beta (float, optional): shape parameter for the window.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned window tensor. Only
- ``torch.strided`` (dense layout) is supported.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- """
- def kl_div(
- input: Tensor,
- target: Tensor,
- reduction: _int = 1,
- *,
- log_target: _bool = False,
- ) -> Tensor: ...
- def kron(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- kron(input, other, *, out=None) -> Tensor
- Computes the Kronecker product, denoted by :math:`\otimes`, of :attr:`input` and :attr:`other`.
- If :attr:`input` is a :math:`(a_0 \times a_1 \times \dots \times a_n)` tensor and :attr:`other` is a
- :math:`(b_0 \times b_1 \times \dots \times b_n)` tensor, the result will be a
- :math:`(a_0*b_0 \times a_1*b_1 \times \dots \times a_n*b_n)` tensor with the following entries:
- .. math::
- (\text{input} \otimes \text{other})_{k_0, k_1, \dots, k_n} =
- \text{input}_{i_0, i_1, \dots, i_n} * \text{other}_{j_0, j_1, \dots, j_n},
- where :math:`k_t = i_t * b_t + j_t` for :math:`0 \leq t \leq n`.
- If one tensor has fewer dimensions than the other it is unsqueezed until it has the same number of dimensions.
- Supports real-valued and complex-valued inputs.
- .. note::
- This function generalizes the typical definition of the Kronecker product for two matrices to two tensors,
- as described above. When :attr:`input` is a :math:`(m \times n)` matrix and :attr:`other` is a
- :math:`(p \times q)` matrix, the result will be a :math:`(p*m \times q*n)` block matrix:
- .. math::
- \mathbf{A} \otimes \mathbf{B}=\begin{bmatrix}
- a_{11} \mathbf{B} & \cdots & a_{1 n} \mathbf{B} \\
- \vdots & \ddots & \vdots \\
- a_{m 1} \mathbf{B} & \cdots & a_{m n} \mathbf{B} \end{bmatrix}
- where :attr:`input` is :math:`\mathbf{A}` and :attr:`other` is :math:`\mathbf{B}`.
- Arguments:
- input (Tensor)
- other (Tensor)
- Keyword args:
- out (Tensor, optional): The output tensor. Ignored if ``None``. Default: ``None``
- Examples::
- >>> mat1 = torch.eye(2)
- >>> mat2 = torch.ones(2, 2)
- >>> torch.kron(mat1, mat2)
- tensor([[1., 1., 0., 0.],
- [1., 1., 0., 0.],
- [0., 0., 1., 1.],
- [0., 0., 1., 1.]])
- >>> mat1 = torch.eye(2)
- >>> mat2 = torch.arange(1, 5).reshape(2, 2)
- >>> torch.kron(mat1, mat2)
- tensor([[1., 2., 0., 0.],
- [3., 4., 0., 0.],
- [0., 0., 1., 2.],
- [0., 0., 3., 4.]])
- """
- @overload
- def kthvalue(
- input: Tensor,
- k: _int | SymInt,
- dim: _int = -1,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.kthvalue:
- r"""
- kthvalue(input, k, dim=None, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- Returns a namedtuple ``(values, indices)`` where ``values`` is the :attr:`k` th
- smallest element of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`. And ``indices`` is the index location of each element found.
- If :attr:`dim` is not given, the last dimension of the `input` is chosen.
- If :attr:`keepdim` is ``True``, both the :attr:`values` and :attr:`indices` tensors
- are the same size as :attr:`input`, except in the dimension :attr:`dim` where
- they are of size 1. Otherwise, :attr:`dim` is squeezed
- (see :func:`torch.squeeze`), resulting in both the :attr:`values` and
- :attr:`indices` tensors having 1 fewer dimension than the :attr:`input` tensor.
- .. note::
- When :attr:`input` is a CUDA tensor and there are multiple valid
- :attr:`k` th values, this function may nondeterministically return
- :attr:`indices` for any of them.
- Args:
- input (Tensor): the input tensor.
- k (int): k for the k-th smallest element
- dim (int, optional): the dimension to find the kth value along
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the output tuple of (Tensor, LongTensor)
- can be optionally given to be used as output buffers
- Example::
- >>> x = torch.arange(1., 6.)
- >>> x
- tensor([ 1., 2., 3., 4., 5.])
- >>> torch.kthvalue(x, 4)
- torch.return_types.kthvalue(values=tensor(4.), indices=tensor(3))
- >>> x=torch.arange(1.,7.).resize_(2,3)
- >>> x
- tensor([[ 1., 2., 3.],
- [ 4., 5., 6.]])
- >>> torch.kthvalue(x, 2, 0, True)
- torch.return_types.kthvalue(values=tensor([[4., 5., 6.]]), indices=tensor([[1, 1, 1]]))
- """
- @overload
- def kthvalue(
- input: Tensor,
- k: _int | SymInt,
- dim: str | EllipsisType | None,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.kthvalue:
- r"""
- kthvalue(input, k, dim=None, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- Returns a namedtuple ``(values, indices)`` where ``values`` is the :attr:`k` th
- smallest element of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`. And ``indices`` is the index location of each element found.
- If :attr:`dim` is not given, the last dimension of the `input` is chosen.
- If :attr:`keepdim` is ``True``, both the :attr:`values` and :attr:`indices` tensors
- are the same size as :attr:`input`, except in the dimension :attr:`dim` where
- they are of size 1. Otherwise, :attr:`dim` is squeezed
- (see :func:`torch.squeeze`), resulting in both the :attr:`values` and
- :attr:`indices` tensors having 1 fewer dimension than the :attr:`input` tensor.
- .. note::
- When :attr:`input` is a CUDA tensor and there are multiple valid
- :attr:`k` th values, this function may nondeterministically return
- :attr:`indices` for any of them.
- Args:
- input (Tensor): the input tensor.
- k (int): k for the k-th smallest element
- dim (int, optional): the dimension to find the kth value along
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the output tuple of (Tensor, LongTensor)
- can be optionally given to be used as output buffers
- Example::
- >>> x = torch.arange(1., 6.)
- >>> x
- tensor([ 1., 2., 3., 4., 5.])
- >>> torch.kthvalue(x, 4)
- torch.return_types.kthvalue(values=tensor(4.), indices=tensor(3))
- >>> x=torch.arange(1.,7.).resize_(2,3)
- >>> x
- tensor([[ 1., 2., 3.],
- [ 4., 5., 6.]])
- >>> torch.kthvalue(x, 2, 0, True)
- torch.return_types.kthvalue(values=tensor([[4., 5., 6.]]), indices=tensor([[1, 1, 1]]))
- """
- def layer_norm(
- input: Tensor,
- normalized_shape: Sequence[_int | SymInt],
- weight: Tensor | None = None,
- bias: Tensor | None = None,
- eps: _float = 1e-05,
- cudnn_enable: _bool = True,
- ) -> Tensor: ...
- def lcm(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- lcm(input, other, *, out=None) -> Tensor
- Computes the element-wise least common multiple (LCM) of :attr:`input` and :attr:`other`.
- Both :attr:`input` and :attr:`other` must have integer types.
- .. note::
- This defines :math:`lcm(0, 0) = 0` and :math:`lcm(0, a) = 0`.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the second input tensor
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([5, 10, 15])
- >>> b = torch.tensor([3, 4, 5])
- >>> torch.lcm(a, b)
- tensor([15, 20, 15])
- >>> c = torch.tensor([3])
- >>> torch.lcm(a, c)
- tensor([15, 30, 15])
- """
- def lcm_(input: Tensor, other: Tensor) -> Tensor: ...
- def ldexp(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- ldexp(input, other, *, out=None) -> Tensor
- Multiplies :attr:`input` by 2 ** :attr:`other`.
- .. math::
- \text{{out}}_i = \text{{input}}_i * 2^\text{{other}}_i
- Typically this function is used to construct floating point numbers by multiplying
- mantissas in :attr:`input` with integral powers of two created from the exponents
- in :attr:`other`.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): a tensor of exponents, typically integers.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.ldexp(torch.tensor([1.]), torch.tensor([1]))
- tensor([2.])
- >>> torch.ldexp(torch.tensor([1.0]), torch.tensor([1, 2, 3, 4]))
- tensor([ 2., 4., 8., 16.])
- """
- def ldexp_(input: Tensor, other: Tensor) -> Tensor: ...
- @overload
- def le(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- le(input, other, *, out=None) -> Tensor
- Computes :math:`\text{input} \leq \text{other}` element-wise.
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or Scalar): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is less than or equal to
- :attr:`other` and False elsewhere
- Example::
- >>> torch.le(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[True, False], [True, True]])
- """
- @overload
- def le(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- le(input, other, *, out=None) -> Tensor
- Computes :math:`\text{input} \leq \text{other}` element-wise.
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or Scalar): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is less than or equal to
- :attr:`other` and False elsewhere
- Example::
- >>> torch.le(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[True, False], [True, True]])
- """
- @overload
- def lerp(
- input: Tensor,
- end: Tensor,
- weight: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- lerp(input, end, weight, *, out=None)
- Does a linear interpolation of two tensors :attr:`start` (given by :attr:`input`) and :attr:`end` based
- on a scalar or tensor :attr:`weight` and returns the resulting :attr:`out` tensor.
- .. math::
- \text{out}_i = \text{start}_i + \text{weight}_i \times (\text{end}_i - \text{start}_i)
- The shapes of :attr:`start` and :attr:`end` must be
- :ref:`broadcastable <broadcasting-semantics>`. If :attr:`weight` is a tensor, then
- the shapes of :attr:`weight`, :attr:`start`, and :attr:`end` must be :ref:`broadcastable <broadcasting-semantics>`.
- Args:
- input (Tensor): the tensor with the starting points
- end (Tensor): the tensor with the ending points
- weight (float or tensor): the weight for the interpolation formula
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> start = torch.arange(1., 5.)
- >>> end = torch.empty(4).fill_(10)
- >>> start
- tensor([ 1., 2., 3., 4.])
- >>> end
- tensor([ 10., 10., 10., 10.])
- >>> torch.lerp(start, end, 0.5)
- tensor([ 5.5000, 6.0000, 6.5000, 7.0000])
- >>> torch.lerp(start, end, torch.full_like(start, 0.5))
- tensor([ 5.5000, 6.0000, 6.5000, 7.0000])
- """
- @overload
- def lerp(
- input: Tensor,
- end: Tensor,
- weight: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- lerp(input, end, weight, *, out=None)
- Does a linear interpolation of two tensors :attr:`start` (given by :attr:`input`) and :attr:`end` based
- on a scalar or tensor :attr:`weight` and returns the resulting :attr:`out` tensor.
- .. math::
- \text{out}_i = \text{start}_i + \text{weight}_i \times (\text{end}_i - \text{start}_i)
- The shapes of :attr:`start` and :attr:`end` must be
- :ref:`broadcastable <broadcasting-semantics>`. If :attr:`weight` is a tensor, then
- the shapes of :attr:`weight`, :attr:`start`, and :attr:`end` must be :ref:`broadcastable <broadcasting-semantics>`.
- Args:
- input (Tensor): the tensor with the starting points
- end (Tensor): the tensor with the ending points
- weight (float or tensor): the weight for the interpolation formula
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> start = torch.arange(1., 5.)
- >>> end = torch.empty(4).fill_(10)
- >>> start
- tensor([ 1., 2., 3., 4.])
- >>> end
- tensor([ 10., 10., 10., 10.])
- >>> torch.lerp(start, end, 0.5)
- tensor([ 5.5000, 6.0000, 6.5000, 7.0000])
- >>> torch.lerp(start, end, torch.full_like(start, 0.5))
- tensor([ 5.5000, 6.0000, 6.5000, 7.0000])
- """
- @overload
- def less(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- less(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.lt`.
- """
- @overload
- def less(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- less(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.lt`.
- """
- @overload
- def less_equal(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- less_equal(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.le`.
- """
- @overload
- def less_equal(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- less_equal(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.le`.
- """
- def lgamma(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- lgamma(input, *, out=None) -> Tensor
- Computes the natural logarithm of the absolute value of the gamma function on :attr:`input`.
- .. math::
- \text{out}_{i} = \ln |\Gamma(\text{input}_{i})|
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.arange(0.5, 2, 0.5)
- >>> torch.lgamma(a)
- tensor([ 0.5724, 0.0000, -0.1208])
- """
- @overload
- def linspace(
- start: Number,
- end: Number,
- steps: _int | None = None,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- linspace(start, end, steps, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a one-dimensional tensor of size :attr:`steps` whose values are evenly
- spaced from :attr:`start` to :attr:`end`, inclusive. That is, the value are:
- .. math::
- (\text{start},
- \text{start} + \frac{\text{end} - \text{start}}{\text{steps} - 1},
- \ldots,
- \text{start} + (\text{steps} - 2) * \frac{\text{end} - \text{start}}{\text{steps} - 1},
- \text{end})
- From PyTorch 1.11 linspace requires the steps argument. Use steps=100 to restore the previous behavior.
- Args:
- start (float or Tensor): the starting value for the set of points. If `Tensor`, it must be 0-dimensional
- end (float or Tensor): the ending value for the set of points. If `Tensor`, it must be 0-dimensional
- steps (int): size of the constructed tensor
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the data type to perform the computation in.
- Default: if None, uses the global default dtype (see torch.get_default_dtype())
- when both :attr:`start` and :attr:`end` are real,
- and corresponding complex dtype when either is complex.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.linspace(3, 10, steps=5)
- tensor([ 3.0000, 4.7500, 6.5000, 8.2500, 10.0000])
- >>> torch.linspace(-10, 10, steps=5)
- tensor([-10., -5., 0., 5., 10.])
- >>> torch.linspace(start=-10, end=10, steps=5)
- tensor([-10., -5., 0., 5., 10.])
- >>> torch.linspace(start=-10, end=10, steps=1)
- tensor([-10.])
- """
- @overload
- def linspace(
- start: Tensor,
- end: Tensor,
- steps: _int,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- linspace(start, end, steps, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a one-dimensional tensor of size :attr:`steps` whose values are evenly
- spaced from :attr:`start` to :attr:`end`, inclusive. That is, the value are:
- .. math::
- (\text{start},
- \text{start} + \frac{\text{end} - \text{start}}{\text{steps} - 1},
- \ldots,
- \text{start} + (\text{steps} - 2) * \frac{\text{end} - \text{start}}{\text{steps} - 1},
- \text{end})
- From PyTorch 1.11 linspace requires the steps argument. Use steps=100 to restore the previous behavior.
- Args:
- start (float or Tensor): the starting value for the set of points. If `Tensor`, it must be 0-dimensional
- end (float or Tensor): the ending value for the set of points. If `Tensor`, it must be 0-dimensional
- steps (int): size of the constructed tensor
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the data type to perform the computation in.
- Default: if None, uses the global default dtype (see torch.get_default_dtype())
- when both :attr:`start` and :attr:`end` are real,
- and corresponding complex dtype when either is complex.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.linspace(3, 10, steps=5)
- tensor([ 3.0000, 4.7500, 6.5000, 8.2500, 10.0000])
- >>> torch.linspace(-10, 10, steps=5)
- tensor([-10., -5., 0., 5., 10.])
- >>> torch.linspace(start=-10, end=10, steps=5)
- tensor([-10., -5., 0., 5., 10.])
- >>> torch.linspace(start=-10, end=10, steps=1)
- tensor([-10.])
- """
- @overload
- def linspace(
- start: Number | _complex,
- end: Tensor,
- steps: _int,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- linspace(start, end, steps, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a one-dimensional tensor of size :attr:`steps` whose values are evenly
- spaced from :attr:`start` to :attr:`end`, inclusive. That is, the value are:
- .. math::
- (\text{start},
- \text{start} + \frac{\text{end} - \text{start}}{\text{steps} - 1},
- \ldots,
- \text{start} + (\text{steps} - 2) * \frac{\text{end} - \text{start}}{\text{steps} - 1},
- \text{end})
- From PyTorch 1.11 linspace requires the steps argument. Use steps=100 to restore the previous behavior.
- Args:
- start (float or Tensor): the starting value for the set of points. If `Tensor`, it must be 0-dimensional
- end (float or Tensor): the ending value for the set of points. If `Tensor`, it must be 0-dimensional
- steps (int): size of the constructed tensor
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the data type to perform the computation in.
- Default: if None, uses the global default dtype (see torch.get_default_dtype())
- when both :attr:`start` and :attr:`end` are real,
- and corresponding complex dtype when either is complex.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.linspace(3, 10, steps=5)
- tensor([ 3.0000, 4.7500, 6.5000, 8.2500, 10.0000])
- >>> torch.linspace(-10, 10, steps=5)
- tensor([-10., -5., 0., 5., 10.])
- >>> torch.linspace(start=-10, end=10, steps=5)
- tensor([-10., -5., 0., 5., 10.])
- >>> torch.linspace(start=-10, end=10, steps=1)
- tensor([-10.])
- """
- @overload
- def linspace(
- start: Tensor,
- end: Number | _complex,
- steps: _int,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- linspace(start, end, steps, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a one-dimensional tensor of size :attr:`steps` whose values are evenly
- spaced from :attr:`start` to :attr:`end`, inclusive. That is, the value are:
- .. math::
- (\text{start},
- \text{start} + \frac{\text{end} - \text{start}}{\text{steps} - 1},
- \ldots,
- \text{start} + (\text{steps} - 2) * \frac{\text{end} - \text{start}}{\text{steps} - 1},
- \text{end})
- From PyTorch 1.11 linspace requires the steps argument. Use steps=100 to restore the previous behavior.
- Args:
- start (float or Tensor): the starting value for the set of points. If `Tensor`, it must be 0-dimensional
- end (float or Tensor): the ending value for the set of points. If `Tensor`, it must be 0-dimensional
- steps (int): size of the constructed tensor
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the data type to perform the computation in.
- Default: if None, uses the global default dtype (see torch.get_default_dtype())
- when both :attr:`start` and :attr:`end` are real,
- and corresponding complex dtype when either is complex.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.linspace(3, 10, steps=5)
- tensor([ 3.0000, 4.7500, 6.5000, 8.2500, 10.0000])
- >>> torch.linspace(-10, 10, steps=5)
- tensor([-10., -5., 0., 5., 10.])
- >>> torch.linspace(start=-10, end=10, steps=5)
- tensor([-10., -5., 0., 5., 10.])
- >>> torch.linspace(start=-10, end=10, steps=1)
- tensor([-10.])
- """
- @overload
- def linspace(
- start: Number | _complex,
- end: Number | _complex,
- steps: _int,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- linspace(start, end, steps, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a one-dimensional tensor of size :attr:`steps` whose values are evenly
- spaced from :attr:`start` to :attr:`end`, inclusive. That is, the value are:
- .. math::
- (\text{start},
- \text{start} + \frac{\text{end} - \text{start}}{\text{steps} - 1},
- \ldots,
- \text{start} + (\text{steps} - 2) * \frac{\text{end} - \text{start}}{\text{steps} - 1},
- \text{end})
- From PyTorch 1.11 linspace requires the steps argument. Use steps=100 to restore the previous behavior.
- Args:
- start (float or Tensor): the starting value for the set of points. If `Tensor`, it must be 0-dimensional
- end (float or Tensor): the ending value for the set of points. If `Tensor`, it must be 0-dimensional
- steps (int): size of the constructed tensor
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the data type to perform the computation in.
- Default: if None, uses the global default dtype (see torch.get_default_dtype())
- when both :attr:`start` and :attr:`end` are real,
- and corresponding complex dtype when either is complex.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.linspace(3, 10, steps=5)
- tensor([ 3.0000, 4.7500, 6.5000, 8.2500, 10.0000])
- >>> torch.linspace(-10, 10, steps=5)
- tensor([-10., -5., 0., 5., 10.])
- >>> torch.linspace(start=-10, end=10, steps=5)
- tensor([-10., -5., 0., 5., 10.])
- >>> torch.linspace(start=-10, end=10, steps=1)
- tensor([-10.])
- """
- def log(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- log(input, *, out=None) -> Tensor
- Returns a new tensor with the natural logarithm of the elements
- of :attr:`input`.
- .. math::
- y_{i} = \log_{e} (x_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(5) * 5
- >>> a
- tensor([4.7767, 4.3234, 1.2156, 0.2411, 4.5739])
- >>> torch.log(a)
- tensor([ 1.5637, 1.4640, 0.1952, -1.4226, 1.5204])
- """
- def log10(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- log10(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Returns a new tensor with the logarithm to the base 10 of the elements
- of :attr:`input`.
- .. math::
- y_{i} = \log_{10} (x_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(5)
- >>> a
- tensor([ 0.5224, 0.9354, 0.7257, 0.1301, 0.2251])
- >>> torch.log10(a)
- tensor([-0.2820, -0.0290, -0.1392, -0.8857, -0.6476])
- """
- def log10_(input: Tensor) -> Tensor: ...
- def log1p(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- log1p(input, *, out=None) -> Tensor
- Returns a new tensor with the natural logarithm of (1 + :attr:`input`).
- .. math::
- y_i = \log_{e} (x_i + 1)
- .. note:: This function is more accurate than :func:`torch.log` for small
- values of :attr:`input`
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(5)
- >>> a
- tensor([-1.0090, -0.9923, 1.0249, -0.5372, 0.2492])
- >>> torch.log1p(a)
- tensor([ nan, -4.8653, 0.7055, -0.7705, 0.2225])
- """
- def log1p_(input: Tensor) -> Tensor: ...
- def log2(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- log2(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Returns a new tensor with the logarithm to the base 2 of the elements
- of :attr:`input`.
- .. math::
- y_{i} = \log_{2} (x_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.rand(5)
- >>> a
- tensor([ 0.8419, 0.8003, 0.9971, 0.5287, 0.0490])
- >>> torch.log2(a)
- tensor([-0.2483, -0.3213, -0.0042, -0.9196, -4.3504])
- """
- def log2_(input: Tensor) -> Tensor: ...
- def log_(input: Tensor) -> Tensor: ...
- @overload
- def log_softmax(
- input: Tensor,
- dim: _int,
- dtype: _dtype | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def log_softmax(
- input: Tensor,
- dim: str | EllipsisType | None,
- *,
- dtype: _dtype | None = None,
- ) -> Tensor: ...
- def logaddexp(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- logaddexp(input, other, *, out=None) -> Tensor
- Logarithm of the sum of exponentiations of the inputs.
- Calculates pointwise :math:`\log\left(e^x + e^y\right)`. This function is useful
- in statistics where the calculated probabilities of events may be so small as to
- exceed the range of normal floating point numbers. In such cases the logarithm
- of the calculated probability is stored. This function allows adding
- probabilities stored in such a fashion.
- This op should be disambiguated with :func:`torch.logsumexp` which performs a
- reduction on a single tensor.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the second input tensor
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.logaddexp(torch.tensor([-1.0]), torch.tensor([-1.0, -2, -3]))
- tensor([-0.3069, -0.6867, -0.8731])
- >>> torch.logaddexp(torch.tensor([-100.0, -200, -300]), torch.tensor([-1.0, -2, -3]))
- tensor([-1., -2., -3.])
- >>> torch.logaddexp(torch.tensor([1.0, 2000, 30000]), torch.tensor([-1.0, -2, -3]))
- tensor([1.1269e+00, 2.0000e+03, 3.0000e+04])
- """
- def logaddexp2(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- logaddexp2(input, other, *, out=None) -> Tensor
- Logarithm of the sum of exponentiations of the inputs in base-2.
- Calculates pointwise :math:`\log_2\left(2^x + 2^y\right)`. See
- :func:`torch.logaddexp` for more details.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the second input tensor
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- """
- @overload
- def logcumsumexp(
- input: Tensor,
- dim: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- logcumsumexp(input, dim, *, out=None) -> Tensor
- Returns the logarithm of the cumulative summation of the exponentiation of
- elements of :attr:`input` in the dimension :attr:`dim`.
- For summation index :math:`j` given by `dim` and other indices :math:`i`, the result is
- .. math::
- \text{logcumsumexp}(x)_{ij} = \log \sum\limits_{k=0}^{j} \exp(x_{ik})
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to do the operation over
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(10)
- >>> torch.logcumsumexp(a, dim=0)
- tensor([-0.42296738, -0.04462666, 0.86278635, 0.94622083, 1.05277811,
- 1.39202815, 1.83525007, 1.84492621, 2.06084887, 2.06844475]))
- """
- @overload
- def logcumsumexp(
- input: Tensor,
- dim: str | EllipsisType | None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- logcumsumexp(input, dim, *, out=None) -> Tensor
- Returns the logarithm of the cumulative summation of the exponentiation of
- elements of :attr:`input` in the dimension :attr:`dim`.
- For summation index :math:`j` given by `dim` and other indices :math:`i`, the result is
- .. math::
- \text{logcumsumexp}(x)_{ij} = \log \sum\limits_{k=0}^{j} \exp(x_{ik})
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to do the operation over
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(10)
- >>> torch.logcumsumexp(a, dim=0)
- tensor([-0.42296738, -0.04462666, 0.86278635, 0.94622083, 1.05277811,
- 1.39202815, 1.83525007, 1.84492621, 2.06084887, 2.06844475]))
- """
- def logdet(input: Tensor) -> Tensor:
- r"""
- logdet(input) -> Tensor
- Calculates log determinant of a square matrix or batches of square matrices.
- It returns ``-inf`` if the input has a determinant of zero, and ``NaN`` if it has
- a negative determinant.
- .. note::
- Backward through :meth:`logdet` internally uses SVD results when :attr:`input`
- is not invertible. In this case, double backward through :meth:`logdet` will
- be unstable in when :attr:`input` doesn't have distinct singular values. See
- :func:`torch.linalg.svd` for details.
- .. seealso::
- :func:`torch.linalg.slogdet` computes the sign (resp. angle) and natural logarithm of the
- absolute value of the determinant of real-valued (resp. complex) square matrices.
- Arguments:
- input (Tensor): the input tensor of size ``(*, n, n)`` where ``*`` is zero or more
- batch dimensions.
- Example::
- >>> A = torch.randn(3, 3)
- >>> torch.det(A)
- tensor(0.2611)
- >>> torch.logdet(A)
- tensor(-1.3430)
- >>> A
- tensor([[[ 0.9254, -0.6213],
- [-0.5787, 1.6843]],
- [[ 0.3242, -0.9665],
- [ 0.4539, -0.0887]],
- [[ 1.1336, -0.4025],
- [-0.7089, 0.9032]]])
- >>> A.det()
- tensor([1.1990, 0.4099, 0.7386])
- >>> A.det().log()
- tensor([ 0.1815, -0.8917, -0.3031])
- """
- def logical_and(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- logical_and(input, other, *, out=None) -> Tensor
- Computes the element-wise logical AND of the given input tensors. Zeros are treated as ``False`` and nonzeros are
- treated as ``True``.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the tensor to compute AND with
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.logical_and(torch.tensor([True, False, True]), torch.tensor([True, False, False]))
- tensor([ True, False, False])
- >>> a = torch.tensor([0, 1, 10, 0], dtype=torch.int8)
- >>> b = torch.tensor([4, 0, 1, 0], dtype=torch.int8)
- >>> torch.logical_and(a, b)
- tensor([False, False, True, False])
- >>> torch.logical_and(a.double(), b.double())
- tensor([False, False, True, False])
- >>> torch.logical_and(a.double(), b)
- tensor([False, False, True, False])
- >>> torch.logical_and(a, b, out=torch.empty(4, dtype=torch.bool))
- tensor([False, False, True, False])
- """
- def logical_not(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- logical_not(input, *, out=None) -> Tensor
- Computes the element-wise logical NOT of the given input tensor. If not specified, the output tensor will have the bool
- dtype. If the input tensor is not a bool tensor, zeros are treated as ``False`` and non-zeros are treated as ``True``.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.logical_not(torch.tensor([True, False]))
- tensor([False, True])
- >>> torch.logical_not(torch.tensor([0, 1, -10], dtype=torch.int8))
- tensor([ True, False, False])
- >>> torch.logical_not(torch.tensor([0., 1.5, -10.], dtype=torch.double))
- tensor([ True, False, False])
- >>> torch.logical_not(torch.tensor([0., 1., -10.], dtype=torch.double), out=torch.empty(3, dtype=torch.int16))
- tensor([1, 0, 0], dtype=torch.int16)
- """
- def logical_or(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- logical_or(input, other, *, out=None) -> Tensor
- Computes the element-wise logical OR of the given input tensors. Zeros are treated as ``False`` and nonzeros are
- treated as ``True``.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the tensor to compute OR with
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.logical_or(torch.tensor([True, False, True]), torch.tensor([True, False, False]))
- tensor([ True, False, True])
- >>> a = torch.tensor([0, 1, 10, 0], dtype=torch.int8)
- >>> b = torch.tensor([4, 0, 1, 0], dtype=torch.int8)
- >>> torch.logical_or(a, b)
- tensor([ True, True, True, False])
- >>> torch.logical_or(a.double(), b.double())
- tensor([ True, True, True, False])
- >>> torch.logical_or(a.double(), b)
- tensor([ True, True, True, False])
- >>> torch.logical_or(a, b, out=torch.empty(4, dtype=torch.bool))
- tensor([ True, True, True, False])
- """
- def logical_xor(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- logical_xor(input: Tensor, other: Tensor, *, out: Optional[Tensor]) -> Tensor
- Computes the element-wise logical XOR of the given input tensors. Zeros are treated as ``False`` and nonzeros are
- treated as ``True``.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the tensor to compute XOR with
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.logical_xor(torch.tensor([True, False, True]), torch.tensor([True, False, False]))
- tensor([False, False, True])
- >>> a = torch.tensor([0, 1, 10, 0], dtype=torch.int8)
- >>> b = torch.tensor([4, 0, 1, 0], dtype=torch.int8)
- >>> torch.logical_xor(a, b)
- tensor([ True, True, False, False])
- >>> torch.logical_xor(a.double(), b.double())
- tensor([ True, True, False, False])
- >>> torch.logical_xor(a.double(), b)
- tensor([ True, True, False, False])
- >>> torch.logical_xor(a, b, out=torch.empty(4, dtype=torch.bool))
- tensor([ True, True, False, False])
- """
- def logit(
- input: Tensor,
- eps: _float | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- logit(input, eps=None, *, out=None) -> Tensor
- Alias for :func:`torch.special.logit`.
- """
- def logit_(input: Tensor, eps: _float | None = None) -> Tensor: ...
- @overload
- def logspace(
- start: Number,
- end: Number,
- steps: _int | None = None,
- base: _float = 10.0,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- logspace(start, end, steps, base=10.0, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a one-dimensional tensor of size :attr:`steps` whose values are evenly
- spaced from :math:`{{\text{{base}}}}^{{\text{{start}}}}` to
- :math:`{{\text{{base}}}}^{{\text{{end}}}}`, inclusive, on a logarithmic scale
- with base :attr:`base`. That is, the values are:
- .. math::
- (\text{base}^{\text{start}},
- \text{base}^{(\text{start} + \frac{\text{end} - \text{start}}{ \text{steps} - 1})},
- \ldots,
- \text{base}^{(\text{start} + (\text{steps} - 2) * \frac{\text{end} - \text{start}}{ \text{steps} - 1})},
- \text{base}^{\text{end}})
- From PyTorch 1.11 logspace requires the steps argument. Use steps=100 to restore the previous behavior.
- Args:
- start (float or Tensor): the starting value for the set of points. If `Tensor`, it must be 0-dimensional
- end (float or Tensor): the ending value for the set of points. If `Tensor`, it must be 0-dimensional
- steps (int): size of the constructed tensor
- base (float, optional): base of the logarithm function. Default: ``10.0``.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the data type to perform the computation in.
- Default: if None, uses the global default dtype (see torch.get_default_dtype())
- when both :attr:`start` and :attr:`end` are real,
- and corresponding complex dtype when either is complex.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.logspace(start=-10, end=10, steps=5)
- tensor([ 1.0000e-10, 1.0000e-05, 1.0000e+00, 1.0000e+05, 1.0000e+10])
- >>> torch.logspace(start=0.1, end=1.0, steps=5)
- tensor([ 1.2589, 2.1135, 3.5481, 5.9566, 10.0000])
- >>> torch.logspace(start=0.1, end=1.0, steps=1)
- tensor([1.2589])
- >>> torch.logspace(start=2, end=2, steps=1, base=2)
- tensor([4.0])
- """
- @overload
- def logspace(
- start: Tensor,
- end: Tensor,
- steps: _int,
- base: _float = 10.0,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- logspace(start, end, steps, base=10.0, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a one-dimensional tensor of size :attr:`steps` whose values are evenly
- spaced from :math:`{{\text{{base}}}}^{{\text{{start}}}}` to
- :math:`{{\text{{base}}}}^{{\text{{end}}}}`, inclusive, on a logarithmic scale
- with base :attr:`base`. That is, the values are:
- .. math::
- (\text{base}^{\text{start}},
- \text{base}^{(\text{start} + \frac{\text{end} - \text{start}}{ \text{steps} - 1})},
- \ldots,
- \text{base}^{(\text{start} + (\text{steps} - 2) * \frac{\text{end} - \text{start}}{ \text{steps} - 1})},
- \text{base}^{\text{end}})
- From PyTorch 1.11 logspace requires the steps argument. Use steps=100 to restore the previous behavior.
- Args:
- start (float or Tensor): the starting value for the set of points. If `Tensor`, it must be 0-dimensional
- end (float or Tensor): the ending value for the set of points. If `Tensor`, it must be 0-dimensional
- steps (int): size of the constructed tensor
- base (float, optional): base of the logarithm function. Default: ``10.0``.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the data type to perform the computation in.
- Default: if None, uses the global default dtype (see torch.get_default_dtype())
- when both :attr:`start` and :attr:`end` are real,
- and corresponding complex dtype when either is complex.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.logspace(start=-10, end=10, steps=5)
- tensor([ 1.0000e-10, 1.0000e-05, 1.0000e+00, 1.0000e+05, 1.0000e+10])
- >>> torch.logspace(start=0.1, end=1.0, steps=5)
- tensor([ 1.2589, 2.1135, 3.5481, 5.9566, 10.0000])
- >>> torch.logspace(start=0.1, end=1.0, steps=1)
- tensor([1.2589])
- >>> torch.logspace(start=2, end=2, steps=1, base=2)
- tensor([4.0])
- """
- @overload
- def logspace(
- start: Number | _complex,
- end: Tensor,
- steps: _int,
- base: _float = 10.0,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- logspace(start, end, steps, base=10.0, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a one-dimensional tensor of size :attr:`steps` whose values are evenly
- spaced from :math:`{{\text{{base}}}}^{{\text{{start}}}}` to
- :math:`{{\text{{base}}}}^{{\text{{end}}}}`, inclusive, on a logarithmic scale
- with base :attr:`base`. That is, the values are:
- .. math::
- (\text{base}^{\text{start}},
- \text{base}^{(\text{start} + \frac{\text{end} - \text{start}}{ \text{steps} - 1})},
- \ldots,
- \text{base}^{(\text{start} + (\text{steps} - 2) * \frac{\text{end} - \text{start}}{ \text{steps} - 1})},
- \text{base}^{\text{end}})
- From PyTorch 1.11 logspace requires the steps argument. Use steps=100 to restore the previous behavior.
- Args:
- start (float or Tensor): the starting value for the set of points. If `Tensor`, it must be 0-dimensional
- end (float or Tensor): the ending value for the set of points. If `Tensor`, it must be 0-dimensional
- steps (int): size of the constructed tensor
- base (float, optional): base of the logarithm function. Default: ``10.0``.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the data type to perform the computation in.
- Default: if None, uses the global default dtype (see torch.get_default_dtype())
- when both :attr:`start` and :attr:`end` are real,
- and corresponding complex dtype when either is complex.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.logspace(start=-10, end=10, steps=5)
- tensor([ 1.0000e-10, 1.0000e-05, 1.0000e+00, 1.0000e+05, 1.0000e+10])
- >>> torch.logspace(start=0.1, end=1.0, steps=5)
- tensor([ 1.2589, 2.1135, 3.5481, 5.9566, 10.0000])
- >>> torch.logspace(start=0.1, end=1.0, steps=1)
- tensor([1.2589])
- >>> torch.logspace(start=2, end=2, steps=1, base=2)
- tensor([4.0])
- """
- @overload
- def logspace(
- start: Tensor,
- end: Number | _complex,
- steps: _int,
- base: _float = 10.0,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- logspace(start, end, steps, base=10.0, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a one-dimensional tensor of size :attr:`steps` whose values are evenly
- spaced from :math:`{{\text{{base}}}}^{{\text{{start}}}}` to
- :math:`{{\text{{base}}}}^{{\text{{end}}}}`, inclusive, on a logarithmic scale
- with base :attr:`base`. That is, the values are:
- .. math::
- (\text{base}^{\text{start}},
- \text{base}^{(\text{start} + \frac{\text{end} - \text{start}}{ \text{steps} - 1})},
- \ldots,
- \text{base}^{(\text{start} + (\text{steps} - 2) * \frac{\text{end} - \text{start}}{ \text{steps} - 1})},
- \text{base}^{\text{end}})
- From PyTorch 1.11 logspace requires the steps argument. Use steps=100 to restore the previous behavior.
- Args:
- start (float or Tensor): the starting value for the set of points. If `Tensor`, it must be 0-dimensional
- end (float or Tensor): the ending value for the set of points. If `Tensor`, it must be 0-dimensional
- steps (int): size of the constructed tensor
- base (float, optional): base of the logarithm function. Default: ``10.0``.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the data type to perform the computation in.
- Default: if None, uses the global default dtype (see torch.get_default_dtype())
- when both :attr:`start` and :attr:`end` are real,
- and corresponding complex dtype when either is complex.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.logspace(start=-10, end=10, steps=5)
- tensor([ 1.0000e-10, 1.0000e-05, 1.0000e+00, 1.0000e+05, 1.0000e+10])
- >>> torch.logspace(start=0.1, end=1.0, steps=5)
- tensor([ 1.2589, 2.1135, 3.5481, 5.9566, 10.0000])
- >>> torch.logspace(start=0.1, end=1.0, steps=1)
- tensor([1.2589])
- >>> torch.logspace(start=2, end=2, steps=1, base=2)
- tensor([4.0])
- """
- @overload
- def logspace(
- start: Number | _complex,
- end: Number | _complex,
- steps: _int,
- base: _float = 10.0,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- logspace(start, end, steps, base=10.0, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Creates a one-dimensional tensor of size :attr:`steps` whose values are evenly
- spaced from :math:`{{\text{{base}}}}^{{\text{{start}}}}` to
- :math:`{{\text{{base}}}}^{{\text{{end}}}}`, inclusive, on a logarithmic scale
- with base :attr:`base`. That is, the values are:
- .. math::
- (\text{base}^{\text{start}},
- \text{base}^{(\text{start} + \frac{\text{end} - \text{start}}{ \text{steps} - 1})},
- \ldots,
- \text{base}^{(\text{start} + (\text{steps} - 2) * \frac{\text{end} - \text{start}}{ \text{steps} - 1})},
- \text{base}^{\text{end}})
- From PyTorch 1.11 logspace requires the steps argument. Use steps=100 to restore the previous behavior.
- Args:
- start (float or Tensor): the starting value for the set of points. If `Tensor`, it must be 0-dimensional
- end (float or Tensor): the ending value for the set of points. If `Tensor`, it must be 0-dimensional
- steps (int): size of the constructed tensor
- base (float, optional): base of the logarithm function. Default: ``10.0``.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the data type to perform the computation in.
- Default: if None, uses the global default dtype (see torch.get_default_dtype())
- when both :attr:`start` and :attr:`end` are real,
- and corresponding complex dtype when either is complex.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.logspace(start=-10, end=10, steps=5)
- tensor([ 1.0000e-10, 1.0000e-05, 1.0000e+00, 1.0000e+05, 1.0000e+10])
- >>> torch.logspace(start=0.1, end=1.0, steps=5)
- tensor([ 1.2589, 2.1135, 3.5481, 5.9566, 10.0000])
- >>> torch.logspace(start=0.1, end=1.0, steps=1)
- tensor([1.2589])
- >>> torch.logspace(start=2, end=2, steps=1, base=2)
- tensor([4.0])
- """
- @overload
- def logsumexp(
- input: Tensor,
- dim: _int | _size,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- logsumexp(input, dim, keepdim=False, *, out=None)
- Returns the log of summed exponentials of each row of the :attr:`input`
- tensor in the given dimension :attr:`dim`. The computation is numerically
- stabilized.
- For summation index :math:`j` given by `dim` and other indices :math:`i`, the result is
- .. math::
- \text{logsumexp}(x)_{i} = \log \sum_j \exp(x_{ij})
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints): the dimension or dimensions to reduce.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(3, 3)
- >>> torch.logsumexp(a, 1)
- tensor([1.4907, 1.0593, 1.5696])
- >>> torch.dist(torch.logsumexp(a, 1), torch.log(torch.sum(torch.exp(a), 1)))
- tensor(1.6859e-07)
- """
- @overload
- def logsumexp(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- logsumexp(input, dim, keepdim=False, *, out=None)
- Returns the log of summed exponentials of each row of the :attr:`input`
- tensor in the given dimension :attr:`dim`. The computation is numerically
- stabilized.
- For summation index :math:`j` given by `dim` and other indices :math:`i`, the result is
- .. math::
- \text{logsumexp}(x)_{i} = \log \sum_j \exp(x_{ij})
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints): the dimension or dimensions to reduce.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(3, 3)
- >>> torch.logsumexp(a, 1)
- tensor([1.4907, 1.0593, 1.5696])
- >>> torch.dist(torch.logsumexp(a, 1), torch.log(torch.sum(torch.exp(a), 1)))
- tensor(1.6859e-07)
- """
- @overload
- def lstm(
- data: Tensor,
- batch_sizes: Tensor,
- hx: tuple[Tensor, ...] | list[Tensor] | None,
- params: tuple[Tensor, ...] | list[Tensor] | None,
- has_biases: _bool,
- num_layers: _int,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- @overload
- def lstm(
- input: Tensor,
- hx: tuple[Tensor, ...] | list[Tensor] | None,
- params: tuple[Tensor, ...] | list[Tensor] | None,
- has_biases: _bool,
- num_layers: _int,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- batch_first: _bool,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- def lstm_cell(
- input: Tensor,
- hx: tuple[Tensor, ...] | list[Tensor] | None,
- w_ih: Tensor,
- w_hh: Tensor,
- b_ih: Tensor | None = None,
- b_hh: Tensor | None = None,
- ) -> tuple[Tensor, Tensor]: ...
- @overload
- def lt(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- lt(input, other, *, out=None) -> Tensor
- Computes :math:`\text{input} < \text{other}` element-wise.
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or float): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is less than :attr:`other` and False elsewhere
- Example::
- >>> torch.lt(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[False, False], [True, False]])
- """
- @overload
- def lt(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- lt(input, other, *, out=None) -> Tensor
- Computes :math:`\text{input} < \text{other}` element-wise.
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or float): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is less than :attr:`other` and False elsewhere
- Example::
- >>> torch.lt(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[False, False], [True, False]])
- """
- def lu_solve(
- input: Tensor,
- LU_data: Tensor,
- LU_pivots: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- lu_solve(b, LU_data, LU_pivots, *, out=None) -> Tensor
- Returns the LU solve of the linear system :math:`Ax = b` using the partially pivoted
- LU factorization of A from :func:`~linalg.lu_factor`.
- This function supports ``float``, ``double``, ``cfloat`` and ``cdouble`` dtypes for :attr:`input`.
- .. warning::
- :func:`torch.lu_solve` is deprecated in favor of :func:`torch.linalg.lu_solve`.
- :func:`torch.lu_solve` will be removed in a future PyTorch release.
- ``X = torch.lu_solve(B, LU, pivots)`` should be replaced with
- .. code:: python
- X = linalg.lu_solve(LU, pivots, B)
- Arguments:
- b (Tensor): the RHS tensor of size :math:`(*, m, k)`, where :math:`*`
- is zero or more batch dimensions.
- LU_data (Tensor): the pivoted LU factorization of A from :meth:`~linalg.lu_factor` of size :math:`(*, m, m)`,
- where :math:`*` is zero or more batch dimensions.
- LU_pivots (IntTensor): the pivots of the LU factorization from :meth:`~linalg.lu_factor` of size :math:`(*, m)`,
- where :math:`*` is zero or more batch dimensions.
- The batch dimensions of :attr:`LU_pivots` must be equal to the batch dimensions of
- :attr:`LU_data`.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> A = torch.randn(2, 3, 3)
- >>> b = torch.randn(2, 3, 1)
- >>> LU, pivots = torch.linalg.lu_factor(A)
- >>> x = torch.lu_solve(b, LU, pivots)
- >>> torch.dist(A @ x, b)
- tensor(1.00000e-07 *
- 2.8312)
- """
- def lu_unpack(
- LU_data: Tensor,
- LU_pivots: Tensor,
- unpack_data: _bool = True,
- unpack_pivots: _bool = True,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.lu_unpack:
- r"""
- lu_unpack(LU_data, LU_pivots, unpack_data=True, unpack_pivots=True, *, out=None) -> (Tensor, Tensor, Tensor)
- Unpacks the LU decomposition returned by :func:`~linalg.lu_factor` into the `P, L, U` matrices.
- .. seealso::
- :func:`~linalg.lu` returns the matrices from the LU decomposition. Its gradient formula is more efficient
- than that of doing :func:`~linalg.lu_factor` followed by :func:`~linalg.lu_unpack`.
- Args:
- LU_data (Tensor): the packed LU factorization data
- LU_pivots (Tensor): the packed LU factorization pivots
- unpack_data (bool): flag indicating if the data should be unpacked.
- If ``False``, then the returned ``L`` and ``U`` are empty tensors.
- Default: ``True``
- unpack_pivots (bool): flag indicating if the pivots should be unpacked into a permutation matrix ``P``.
- If ``False``, then the returned ``P`` is an empty tensor.
- Default: ``True``
- Keyword args:
- out (tuple, optional): output tuple of three tensors. Ignored if `None`.
- Returns:
- A namedtuple ``(P, L, U)``
- Examples::
- >>> A = torch.randn(2, 3, 3)
- >>> LU, pivots = torch.linalg.lu_factor(A)
- >>> P, L, U = torch.lu_unpack(LU, pivots)
- >>> # We can recover A from the factorization
- >>> A_ = P @ L @ U
- >>> torch.allclose(A, A_)
- True
- >>> # LU factorization of a rectangular matrix:
- >>> A = torch.randn(2, 3, 2)
- >>> LU, pivots = torch.linalg.lu_factor(A)
- >>> P, L, U = torch.lu_unpack(LU, pivots)
- >>> # P, L, U are the same as returned by linalg.lu
- >>> P_, L_, U_ = torch.linalg.lu(A)
- >>> torch.allclose(P, P_) and torch.allclose(L, L_) and torch.allclose(U, U_)
- True
- """
- def margin_ranking_loss(
- input1: Tensor,
- input2: Tensor,
- target: Tensor,
- margin: _float = 0.0,
- reduction: _int = 1,
- ) -> Tensor: ...
- @overload
- def masked_fill(input: Tensor, mask: Tensor, value: Tensor) -> Tensor: ...
- @overload
- def masked_fill(
- input: Tensor,
- mask: Tensor,
- value: Number | _complex,
- ) -> Tensor: ...
- def masked_scatter(input: Tensor, mask: Tensor, source: Tensor) -> Tensor: ...
- def masked_select(
- input: Tensor,
- mask: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- masked_select(input, mask, *, out=None) -> Tensor
- Returns a new 1-D tensor which indexes the :attr:`input` tensor according to
- the boolean mask :attr:`mask` which is a `BoolTensor`.
- The shapes of the :attr:`mask` tensor and the :attr:`input` tensor don't need
- to match, but they must be :ref:`broadcastable <broadcasting-semantics>`.
- .. note:: The returned tensor does **not** use the same storage
- as the original tensor
- Args:
- input (Tensor): the input tensor.
- mask (BoolTensor): the tensor containing the binary mask to index with
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> x = torch.randn(3, 4)
- >>> x
- tensor([[ 0.3552, -2.3825, -0.8297, 0.3477],
- [-1.2035, 1.2252, 0.5002, 0.6248],
- [ 0.1307, -2.0608, 0.1244, 2.0139]])
- >>> mask = x.ge(0.5)
- >>> mask
- tensor([[False, False, False, False],
- [False, True, True, True],
- [False, False, False, True]])
- >>> torch.masked_select(x, mask)
- tensor([ 1.2252, 0.5002, 0.6248, 2.0139])
- """
- def matmul(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- matmul(input, other, *, out=None) -> Tensor
- Matrix product of two tensors.
- The behavior depends on the dimensionality of the tensors as follows:
- - If both tensors are 1-dimensional, the dot product (scalar) is returned.
- - If both arguments are 2-dimensional, the matrix-matrix product is returned.
- - If the first argument is 1-dimensional and the second argument is 2-dimensional,
- a 1 is prepended to its dimension for the purpose of the matrix multiply.
- After the matrix multiply, the prepended dimension is removed.
- - If the first argument is 2-dimensional and the second argument is 1-dimensional,
- the matrix-vector product is returned.
- - If both arguments are at least 1-dimensional and at least one argument is
- N-dimensional (where N > 2), then a batched matrix multiply is returned. If the first
- argument is 1-dimensional, a 1 is prepended to its dimension for the purpose of the
- batched matrix multiply and removed after. If the second argument is 1-dimensional, a
- 1 is appended to its dimension for the purpose of the batched matrix multiply and removed after.
- The first N-2 dimensions of each argument, the batch dimensions, are
- :ref:`broadcast <broadcasting-semantics>` (and thus must be broadcastable).
- The last 2, the matrix dimensions, are handled as in the matrix-matrix product.
- For example, if :attr:`input` is a
- :math:`(j \times 1 \times n \times m)` tensor and :attr:`other` is a :math:`(k \times m \times p)`
- tensor, the batch dimensions are :math:`(j \times 1)` and :math:`(k)`,
- and the matrix dimensions are :math:`(n \times m)` and :math:`(m \times p)`.
- :attr:`out` will be a :math:`(j \times k \times n \times p)` tensor.
- This operation has support for arguments with :ref:`sparse layouts<sparse-docs>`. In particular the
- matrix-matrix (both arguments 2-dimensional) supports sparse arguments with the same restrictions
- as :func:`torch.mm`
- .. warning::
- Sparse support is a beta feature and some layout(s)/dtype/device combinations may not be supported,
- or may not have autograd support. If you notice missing functionality please
- open a feature request.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- .. note::
- The 1-dimensional dot product version of this function does not support an :attr:`out` parameter.
- Arguments:
- input (Tensor): the first tensor to be multiplied
- other (Tensor): the second tensor to be multiplied
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> # vector x vector
- >>> tensor1 = torch.randn(3)
- >>> tensor2 = torch.randn(3)
- >>> torch.matmul(tensor1, tensor2).size()
- torch.Size([])
- >>> # matrix x vector
- >>> tensor1 = torch.randn(3, 4)
- >>> tensor2 = torch.randn(4)
- >>> torch.matmul(tensor1, tensor2).size()
- torch.Size([3])
- >>> # batched matrix x broadcasted vector
- >>> tensor1 = torch.randn(10, 3, 4)
- >>> tensor2 = torch.randn(4)
- >>> torch.matmul(tensor1, tensor2).size()
- torch.Size([10, 3])
- >>> # batched matrix x batched matrix
- >>> tensor1 = torch.randn(10, 3, 4)
- >>> tensor2 = torch.randn(10, 4, 5)
- >>> torch.matmul(tensor1, tensor2).size()
- torch.Size([10, 3, 5])
- >>> # batched matrix x broadcasted matrix
- >>> tensor1 = torch.randn(10, 3, 4)
- >>> tensor2 = torch.randn(4, 5)
- >>> torch.matmul(tensor1, tensor2).size()
- torch.Size([10, 3, 5])
- """
- def matrix_exp(input: Tensor) -> Tensor:
- r"""
- matrix_exp(A) -> Tensor
- Alias for :func:`torch.linalg.matrix_exp`.
- """
- def matrix_power(
- input: Tensor,
- n: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- matrix_power(input, n, *, out=None) -> Tensor
- Alias for :func:`torch.linalg.matrix_power`
- """
- @overload
- def max(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- max(input, *, out=None) -> Tensor
- Returns the maximum value of all elements in the ``input`` tensor.
- .. note::
- The difference between ``max``/``min`` and ``amax``/``amin`` is:
- - ``amax``/``amin`` supports reducing on multiple dimensions,
- - ``amax``/``amin`` does not return indices.
- Both ``amax``/``amin`` evenly distribute gradients between equal values
- when there are multiple input elements with the same minimum or maximum value.
- For ``max``/``min``:
- - If reduce over all dimensions(no dim specified), gradients evenly distribute between equally ``max``/``min`` values.
- - If reduce over one specified axis, only propagate to the indexed element.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.6763, 0.7445, -2.2369]])
- >>> torch.max(a)
- tensor(0.7445)
- .. function:: max(input, dim, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` is the maximum
- value of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`. And ``indices`` is the index location of each maximum value found
- (argmax).
- If ``keepdim`` is ``True``, the output tensors are of the same size
- as ``input`` except in the dimension ``dim`` where they are of size 1.
- Otherwise, ``dim`` is squeezed (see :func:`torch.squeeze`), resulting
- in the output tensors having 1 fewer dimension than ``input``.
- .. note:: If there are multiple maximal values in a reduced row then
- the indices of the first maximal value are returned.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce. If omitted, all dimensions are reduced. Explicit ``None`` is not supported.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the result tuple of two output tensors (max, max_indices)
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-1.2360, -0.2942, -0.1222, 0.8475],
- [ 1.1949, -1.1127, -2.2379, -0.6702],
- [ 1.5717, -0.9207, 0.1297, -1.8768],
- [-0.6172, 1.0036, -0.6060, -0.2432]])
- >>> torch.max(a, 1)
- torch.return_types.max(values=tensor([0.8475, 1.1949, 1.5717, 1.0036]), indices=tensor([3, 0, 0, 1]))
- >>> a = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
- >>> a.max(dim=1, keepdim=True)
- torch.return_types.max(
- values=tensor([[2.], [4.]]),
- indices=tensor([[1], [1]]))
- >>> a.max(dim=1, keepdim=False)
- torch.return_types.max(
- values=tensor([2., 4.]),
- indices=tensor([1, 1]))
- .. function:: max(input, other, *, out=None) -> Tensor
- :noindex:
- See :func:`torch.maximum`.
- """
- @overload
- def max(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- max(input, *, out=None) -> Tensor
- Returns the maximum value of all elements in the ``input`` tensor.
- .. note::
- The difference between ``max``/``min`` and ``amax``/``amin`` is:
- - ``amax``/``amin`` supports reducing on multiple dimensions,
- - ``amax``/``amin`` does not return indices.
- Both ``amax``/``amin`` evenly distribute gradients between equal values
- when there are multiple input elements with the same minimum or maximum value.
- For ``max``/``min``:
- - If reduce over all dimensions(no dim specified), gradients evenly distribute between equally ``max``/``min`` values.
- - If reduce over one specified axis, only propagate to the indexed element.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.6763, 0.7445, -2.2369]])
- >>> torch.max(a)
- tensor(0.7445)
- .. function:: max(input, dim, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` is the maximum
- value of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`. And ``indices`` is the index location of each maximum value found
- (argmax).
- If ``keepdim`` is ``True``, the output tensors are of the same size
- as ``input`` except in the dimension ``dim`` where they are of size 1.
- Otherwise, ``dim`` is squeezed (see :func:`torch.squeeze`), resulting
- in the output tensors having 1 fewer dimension than ``input``.
- .. note:: If there are multiple maximal values in a reduced row then
- the indices of the first maximal value are returned.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce. If omitted, all dimensions are reduced. Explicit ``None`` is not supported.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the result tuple of two output tensors (max, max_indices)
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-1.2360, -0.2942, -0.1222, 0.8475],
- [ 1.1949, -1.1127, -2.2379, -0.6702],
- [ 1.5717, -0.9207, 0.1297, -1.8768],
- [-0.6172, 1.0036, -0.6060, -0.2432]])
- >>> torch.max(a, 1)
- torch.return_types.max(values=tensor([0.8475, 1.1949, 1.5717, 1.0036]), indices=tensor([3, 0, 0, 1]))
- >>> a = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
- >>> a.max(dim=1, keepdim=True)
- torch.return_types.max(
- values=tensor([[2.], [4.]]),
- indices=tensor([[1], [1]]))
- >>> a.max(dim=1, keepdim=False)
- torch.return_types.max(
- values=tensor([2., 4.]),
- indices=tensor([1, 1]))
- .. function:: max(input, other, *, out=None) -> Tensor
- :noindex:
- See :func:`torch.maximum`.
- """
- @overload
- def max(
- input: Tensor,
- dim: _int,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.max:
- r"""
- max(input, *, out=None) -> Tensor
- Returns the maximum value of all elements in the ``input`` tensor.
- .. note::
- The difference between ``max``/``min`` and ``amax``/``amin`` is:
- - ``amax``/``amin`` supports reducing on multiple dimensions,
- - ``amax``/``amin`` does not return indices.
- Both ``amax``/``amin`` evenly distribute gradients between equal values
- when there are multiple input elements with the same minimum or maximum value.
- For ``max``/``min``:
- - If reduce over all dimensions(no dim specified), gradients evenly distribute between equally ``max``/``min`` values.
- - If reduce over one specified axis, only propagate to the indexed element.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.6763, 0.7445, -2.2369]])
- >>> torch.max(a)
- tensor(0.7445)
- .. function:: max(input, dim, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` is the maximum
- value of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`. And ``indices`` is the index location of each maximum value found
- (argmax).
- If ``keepdim`` is ``True``, the output tensors are of the same size
- as ``input`` except in the dimension ``dim`` where they are of size 1.
- Otherwise, ``dim`` is squeezed (see :func:`torch.squeeze`), resulting
- in the output tensors having 1 fewer dimension than ``input``.
- .. note:: If there are multiple maximal values in a reduced row then
- the indices of the first maximal value are returned.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce. If omitted, all dimensions are reduced. Explicit ``None`` is not supported.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the result tuple of two output tensors (max, max_indices)
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-1.2360, -0.2942, -0.1222, 0.8475],
- [ 1.1949, -1.1127, -2.2379, -0.6702],
- [ 1.5717, -0.9207, 0.1297, -1.8768],
- [-0.6172, 1.0036, -0.6060, -0.2432]])
- >>> torch.max(a, 1)
- torch.return_types.max(values=tensor([0.8475, 1.1949, 1.5717, 1.0036]), indices=tensor([3, 0, 0, 1]))
- >>> a = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
- >>> a.max(dim=1, keepdim=True)
- torch.return_types.max(
- values=tensor([[2.], [4.]]),
- indices=tensor([[1], [1]]))
- >>> a.max(dim=1, keepdim=False)
- torch.return_types.max(
- values=tensor([2., 4.]),
- indices=tensor([1, 1]))
- .. function:: max(input, other, *, out=None) -> Tensor
- :noindex:
- See :func:`torch.maximum`.
- """
- @overload
- def max(
- input: Tensor,
- dim: str | EllipsisType | None,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.max:
- r"""
- max(input, *, out=None) -> Tensor
- Returns the maximum value of all elements in the ``input`` tensor.
- .. note::
- The difference between ``max``/``min`` and ``amax``/``amin`` is:
- - ``amax``/``amin`` supports reducing on multiple dimensions,
- - ``amax``/``amin`` does not return indices.
- Both ``amax``/``amin`` evenly distribute gradients between equal values
- when there are multiple input elements with the same minimum or maximum value.
- For ``max``/``min``:
- - If reduce over all dimensions(no dim specified), gradients evenly distribute between equally ``max``/``min`` values.
- - If reduce over one specified axis, only propagate to the indexed element.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.6763, 0.7445, -2.2369]])
- >>> torch.max(a)
- tensor(0.7445)
- .. function:: max(input, dim, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` is the maximum
- value of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`. And ``indices`` is the index location of each maximum value found
- (argmax).
- If ``keepdim`` is ``True``, the output tensors are of the same size
- as ``input`` except in the dimension ``dim`` where they are of size 1.
- Otherwise, ``dim`` is squeezed (see :func:`torch.squeeze`), resulting
- in the output tensors having 1 fewer dimension than ``input``.
- .. note:: If there are multiple maximal values in a reduced row then
- the indices of the first maximal value are returned.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce. If omitted, all dimensions are reduced. Explicit ``None`` is not supported.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the result tuple of two output tensors (max, max_indices)
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-1.2360, -0.2942, -0.1222, 0.8475],
- [ 1.1949, -1.1127, -2.2379, -0.6702],
- [ 1.5717, -0.9207, 0.1297, -1.8768],
- [-0.6172, 1.0036, -0.6060, -0.2432]])
- >>> torch.max(a, 1)
- torch.return_types.max(values=tensor([0.8475, 1.1949, 1.5717, 1.0036]), indices=tensor([3, 0, 0, 1]))
- >>> a = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
- >>> a.max(dim=1, keepdim=True)
- torch.return_types.max(
- values=tensor([[2.], [4.]]),
- indices=tensor([[1], [1]]))
- >>> a.max(dim=1, keepdim=False)
- torch.return_types.max(
- values=tensor([2., 4.]),
- indices=tensor([1, 1]))
- .. function:: max(input, other, *, out=None) -> Tensor
- :noindex:
- See :func:`torch.maximum`.
- """
- def max_pool1d(
- input: Tensor,
- kernel_size: _int | _size,
- stride: _int | _size = (),
- padding: _int | _size = 0,
- dilation: _int | _size = 1,
- ceil_mode: _bool = False,
- ) -> Tensor: ...
- def max_pool1d_with_indices(
- input: Tensor,
- kernel_size: _int | _size,
- stride: _int | _size = (),
- padding: _int | _size = 0,
- dilation: _int | _size = 1,
- ceil_mode: _bool = False,
- ) -> tuple[Tensor, Tensor]: ...
- def max_pool2d(
- input: Tensor,
- kernel_size: _int | _size,
- stride: _int | _size = (),
- padding: _int | _size = 0,
- dilation: _int | _size = 1,
- ceil_mode: _bool = False,
- ) -> Tensor: ...
- def max_pool3d(
- input: Tensor,
- kernel_size: _int | _size,
- stride: _int | _size = (),
- padding: _int | _size = 0,
- dilation: _int | _size = 1,
- ceil_mode: _bool = False,
- ) -> Tensor: ...
- def maximum(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- maximum(input, other, *, out=None) -> Tensor
- Computes the element-wise maximum of :attr:`input` and :attr:`other`.
- .. note::
- If one of the elements being compared is a NaN, then that element is returned.
- :func:`maximum` is not supported for tensors with complex dtypes.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor((1, 2, -1))
- >>> b = torch.tensor((3, 0, 4))
- >>> torch.maximum(a, b)
- tensor([3, 2, 4])
- """
- @overload
- def mean(
- input: Tensor,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- mean(input, *, dtype=None) -> Tensor
- .. note::
- If the `input` tensor is empty, ``torch.mean()`` returns ``nan``.
- This behavior is consistent with NumPy and follows the definition
- that the mean over an empty set is undefined.
- Returns the mean value of all elements in the :attr:`input` tensor. Input must be floating point or complex.
- Args:
- input (Tensor):
- the input tensor, either of floating point or complex dtype
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.2294, -0.5481, 1.3288]])
- >>> torch.mean(a)
- tensor(0.3367)
- .. function:: mean(input, dim, keepdim=False, *, dtype=None, out=None) -> Tensor
- :noindex:
- Returns the mean value of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim`. If :attr:`dim` is a list of dimensions,
- reduce over all of them.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- out (Tensor, optional): the output tensor.
- .. seealso::
- :func:`torch.nanmean` computes the mean value of `non-NaN` elements.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-0.3841, 0.6320, 0.4254, -0.7384],
- [-0.9644, 1.0131, -0.6549, -1.4279],
- [-0.2951, -1.3350, -0.7694, 0.5600],
- [ 1.0842, -0.9580, 0.3623, 0.2343]])
- >>> torch.mean(a, 1)
- tensor([-0.0163, -0.5085, -0.4599, 0.1807])
- >>> torch.mean(a, 1, True)
- tensor([[-0.0163],
- [-0.5085],
- [-0.4599],
- [ 0.1807]])
- """
- @overload
- def mean(
- input: Tensor,
- dim: _int | _size | None,
- keepdim: _bool = False,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- mean(input, *, dtype=None) -> Tensor
- .. note::
- If the `input` tensor is empty, ``torch.mean()`` returns ``nan``.
- This behavior is consistent with NumPy and follows the definition
- that the mean over an empty set is undefined.
- Returns the mean value of all elements in the :attr:`input` tensor. Input must be floating point or complex.
- Args:
- input (Tensor):
- the input tensor, either of floating point or complex dtype
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.2294, -0.5481, 1.3288]])
- >>> torch.mean(a)
- tensor(0.3367)
- .. function:: mean(input, dim, keepdim=False, *, dtype=None, out=None) -> Tensor
- :noindex:
- Returns the mean value of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim`. If :attr:`dim` is a list of dimensions,
- reduce over all of them.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- out (Tensor, optional): the output tensor.
- .. seealso::
- :func:`torch.nanmean` computes the mean value of `non-NaN` elements.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-0.3841, 0.6320, 0.4254, -0.7384],
- [-0.9644, 1.0131, -0.6549, -1.4279],
- [-0.2951, -1.3350, -0.7694, 0.5600],
- [ 1.0842, -0.9580, 0.3623, 0.2343]])
- >>> torch.mean(a, 1)
- tensor([-0.0163, -0.5085, -0.4599, 0.1807])
- >>> torch.mean(a, 1, True)
- tensor([[-0.0163],
- [-0.5085],
- [-0.4599],
- [ 0.1807]])
- """
- @overload
- def mean(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- keepdim: _bool = False,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- mean(input, *, dtype=None) -> Tensor
- .. note::
- If the `input` tensor is empty, ``torch.mean()`` returns ``nan``.
- This behavior is consistent with NumPy and follows the definition
- that the mean over an empty set is undefined.
- Returns the mean value of all elements in the :attr:`input` tensor. Input must be floating point or complex.
- Args:
- input (Tensor):
- the input tensor, either of floating point or complex dtype
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.2294, -0.5481, 1.3288]])
- >>> torch.mean(a)
- tensor(0.3367)
- .. function:: mean(input, dim, keepdim=False, *, dtype=None, out=None) -> Tensor
- :noindex:
- Returns the mean value of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim`. If :attr:`dim` is a list of dimensions,
- reduce over all of them.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- out (Tensor, optional): the output tensor.
- .. seealso::
- :func:`torch.nanmean` computes the mean value of `non-NaN` elements.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-0.3841, 0.6320, 0.4254, -0.7384],
- [-0.9644, 1.0131, -0.6549, -1.4279],
- [-0.2951, -1.3350, -0.7694, 0.5600],
- [ 1.0842, -0.9580, 0.3623, 0.2343]])
- >>> torch.mean(a, 1)
- tensor([-0.0163, -0.5085, -0.4599, 0.1807])
- >>> torch.mean(a, 1, True)
- tensor([[-0.0163],
- [-0.5085],
- [-0.4599],
- [ 0.1807]])
- """
- @overload
- def median(input: Tensor) -> Tensor:
- r"""
- median(input) -> Tensor
- Returns the median of the values in :attr:`input`.
- .. note::
- The median is not unique for :attr:`input` tensors with an even number
- of elements. In this case the lower of the two medians is returned. To
- compute the mean of both medians, use :func:`torch.quantile` with ``q=0.5`` instead.
- .. warning::
- This function produces deterministic (sub)gradients unlike ``median(dim=0)``
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 1.5219, -1.5212, 0.2202]])
- >>> torch.median(a)
- tensor(0.2202)
- .. function:: median(input, dim=-1, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` contains the median of each row of :attr:`input`
- in the dimension :attr:`dim`, and ``indices`` contains the index of the median values found in the dimension :attr:`dim`.
- By default, :attr:`dim` is the last dimension of the :attr:`input` tensor.
- If :attr:`keepdim` is ``True``, the output tensors are of the same size
- as :attr:`input` except in the dimension :attr:`dim` where they are of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in
- the outputs tensor having 1 fewer dimension than :attr:`input`.
- .. note::
- The median is not unique for :attr:`input` tensors with an even number
- of elements in the dimension :attr:`dim`. In this case the lower of the
- two medians is returned. To compute the mean of both medians in
- :attr:`input`, use :func:`torch.quantile` with ``q=0.5`` instead.
- .. warning::
- ``indices`` does not necessarily contain the first occurrence of each
- median value found, unless it is unique.
- The exact implementation details are device-specific.
- Do not expect the same result when run on CPU and GPU in general.
- For the same reason do not expect the gradients to be deterministic.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out ((Tensor, Tensor), optional): The first tensor will be populated with the median values and the second
- tensor, which must have dtype long, with their indices in the dimension
- :attr:`dim` of :attr:`input`.
- Example::
- >>> a = torch.randn(4, 5)
- >>> a
- tensor([[ 0.2505, -0.3982, -0.9948, 0.3518, -1.3131],
- [ 0.3180, -0.6993, 1.0436, 0.0438, 0.2270],
- [-0.2751, 0.7303, 0.2192, 0.3321, 0.2488],
- [ 1.0778, -1.9510, 0.7048, 0.4742, -0.7125]])
- >>> torch.median(a, 1)
- torch.return_types.median(values=tensor([-0.3982, 0.2270, 0.2488, 0.4742]), indices=tensor([1, 4, 4, 3]))
- """
- @overload
- def median(
- input: Tensor,
- dim: _int,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.median:
- r"""
- median(input) -> Tensor
- Returns the median of the values in :attr:`input`.
- .. note::
- The median is not unique for :attr:`input` tensors with an even number
- of elements. In this case the lower of the two medians is returned. To
- compute the mean of both medians, use :func:`torch.quantile` with ``q=0.5`` instead.
- .. warning::
- This function produces deterministic (sub)gradients unlike ``median(dim=0)``
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 1.5219, -1.5212, 0.2202]])
- >>> torch.median(a)
- tensor(0.2202)
- .. function:: median(input, dim=-1, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` contains the median of each row of :attr:`input`
- in the dimension :attr:`dim`, and ``indices`` contains the index of the median values found in the dimension :attr:`dim`.
- By default, :attr:`dim` is the last dimension of the :attr:`input` tensor.
- If :attr:`keepdim` is ``True``, the output tensors are of the same size
- as :attr:`input` except in the dimension :attr:`dim` where they are of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in
- the outputs tensor having 1 fewer dimension than :attr:`input`.
- .. note::
- The median is not unique for :attr:`input` tensors with an even number
- of elements in the dimension :attr:`dim`. In this case the lower of the
- two medians is returned. To compute the mean of both medians in
- :attr:`input`, use :func:`torch.quantile` with ``q=0.5`` instead.
- .. warning::
- ``indices`` does not necessarily contain the first occurrence of each
- median value found, unless it is unique.
- The exact implementation details are device-specific.
- Do not expect the same result when run on CPU and GPU in general.
- For the same reason do not expect the gradients to be deterministic.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out ((Tensor, Tensor), optional): The first tensor will be populated with the median values and the second
- tensor, which must have dtype long, with their indices in the dimension
- :attr:`dim` of :attr:`input`.
- Example::
- >>> a = torch.randn(4, 5)
- >>> a
- tensor([[ 0.2505, -0.3982, -0.9948, 0.3518, -1.3131],
- [ 0.3180, -0.6993, 1.0436, 0.0438, 0.2270],
- [-0.2751, 0.7303, 0.2192, 0.3321, 0.2488],
- [ 1.0778, -1.9510, 0.7048, 0.4742, -0.7125]])
- >>> torch.median(a, 1)
- torch.return_types.median(values=tensor([-0.3982, 0.2270, 0.2488, 0.4742]), indices=tensor([1, 4, 4, 3]))
- """
- @overload
- def median(
- input: Tensor,
- dim: str | EllipsisType | None,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.median:
- r"""
- median(input) -> Tensor
- Returns the median of the values in :attr:`input`.
- .. note::
- The median is not unique for :attr:`input` tensors with an even number
- of elements. In this case the lower of the two medians is returned. To
- compute the mean of both medians, use :func:`torch.quantile` with ``q=0.5`` instead.
- .. warning::
- This function produces deterministic (sub)gradients unlike ``median(dim=0)``
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 1.5219, -1.5212, 0.2202]])
- >>> torch.median(a)
- tensor(0.2202)
- .. function:: median(input, dim=-1, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` contains the median of each row of :attr:`input`
- in the dimension :attr:`dim`, and ``indices`` contains the index of the median values found in the dimension :attr:`dim`.
- By default, :attr:`dim` is the last dimension of the :attr:`input` tensor.
- If :attr:`keepdim` is ``True``, the output tensors are of the same size
- as :attr:`input` except in the dimension :attr:`dim` where they are of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in
- the outputs tensor having 1 fewer dimension than :attr:`input`.
- .. note::
- The median is not unique for :attr:`input` tensors with an even number
- of elements in the dimension :attr:`dim`. In this case the lower of the
- two medians is returned. To compute the mean of both medians in
- :attr:`input`, use :func:`torch.quantile` with ``q=0.5`` instead.
- .. warning::
- ``indices`` does not necessarily contain the first occurrence of each
- median value found, unless it is unique.
- The exact implementation details are device-specific.
- Do not expect the same result when run on CPU and GPU in general.
- For the same reason do not expect the gradients to be deterministic.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out ((Tensor, Tensor), optional): The first tensor will be populated with the median values and the second
- tensor, which must have dtype long, with their indices in the dimension
- :attr:`dim` of :attr:`input`.
- Example::
- >>> a = torch.randn(4, 5)
- >>> a
- tensor([[ 0.2505, -0.3982, -0.9948, 0.3518, -1.3131],
- [ 0.3180, -0.6993, 1.0436, 0.0438, 0.2270],
- [-0.2751, 0.7303, 0.2192, 0.3321, 0.2488],
- [ 1.0778, -1.9510, 0.7048, 0.4742, -0.7125]])
- >>> torch.median(a, 1)
- torch.return_types.median(values=tensor([-0.3982, 0.2270, 0.2488, 0.4742]), indices=tensor([1, 4, 4, 3]))
- """
- @overload
- def min(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- min(input, *, out=None) -> Tensor
- Returns the minimum value of all elements in the :attr:`input` tensor.
- .. note::
- The difference between ``max``/``min`` and ``amax``/``amin`` is:
- - ``amax``/``amin`` supports reducing on multiple dimensions,
- - ``amax``/``amin`` does not return indices.
- Both ``amax``/``amin`` evenly distribute gradients between equal values
- when there are multiple input elements with the same minimum or maximum value.
- For ``max``/``min``:
- - If reduce over all dimensions(no dim specified), gradients evenly distribute between equally ``max``/``min`` values.
- - If reduce over one specified axis, only propagate to the indexed element.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.6750, 1.0857, 1.7197]])
- >>> torch.min(a)
- tensor(0.6750)
- .. function:: min(input, dim, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` is the minimum
- value of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`. And ``indices`` is the index location of each minimum value found
- (argmin).
- If :attr:`keepdim` is ``True``, the output tensors are of the same size as
- :attr:`input` except in the dimension :attr:`dim` where they are of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in
- the output tensors having 1 fewer dimension than :attr:`input`.
- .. note:: If there are multiple minimal values in a reduced row then
- the indices of the first minimal value are returned.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce. If omitted, all dimensions are reduced. Explicit ``None`` is not supported.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the tuple of two output tensors (min, min_indices)
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-0.6248, 1.1334, -1.1899, -0.2803],
- [-1.4644, -0.2635, -0.3651, 0.6134],
- [ 0.2457, 0.0384, 1.0128, 0.7015],
- [-0.1153, 2.9849, 2.1458, 0.5788]])
- >>> torch.min(a, 1)
- torch.return_types.min(values=tensor([-1.1899, -1.4644, 0.0384, -0.1153]), indices=tensor([2, 0, 1, 0]))
- .. function:: min(input, other, *, out=None) -> Tensor
- :noindex:
- See :func:`torch.minimum`.
- """
- @overload
- def min(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- min(input, *, out=None) -> Tensor
- Returns the minimum value of all elements in the :attr:`input` tensor.
- .. note::
- The difference between ``max``/``min`` and ``amax``/``amin`` is:
- - ``amax``/``amin`` supports reducing on multiple dimensions,
- - ``amax``/``amin`` does not return indices.
- Both ``amax``/``amin`` evenly distribute gradients between equal values
- when there are multiple input elements with the same minimum or maximum value.
- For ``max``/``min``:
- - If reduce over all dimensions(no dim specified), gradients evenly distribute between equally ``max``/``min`` values.
- - If reduce over one specified axis, only propagate to the indexed element.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.6750, 1.0857, 1.7197]])
- >>> torch.min(a)
- tensor(0.6750)
- .. function:: min(input, dim, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` is the minimum
- value of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`. And ``indices`` is the index location of each minimum value found
- (argmin).
- If :attr:`keepdim` is ``True``, the output tensors are of the same size as
- :attr:`input` except in the dimension :attr:`dim` where they are of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in
- the output tensors having 1 fewer dimension than :attr:`input`.
- .. note:: If there are multiple minimal values in a reduced row then
- the indices of the first minimal value are returned.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce. If omitted, all dimensions are reduced. Explicit ``None`` is not supported.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the tuple of two output tensors (min, min_indices)
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-0.6248, 1.1334, -1.1899, -0.2803],
- [-1.4644, -0.2635, -0.3651, 0.6134],
- [ 0.2457, 0.0384, 1.0128, 0.7015],
- [-0.1153, 2.9849, 2.1458, 0.5788]])
- >>> torch.min(a, 1)
- torch.return_types.min(values=tensor([-1.1899, -1.4644, 0.0384, -0.1153]), indices=tensor([2, 0, 1, 0]))
- .. function:: min(input, other, *, out=None) -> Tensor
- :noindex:
- See :func:`torch.minimum`.
- """
- @overload
- def min(
- input: Tensor,
- dim: _int,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.min:
- r"""
- min(input, *, out=None) -> Tensor
- Returns the minimum value of all elements in the :attr:`input` tensor.
- .. note::
- The difference between ``max``/``min`` and ``amax``/``amin`` is:
- - ``amax``/``amin`` supports reducing on multiple dimensions,
- - ``amax``/``amin`` does not return indices.
- Both ``amax``/``amin`` evenly distribute gradients between equal values
- when there are multiple input elements with the same minimum or maximum value.
- For ``max``/``min``:
- - If reduce over all dimensions(no dim specified), gradients evenly distribute between equally ``max``/``min`` values.
- - If reduce over one specified axis, only propagate to the indexed element.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.6750, 1.0857, 1.7197]])
- >>> torch.min(a)
- tensor(0.6750)
- .. function:: min(input, dim, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` is the minimum
- value of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`. And ``indices`` is the index location of each minimum value found
- (argmin).
- If :attr:`keepdim` is ``True``, the output tensors are of the same size as
- :attr:`input` except in the dimension :attr:`dim` where they are of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in
- the output tensors having 1 fewer dimension than :attr:`input`.
- .. note:: If there are multiple minimal values in a reduced row then
- the indices of the first minimal value are returned.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce. If omitted, all dimensions are reduced. Explicit ``None`` is not supported.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the tuple of two output tensors (min, min_indices)
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-0.6248, 1.1334, -1.1899, -0.2803],
- [-1.4644, -0.2635, -0.3651, 0.6134],
- [ 0.2457, 0.0384, 1.0128, 0.7015],
- [-0.1153, 2.9849, 2.1458, 0.5788]])
- >>> torch.min(a, 1)
- torch.return_types.min(values=tensor([-1.1899, -1.4644, 0.0384, -0.1153]), indices=tensor([2, 0, 1, 0]))
- .. function:: min(input, other, *, out=None) -> Tensor
- :noindex:
- See :func:`torch.minimum`.
- """
- @overload
- def min(
- input: Tensor,
- dim: str | EllipsisType | None,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.min:
- r"""
- min(input, *, out=None) -> Tensor
- Returns the minimum value of all elements in the :attr:`input` tensor.
- .. note::
- The difference between ``max``/``min`` and ``amax``/``amin`` is:
- - ``amax``/``amin`` supports reducing on multiple dimensions,
- - ``amax``/``amin`` does not return indices.
- Both ``amax``/``amin`` evenly distribute gradients between equal values
- when there are multiple input elements with the same minimum or maximum value.
- For ``max``/``min``:
- - If reduce over all dimensions(no dim specified), gradients evenly distribute between equally ``max``/``min`` values.
- - If reduce over one specified axis, only propagate to the indexed element.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.6750, 1.0857, 1.7197]])
- >>> torch.min(a)
- tensor(0.6750)
- .. function:: min(input, dim, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` is the minimum
- value of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`. And ``indices`` is the index location of each minimum value found
- (argmin).
- If :attr:`keepdim` is ``True``, the output tensors are of the same size as
- :attr:`input` except in the dimension :attr:`dim` where they are of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in
- the output tensors having 1 fewer dimension than :attr:`input`.
- .. note:: If there are multiple minimal values in a reduced row then
- the indices of the first minimal value are returned.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce. If omitted, all dimensions are reduced. Explicit ``None`` is not supported.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the tuple of two output tensors (min, min_indices)
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[-0.6248, 1.1334, -1.1899, -0.2803],
- [-1.4644, -0.2635, -0.3651, 0.6134],
- [ 0.2457, 0.0384, 1.0128, 0.7015],
- [-0.1153, 2.9849, 2.1458, 0.5788]])
- >>> torch.min(a, 1)
- torch.return_types.min(values=tensor([-1.1899, -1.4644, 0.0384, -0.1153]), indices=tensor([2, 0, 1, 0]))
- .. function:: min(input, other, *, out=None) -> Tensor
- :noindex:
- See :func:`torch.minimum`.
- """
- def minimum(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- minimum(input, other, *, out=None) -> Tensor
- Computes the element-wise minimum of :attr:`input` and :attr:`other`.
- .. note::
- If one of the elements being compared is a NaN, then that element is returned.
- :func:`minimum` is not supported for tensors with complex dtypes.
- Args:
- input (Tensor): the input tensor.
- other (Tensor): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor((1, 2, -1))
- >>> b = torch.tensor((3, 0, 4))
- >>> torch.minimum(a, b)
- tensor([1, 0, -1])
- """
- def miopen_batch_norm(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- running_mean: Tensor | None,
- running_var: Tensor | None,
- training: _bool,
- exponential_average_factor: _float,
- epsilon: _float,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- def miopen_convolution(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- padding: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- benchmark: _bool,
- deterministic: _bool,
- ) -> Tensor: ...
- def miopen_convolution_add_relu(
- input: Tensor,
- weight: Tensor,
- z: Tensor,
- alpha: Number | _complex | None,
- bias: Tensor | None,
- stride: Sequence[_int | SymInt],
- padding: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- ) -> Tensor: ...
- def miopen_convolution_relu(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- stride: Sequence[_int | SymInt],
- padding: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- ) -> Tensor: ...
- def miopen_convolution_transpose(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- padding: Sequence[_int | SymInt],
- output_padding: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- benchmark: _bool,
- deterministic: _bool,
- ) -> Tensor: ...
- @overload
- def miopen_ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: _size,
- target_lengths: _size,
- blank: _int,
- deterministic: _bool,
- zero_infinity: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- @overload
- def miopen_ctc_loss(
- log_probs: Tensor,
- targets: Tensor,
- input_lengths: Tensor,
- target_lengths: Tensor,
- blank: _int,
- deterministic: _bool,
- zero_infinity: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- def miopen_depthwise_convolution(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- padding: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- benchmark: _bool,
- deterministic: _bool,
- ) -> Tensor: ...
- def miopen_rnn(
- input: Tensor,
- weight: tuple[Tensor, ...] | list[Tensor] | None,
- weight_stride0: _int,
- hx: Tensor,
- cx: Tensor | None,
- mode: _int,
- hidden_size: _int,
- num_layers: _int,
- batch_first: _bool,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- batch_sizes: _size,
- dropout_state: Tensor | None,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor, Tensor]: ...
- def mkldnn_adaptive_avg_pool2d(
- input: Tensor,
- output_size: _int | _size,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def mkldnn_convolution(
- input: Tensor,
- weight: Tensor,
- bias: Tensor | None,
- padding: Sequence[_int | SymInt],
- stride: Sequence[_int | SymInt],
- dilation: Sequence[_int | SymInt],
- groups: _int | SymInt,
- ) -> Tensor: ...
- def mkldnn_linear_backward_weights(
- grad_output: Tensor,
- input: Tensor,
- weight: Tensor,
- bias_defined: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- def mkldnn_max_pool2d(
- input: Tensor,
- kernel_size: _int | _size,
- stride: _int | _size = (),
- padding: _int | _size = 0,
- dilation: _int | _size = 1,
- ceil_mode: _bool = False,
- ) -> Tensor: ...
- def mkldnn_max_pool3d(
- input: Tensor,
- kernel_size: _int | _size,
- stride: _int | _size = (),
- padding: _int | _size = 0,
- dilation: _int | _size = 1,
- ceil_mode: _bool = False,
- ) -> Tensor: ...
- def mkldnn_rnn_layer(
- input: Tensor,
- weight0: Tensor,
- weight1: Tensor,
- weight2: Tensor,
- weight3: Tensor,
- hx_: Tensor,
- cx_: Tensor,
- reverse: _bool,
- batch_sizes: _size,
- mode: _int,
- hidden_size: _int,
- num_layers: _int,
- has_biases: _bool,
- bidirectional: _bool,
- batch_first: _bool,
- train: _bool,
- ) -> tuple[Tensor, Tensor, Tensor, Tensor]: ...
- @overload
- def mm(input: Tensor, mat2: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- mm(input, mat2, out_dtype=None, *, out=None) -> Tensor
- Performs a matrix multiplication of the matrices :attr:`input` and :attr:`mat2`.
- If :attr:`input` is a :math:`(n \times m)` tensor, :attr:`mat2` is a
- :math:`(m \times p)` tensor, :attr:`out` will be a :math:`(n \times p)` tensor.
- .. note:: This function does not :ref:`broadcast <broadcasting-semantics>`.
- For broadcasting matrix products, see :func:`torch.matmul`.
- Supports strided and sparse 2-D tensors as inputs, autograd with
- respect to strided inputs.
- This operation has support for arguments with :ref:`sparse layouts<sparse-docs>`.
- If :attr:`out` is provided its layout will be used. Otherwise, the result
- layout will be deduced from that of :attr:`input`.
- .. warning::
- Sparse support is a beta feature and some layout(s)/dtype/device combinations may not be supported,
- or may not have autograd support. If you notice missing functionality please
- open a feature request.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): the first matrix to be matrix multiplied
- mat2 (Tensor): the second matrix to be matrix multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> mat1 = torch.randn(2, 3)
- >>> mat2 = torch.randn(3, 3)
- >>> torch.mm(mat1, mat2)
- tensor([[ 0.4851, 0.5037, -0.3633],
- [-0.0760, -3.6705, 2.4784]])
- """
- @overload
- def mm(
- input: Tensor,
- mat2: Tensor,
- out_dtype: _dtype,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- mm(input, mat2, out_dtype=None, *, out=None) -> Tensor
- Performs a matrix multiplication of the matrices :attr:`input` and :attr:`mat2`.
- If :attr:`input` is a :math:`(n \times m)` tensor, :attr:`mat2` is a
- :math:`(m \times p)` tensor, :attr:`out` will be a :math:`(n \times p)` tensor.
- .. note:: This function does not :ref:`broadcast <broadcasting-semantics>`.
- For broadcasting matrix products, see :func:`torch.matmul`.
- Supports strided and sparse 2-D tensors as inputs, autograd with
- respect to strided inputs.
- This operation has support for arguments with :ref:`sparse layouts<sparse-docs>`.
- If :attr:`out` is provided its layout will be used. Otherwise, the result
- layout will be deduced from that of :attr:`input`.
- .. warning::
- Sparse support is a beta feature and some layout(s)/dtype/device combinations may not be supported,
- or may not have autograd support. If you notice missing functionality please
- open a feature request.
- This operator supports :ref:`TensorFloat32<tf32_on_ampere>`.
- On certain ROCm devices, when using float16 inputs this module will use :ref:`different precision<fp16_on_mi200>` for backward.
- Args:
- input (Tensor): the first matrix to be matrix multiplied
- mat2 (Tensor): the second matrix to be matrix multiplied
- out_dtype (dtype, optional): the dtype of the output tensor,
- Supported only on CUDA and for torch.float32 given
- torch.float16/torch.bfloat16 input dtypes
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> mat1 = torch.randn(2, 3)
- >>> mat2 = torch.randn(3, 3)
- >>> torch.mm(mat1, mat2)
- tensor([[ 0.4851, 0.5037, -0.3633],
- [-0.0760, -3.6705, 2.4784]])
- """
- @overload
- def mode(
- input: Tensor,
- dim: _int = -1,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.mode:
- r"""
- mode(input, dim=-1, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- Returns a namedtuple ``(values, indices)`` where ``values`` is the mode
- value of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`, i.e. a value which appears most often
- in that row, and ``indices`` is the index location of each mode value found.
- By default, :attr:`dim` is the last dimension of the :attr:`input` tensor.
- If :attr:`keepdim` is ``True``, the output tensors are of the same size as
- :attr:`input` except in the dimension :attr:`dim` where they are of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting
- in the output tensors having 1 fewer dimension than :attr:`input`.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the result tuple of two output tensors (values, indices)
- Example::
- >>> b = torch.tensor([[0, 0, 0, 2, 0, 0, 2],
- ... [0, 3, 0, 0, 2, 0, 1],
- ... [2, 2, 2, 0, 0, 0, 3],
- ... [2, 2, 3, 0, 1, 1, 0],
- ... [1, 1, 0, 0, 2, 0, 2]])
- >>> torch.mode(b, 0)
- torch.return_types.mode(
- values=tensor([0, 2, 0, 0, 0, 0, 2]),
- indices=tensor([1, 3, 4, 4, 2, 4, 4]))
- """
- @overload
- def mode(
- input: Tensor,
- dim: str | EllipsisType | None,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.mode:
- r"""
- mode(input, dim=-1, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- Returns a namedtuple ``(values, indices)`` where ``values`` is the mode
- value of each row of the :attr:`input` tensor in the given dimension
- :attr:`dim`, i.e. a value which appears most often
- in that row, and ``indices`` is the index location of each mode value found.
- By default, :attr:`dim` is the last dimension of the :attr:`input` tensor.
- If :attr:`keepdim` is ``True``, the output tensors are of the same size as
- :attr:`input` except in the dimension :attr:`dim` where they are of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting
- in the output tensors having 1 fewer dimension than :attr:`input`.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out (tuple, optional): the result tuple of two output tensors (values, indices)
- Example::
- >>> b = torch.tensor([[0, 0, 0, 2, 0, 0, 2],
- ... [0, 3, 0, 0, 2, 0, 1],
- ... [2, 2, 2, 0, 0, 0, 3],
- ... [2, 2, 3, 0, 1, 1, 0],
- ... [1, 1, 0, 0, 2, 0, 2]])
- >>> torch.mode(b, 0)
- torch.return_types.mode(
- values=tensor([0, 2, 0, 0, 0, 0, 2]),
- indices=tensor([1, 3, 4, 4, 2, 4, 4]))
- """
- @overload
- def moveaxis(input: Tensor, source: _int, destination: _int) -> Tensor:
- r"""
- moveaxis(input, source, destination) -> Tensor
- Alias for :func:`torch.movedim`.
- This function is equivalent to NumPy's moveaxis function.
- Examples::
- >>> t = torch.randn(3,2,1)
- >>> t
- tensor([[[-0.3362],
- [-0.8437]],
- [[-0.9627],
- [ 0.1727]],
- [[ 0.5173],
- [-0.1398]]])
- >>> torch.moveaxis(t, 1, 0).shape
- torch.Size([2, 3, 1])
- >>> torch.moveaxis(t, 1, 0)
- tensor([[[-0.3362],
- [-0.9627],
- [ 0.5173]],
- [[-0.8437],
- [ 0.1727],
- [-0.1398]]])
- >>> torch.moveaxis(t, (1, 2), (0, 1)).shape
- torch.Size([2, 1, 3])
- >>> torch.moveaxis(t, (1, 2), (0, 1))
- tensor([[[-0.3362, -0.9627, 0.5173]],
- [[-0.8437, 0.1727, -0.1398]]])
- """
- @overload
- def moveaxis(input: Tensor, source: _size, destination: _size) -> Tensor:
- r"""
- moveaxis(input, source, destination) -> Tensor
- Alias for :func:`torch.movedim`.
- This function is equivalent to NumPy's moveaxis function.
- Examples::
- >>> t = torch.randn(3,2,1)
- >>> t
- tensor([[[-0.3362],
- [-0.8437]],
- [[-0.9627],
- [ 0.1727]],
- [[ 0.5173],
- [-0.1398]]])
- >>> torch.moveaxis(t, 1, 0).shape
- torch.Size([2, 3, 1])
- >>> torch.moveaxis(t, 1, 0)
- tensor([[[-0.3362],
- [-0.9627],
- [ 0.5173]],
- [[-0.8437],
- [ 0.1727],
- [-0.1398]]])
- >>> torch.moveaxis(t, (1, 2), (0, 1)).shape
- torch.Size([2, 1, 3])
- >>> torch.moveaxis(t, (1, 2), (0, 1))
- tensor([[[-0.3362, -0.9627, 0.5173]],
- [[-0.8437, 0.1727, -0.1398]]])
- """
- @overload
- def movedim(input: Tensor, source: _int, destination: _int) -> Tensor:
- r"""
- movedim(input, source, destination) -> Tensor
- Moves the dimension(s) of :attr:`input` at the position(s) in :attr:`source`
- to the position(s) in :attr:`destination`.
- Other dimensions of :attr:`input` that are not explicitly moved remain in
- their original order and appear at the positions not specified in :attr:`destination`.
- Args:
- input (Tensor): the input tensor.
- source (int or tuple of ints): Original positions of the dims to move. These must be unique.
- destination (int or tuple of ints): Destination positions for each of the original dims. These must also be unique.
- Examples::
- >>> t = torch.randn(3,2,1)
- >>> t
- tensor([[[-0.3362],
- [-0.8437]],
- [[-0.9627],
- [ 0.1727]],
- [[ 0.5173],
- [-0.1398]]])
- >>> torch.movedim(t, 1, 0).shape
- torch.Size([2, 3, 1])
- >>> torch.movedim(t, 1, 0)
- tensor([[[-0.3362],
- [-0.9627],
- [ 0.5173]],
- [[-0.8437],
- [ 0.1727],
- [-0.1398]]])
- >>> torch.movedim(t, (1, 2), (0, 1)).shape
- torch.Size([2, 1, 3])
- >>> torch.movedim(t, (1, 2), (0, 1))
- tensor([[[-0.3362, -0.9627, 0.5173]],
- [[-0.8437, 0.1727, -0.1398]]])
- """
- @overload
- def movedim(input: Tensor, source: _size, destination: _size) -> Tensor:
- r"""
- movedim(input, source, destination) -> Tensor
- Moves the dimension(s) of :attr:`input` at the position(s) in :attr:`source`
- to the position(s) in :attr:`destination`.
- Other dimensions of :attr:`input` that are not explicitly moved remain in
- their original order and appear at the positions not specified in :attr:`destination`.
- Args:
- input (Tensor): the input tensor.
- source (int or tuple of ints): Original positions of the dims to move. These must be unique.
- destination (int or tuple of ints): Destination positions for each of the original dims. These must also be unique.
- Examples::
- >>> t = torch.randn(3,2,1)
- >>> t
- tensor([[[-0.3362],
- [-0.8437]],
- [[-0.9627],
- [ 0.1727]],
- [[ 0.5173],
- [-0.1398]]])
- >>> torch.movedim(t, 1, 0).shape
- torch.Size([2, 3, 1])
- >>> torch.movedim(t, 1, 0)
- tensor([[[-0.3362],
- [-0.9627],
- [ 0.5173]],
- [[-0.8437],
- [ 0.1727],
- [-0.1398]]])
- >>> torch.movedim(t, (1, 2), (0, 1)).shape
- torch.Size([2, 1, 3])
- >>> torch.movedim(t, (1, 2), (0, 1))
- tensor([[[-0.3362, -0.9627, 0.5173]],
- [[-0.8437, 0.1727, -0.1398]]])
- """
- def msort(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- msort(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Sorts the elements of the :attr:`input` tensor along its first dimension
- in ascending order by value.
- .. note:: `torch.msort(t)` is equivalent to `torch.sort(t, dim=0)[0]`.
- See also :func:`torch.sort`.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.randn(3, 4)
- >>> t
- tensor([[-0.1321, 0.4370, -1.2631, -1.1289],
- [-2.0527, -1.1250, 0.2275, 0.3077],
- [-0.0881, -0.1259, -0.5495, 1.0284]])
- >>> torch.msort(t)
- tensor([[-2.0527, -1.1250, -1.2631, -1.1289],
- [-0.1321, -0.1259, -0.5495, 0.3077],
- [-0.0881, 0.4370, 0.2275, 1.0284]])
- """
- def mul(
- input: Tensor | Number | _complex,
- other: Tensor | Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- mul(input, other, *, out=None) -> Tensor
- Multiplies :attr:`input` by :attr:`other`.
- .. math::
- \text{out}_i = \text{input}_i \times \text{other}_i
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer, float, and complex inputs.
- Args:
- input (Tensor): the input tensor.
- other (Tensor or Number): the tensor or number to multiply input by.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Examples::
- >>> a = torch.randn(3)
- >>> a
- tensor([ 0.2015, -0.4255, 2.6087])
- >>> torch.mul(a, 100)
- tensor([ 20.1494, -42.5491, 260.8663])
- >>> b = torch.randn(4, 1)
- >>> b
- tensor([[ 1.1207],
- [-0.3137],
- [ 0.0700],
- [ 0.8378]])
- >>> c = torch.randn(1, 4)
- >>> c
- tensor([[ 0.5146, 0.1216, -0.5244, 2.2382]])
- >>> torch.mul(b, c)
- tensor([[ 0.5767, 0.1363, -0.5877, 2.5083],
- [-0.1614, -0.0382, 0.1645, -0.7021],
- [ 0.0360, 0.0085, -0.0367, 0.1567],
- [ 0.4312, 0.1019, -0.4394, 1.8753]])
- """
- def multinomial(
- input: Tensor,
- num_samples: _int | SymInt,
- replacement: _bool = False,
- *,
- generator: Generator | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- multinomial(input, num_samples, replacement=False, *, generator=None, out=None) -> LongTensor
- Returns a tensor where each row contains :attr:`num_samples` indices sampled
- from the multinomial (a stricter definition would be multivariate,
- refer to :class:`torch.distributions.multinomial.Multinomial` for more details)
- probability distribution located in the corresponding row
- of tensor :attr:`input`.
- .. note::
- The rows of :attr:`input` do not need to sum to one (in which case we use
- the values as weights), but must be non-negative, finite and have
- a non-zero sum.
- Indices are ordered from left to right according to when each was sampled
- (first samples are placed in first column).
- If :attr:`input` is a vector, :attr:`out` is a vector of size :attr:`num_samples`.
- If :attr:`input` is a matrix with `m` rows, :attr:`out` is an matrix of shape
- :math:`(m \times \text{num\_samples})`.
- If replacement is ``True``, samples are drawn with replacement.
- If not, they are drawn without replacement, which means that when a
- sample index is drawn for a row, it cannot be drawn again for that row.
- .. note::
- When drawn without replacement, :attr:`num_samples` must be lower than
- number of non-zero elements in :attr:`input` (or the min number of non-zero
- elements in each row of :attr:`input` if it is a matrix).
- Args:
- input (Tensor): the input tensor containing probabilities
- num_samples (int): number of samples to draw
- replacement (bool, optional): whether to draw with replacement or not
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- Example::
- >>> weights = torch.tensor([0, 10, 3, 0], dtype=torch.float) # create a tensor of weights
- >>> torch.multinomial(weights, 2)
- tensor([1, 2])
- >>> torch.multinomial(weights, 5) # ERROR!
- RuntimeError: cannot sample n_sample > prob_dist.size(-1) samples without replacement
- >>> torch.multinomial(weights, 4, replacement=True)
- tensor([ 2, 1, 1, 1])
- """
- @overload
- def multiply(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- multiply(input, other, *, out=None)
- Alias for :func:`torch.mul`.
- """
- @overload
- def multiply(input: Tensor, other: Number | _complex) -> Tensor:
- r"""
- multiply(input, other, *, out=None)
- Alias for :func:`torch.mul`.
- """
- def mv(input: Tensor, vec: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- mv(input, vec, *, out=None) -> Tensor
- Performs a matrix-vector product of the matrix :attr:`input` and the vector
- :attr:`vec`.
- If :attr:`input` is a :math:`(n \times m)` tensor, :attr:`vec` is a 1-D tensor of
- size :math:`m`, :attr:`out` will be 1-D of size :math:`n`.
- .. note:: This function does not :ref:`broadcast <broadcasting-semantics>`.
- Args:
- input (Tensor): matrix to be multiplied
- vec (Tensor): vector to be multiplied
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> mat = torch.randn(2, 3)
- >>> vec = torch.randn(3)
- >>> torch.mv(mat, vec)
- tensor([ 1.0404, -0.6361])
- """
- def mvlgamma(
- input: Tensor,
- p: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- mvlgamma(input, p, *, out=None) -> Tensor
- Alias for :func:`torch.special.multigammaln`.
- """
- def nan_to_num(
- input: Tensor,
- nan: _float | None = None,
- posinf: _float | None = None,
- neginf: _float | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- nan_to_num(input, nan=0.0, posinf=None, neginf=None, *, out=None) -> Tensor
- Replaces :literal:`NaN`, positive infinity, and negative infinity values in :attr:`input`
- with the values specified by :attr:`nan`, :attr:`posinf`, and :attr:`neginf`, respectively.
- By default, :literal:`NaN`\ s are replaced with zero, positive infinity is replaced with the
- greatest finite value representable by :attr:`input`'s dtype, and negative infinity
- is replaced with the least finite value representable by :attr:`input`'s dtype.
- Args:
- input (Tensor): the input tensor.
- nan (Number, optional): the value to replace :literal:`NaN`\s with. Default is zero.
- posinf (Number, optional): if a Number, the value to replace positive infinity values with.
- If None, positive infinity values are replaced with the greatest finite value representable by :attr:`input`'s dtype.
- Default is None.
- neginf (Number, optional): if a Number, the value to replace negative infinity values with.
- If None, negative infinity values are replaced with the lowest finite value representable by :attr:`input`'s dtype.
- Default is None.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> x = torch.tensor([float('nan'), float('inf'), -float('inf'), 3.14])
- >>> torch.nan_to_num(x)
- tensor([ 0.0000e+00, 3.4028e+38, -3.4028e+38, 3.1400e+00])
- >>> torch.nan_to_num(x, nan=2.0)
- tensor([ 2.0000e+00, 3.4028e+38, -3.4028e+38, 3.1400e+00])
- >>> torch.nan_to_num(x, nan=2.0, posinf=1.0)
- tensor([ 2.0000e+00, 1.0000e+00, -3.4028e+38, 3.1400e+00])
- """
- def nan_to_num_(
- input: Tensor,
- nan: _float | None = None,
- posinf: _float | None = None,
- neginf: _float | None = None,
- ) -> Tensor: ...
- def nanmean(
- input: Tensor,
- dim: _int | _size | None = None,
- keepdim: _bool = False,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- nanmean(input, dim=None, keepdim=False, *, dtype=None, out=None) -> Tensor
- Computes the mean of all `non-NaN` elements along the specified dimensions.
- Input must be floating point or complex.
- This function is identical to :func:`torch.mean` when there are no `NaN` values
- in the :attr:`input` tensor. In the presence of `NaN`, :func:`torch.mean` will
- propagate the `NaN` to the output whereas :func:`torch.nanmean` will ignore the
- `NaN` values (`torch.nanmean(a)` is equivalent to `torch.mean(a[~a.isnan()])`).
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor, either of floating point or complex dtype
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- out (Tensor, optional): the output tensor.
- .. seealso::
- :func:`torch.mean` computes the mean value, propagating `NaN`.
- Example::
- >>> x = torch.tensor([[torch.nan, 1, 2], [1, 2, 3]])
- >>> x.mean()
- tensor(nan)
- >>> x.nanmean()
- tensor(1.8000)
- >>> x.mean(dim=0)
- tensor([ nan, 1.5000, 2.5000])
- >>> x.nanmean(dim=0)
- tensor([1.0000, 1.5000, 2.5000])
- # If all elements in the reduced dimensions are NaN then the result is NaN
- >>> torch.tensor([torch.nan]).nanmean()
- tensor(nan)
- """
- @overload
- def nanmedian(input: Tensor) -> Tensor:
- r"""
- nanmedian(input) -> Tensor
- Returns the median of the values in :attr:`input`, ignoring ``NaN`` values.
- This function is identical to :func:`torch.median` when there are no ``NaN`` values in :attr:`input`.
- When :attr:`input` has one or more ``NaN`` values, :func:`torch.median` will always return ``NaN``,
- while this function will return the median of the non-``NaN`` elements in :attr:`input`.
- If all the elements in :attr:`input` are ``NaN`` it will also return ``NaN``.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> a = torch.tensor([1, float('nan'), 3, 2])
- >>> a.median()
- tensor(nan)
- >>> a.nanmedian()
- tensor(2.)
- .. function:: nanmedian(input, dim=-1, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` contains the median of each row of :attr:`input`
- in the dimension :attr:`dim`, ignoring ``NaN`` values, and ``indices`` contains the index of the median values
- found in the dimension :attr:`dim`.
- This function is identical to :func:`torch.median` when there are no ``NaN`` values in a reduced row. When a reduced row has
- one or more ``NaN`` values, :func:`torch.median` will always reduce it to ``NaN``, while this function will reduce it to the
- median of the non-``NaN`` elements. If all the elements in a reduced row are ``NaN`` then it will be reduced to ``NaN``, too.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out ((Tensor, Tensor), optional): The first tensor will be populated with the median values and the second
- tensor, which must have dtype long, with their indices in the dimension
- :attr:`dim` of :attr:`input`.
- Example::
- >>> a = torch.tensor([[2, 3, 1], [float('nan'), 1, float('nan')]])
- >>> a
- tensor([[2., 3., 1.],
- [nan, 1., nan]])
- >>> a.median(0)
- torch.return_types.median(values=tensor([nan, 1., nan]), indices=tensor([1, 1, 1]))
- >>> a.nanmedian(0)
- torch.return_types.nanmedian(values=tensor([2., 1., 1.]), indices=tensor([0, 1, 0]))
- """
- @overload
- def nanmedian(
- input: Tensor,
- dim: _int,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.nanmedian:
- r"""
- nanmedian(input) -> Tensor
- Returns the median of the values in :attr:`input`, ignoring ``NaN`` values.
- This function is identical to :func:`torch.median` when there are no ``NaN`` values in :attr:`input`.
- When :attr:`input` has one or more ``NaN`` values, :func:`torch.median` will always return ``NaN``,
- while this function will return the median of the non-``NaN`` elements in :attr:`input`.
- If all the elements in :attr:`input` are ``NaN`` it will also return ``NaN``.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> a = torch.tensor([1, float('nan'), 3, 2])
- >>> a.median()
- tensor(nan)
- >>> a.nanmedian()
- tensor(2.)
- .. function:: nanmedian(input, dim=-1, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` contains the median of each row of :attr:`input`
- in the dimension :attr:`dim`, ignoring ``NaN`` values, and ``indices`` contains the index of the median values
- found in the dimension :attr:`dim`.
- This function is identical to :func:`torch.median` when there are no ``NaN`` values in a reduced row. When a reduced row has
- one or more ``NaN`` values, :func:`torch.median` will always reduce it to ``NaN``, while this function will reduce it to the
- median of the non-``NaN`` elements. If all the elements in a reduced row are ``NaN`` then it will be reduced to ``NaN``, too.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out ((Tensor, Tensor), optional): The first tensor will be populated with the median values and the second
- tensor, which must have dtype long, with their indices in the dimension
- :attr:`dim` of :attr:`input`.
- Example::
- >>> a = torch.tensor([[2, 3, 1], [float('nan'), 1, float('nan')]])
- >>> a
- tensor([[2., 3., 1.],
- [nan, 1., nan]])
- >>> a.median(0)
- torch.return_types.median(values=tensor([nan, 1., nan]), indices=tensor([1, 1, 1]))
- >>> a.nanmedian(0)
- torch.return_types.nanmedian(values=tensor([2., 1., 1.]), indices=tensor([0, 1, 0]))
- """
- @overload
- def nanmedian(
- input: Tensor,
- dim: str | EllipsisType | None,
- keepdim: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.nanmedian:
- r"""
- nanmedian(input) -> Tensor
- Returns the median of the values in :attr:`input`, ignoring ``NaN`` values.
- This function is identical to :func:`torch.median` when there are no ``NaN`` values in :attr:`input`.
- When :attr:`input` has one or more ``NaN`` values, :func:`torch.median` will always return ``NaN``,
- while this function will return the median of the non-``NaN`` elements in :attr:`input`.
- If all the elements in :attr:`input` are ``NaN`` it will also return ``NaN``.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> a = torch.tensor([1, float('nan'), 3, 2])
- >>> a.median()
- tensor(nan)
- >>> a.nanmedian()
- tensor(2.)
- .. function:: nanmedian(input, dim=-1, keepdim=False, *, out=None) -> (Tensor, LongTensor)
- :noindex:
- Returns a namedtuple ``(values, indices)`` where ``values`` contains the median of each row of :attr:`input`
- in the dimension :attr:`dim`, ignoring ``NaN`` values, and ``indices`` contains the index of the median values
- found in the dimension :attr:`dim`.
- This function is identical to :func:`torch.median` when there are no ``NaN`` values in a reduced row. When a reduced row has
- one or more ``NaN`` values, :func:`torch.median` will always reduce it to ``NaN``, while this function will reduce it to the
- median of the non-``NaN`` elements. If all the elements in a reduced row are ``NaN`` then it will be reduced to ``NaN``, too.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- out ((Tensor, Tensor), optional): The first tensor will be populated with the median values and the second
- tensor, which must have dtype long, with their indices in the dimension
- :attr:`dim` of :attr:`input`.
- Example::
- >>> a = torch.tensor([[2, 3, 1], [float('nan'), 1, float('nan')]])
- >>> a
- tensor([[2., 3., 1.],
- [nan, 1., nan]])
- >>> a.median(0)
- torch.return_types.median(values=tensor([nan, 1., nan]), indices=tensor([1, 1, 1]))
- >>> a.nanmedian(0)
- torch.return_types.nanmedian(values=tensor([2., 1., 1.]), indices=tensor([0, 1, 0]))
- """
- @overload
- def nanquantile(
- input: Tensor,
- q: Tensor,
- dim: _int | None = None,
- keepdim: _bool = False,
- *,
- interpolation: str = "linear",
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- nanquantile(input, q, dim=None, keepdim=False, *, interpolation='linear', out=None) -> Tensor
- This is a variant of :func:`torch.quantile` that "ignores" ``NaN`` values,
- computing the quantiles :attr:`q` as if ``NaN`` values in :attr:`input` did
- not exist. If all values in a reduced row are ``NaN`` then the quantiles for
- that reduction will be ``NaN``. See the documentation for :func:`torch.quantile`.
- Args:
- input (Tensor): the input tensor.
- q (float or Tensor): a scalar or 1D tensor of quantile values in the range [0, 1]
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword arguments:
- interpolation (str): interpolation method to use when the desired quantile lies between two data points.
- Can be ``linear``, ``lower``, ``higher``, ``midpoint`` and ``nearest``.
- Default is ``linear``.
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.tensor([float('nan'), 1, 2])
- >>> t.quantile(0.5)
- tensor(nan)
- >>> t.nanquantile(0.5)
- tensor(1.5000)
- >>> t = torch.tensor([[float('nan'), float('nan')], [1, 2]])
- >>> t
- tensor([[nan, nan],
- [1., 2.]])
- >>> t.nanquantile(0.5, dim=0)
- tensor([1., 2.])
- >>> t.nanquantile(0.5, dim=1)
- tensor([ nan, 1.5000])
- """
- @overload
- def nanquantile(
- input: Tensor,
- q: _float,
- dim: _int | None = None,
- keepdim: _bool = False,
- *,
- interpolation: str = "linear",
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- nanquantile(input, q, dim=None, keepdim=False, *, interpolation='linear', out=None) -> Tensor
- This is a variant of :func:`torch.quantile` that "ignores" ``NaN`` values,
- computing the quantiles :attr:`q` as if ``NaN`` values in :attr:`input` did
- not exist. If all values in a reduced row are ``NaN`` then the quantiles for
- that reduction will be ``NaN``. See the documentation for :func:`torch.quantile`.
- Args:
- input (Tensor): the input tensor.
- q (float or Tensor): a scalar or 1D tensor of quantile values in the range [0, 1]
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword arguments:
- interpolation (str): interpolation method to use when the desired quantile lies between two data points.
- Can be ``linear``, ``lower``, ``higher``, ``midpoint`` and ``nearest``.
- Default is ``linear``.
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.tensor([float('nan'), 1, 2])
- >>> t.quantile(0.5)
- tensor(nan)
- >>> t.nanquantile(0.5)
- tensor(1.5000)
- >>> t = torch.tensor([[float('nan'), float('nan')], [1, 2]])
- >>> t
- tensor([[nan, nan],
- [1., 2.]])
- >>> t.nanquantile(0.5, dim=0)
- tensor([1., 2.])
- >>> t.nanquantile(0.5, dim=1)
- tensor([ nan, 1.5000])
- """
- def nansum(
- input: Tensor,
- dim: _int | _size | None = None,
- keepdim: _bool = False,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- nansum(input, *, dtype=None) -> Tensor
- Returns the sum of all elements, treating Not a Numbers (NaNs) as zero.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.tensor([1., 2., float('nan'), 4.])
- >>> torch.nansum(a)
- tensor(7.)
- .. function:: nansum(input, dim, keepdim=False, *, dtype=None) -> Tensor
- :noindex:
- Returns the sum of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim`, treating Not a Numbers (NaNs) as zero.
- If :attr:`dim` is a list of dimensions, reduce over all of them.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> torch.nansum(torch.tensor([1., float("nan")]))
- tensor(1.)
- >>> a = torch.tensor([[1, 2], [3., float("nan")]])
- >>> torch.nansum(a)
- tensor(6.)
- >>> torch.nansum(a, dim=0)
- tensor([4., 2.])
- >>> torch.nansum(a, dim=1)
- tensor([3., 3.])
- """
- @overload
- def narrow(
- input: Tensor,
- dim: _int,
- start: Tensor,
- length: _int | SymInt,
- ) -> Tensor:
- r"""
- narrow(input, dim, start, length) -> Tensor
- Returns a new tensor that is a narrowed version of :attr:`input` tensor. The
- dimension :attr:`dim` is input from :attr:`start` to ``start + length``. The
- returned tensor and :attr:`input` tensor share the same underlying storage.
- Args:
- input (Tensor): the tensor to narrow
- dim (int): the dimension along which to narrow
- start (int or Tensor): index of the element to start the narrowed dimension
- from. Can be negative, which means indexing from the end of `dim`. If
- `Tensor`, it must be an 0-dim integral `Tensor` (bools not allowed)
- length (int): length of the narrowed dimension, must be weakly positive
- Example::
- >>> x = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
- >>> torch.narrow(x, 0, 0, 2)
- tensor([[ 1, 2, 3],
- [ 4, 5, 6]])
- >>> torch.narrow(x, 1, 1, 2)
- tensor([[ 2, 3],
- [ 5, 6],
- [ 8, 9]])
- >>> torch.narrow(x, -1, torch.tensor(-1), 1)
- tensor([[3],
- [6],
- [9]])
- """
- @overload
- def narrow(
- input: Tensor,
- dim: _int,
- start: _int | SymInt,
- length: _int | SymInt,
- ) -> Tensor:
- r"""
- narrow(input, dim, start, length) -> Tensor
- Returns a new tensor that is a narrowed version of :attr:`input` tensor. The
- dimension :attr:`dim` is input from :attr:`start` to ``start + length``. The
- returned tensor and :attr:`input` tensor share the same underlying storage.
- Args:
- input (Tensor): the tensor to narrow
- dim (int): the dimension along which to narrow
- start (int or Tensor): index of the element to start the narrowed dimension
- from. Can be negative, which means indexing from the end of `dim`. If
- `Tensor`, it must be an 0-dim integral `Tensor` (bools not allowed)
- length (int): length of the narrowed dimension, must be weakly positive
- Example::
- >>> x = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
- >>> torch.narrow(x, 0, 0, 2)
- tensor([[ 1, 2, 3],
- [ 4, 5, 6]])
- >>> torch.narrow(x, 1, 1, 2)
- tensor([[ 2, 3],
- [ 5, 6],
- [ 8, 9]])
- >>> torch.narrow(x, -1, torch.tensor(-1), 1)
- tensor([[3],
- [6],
- [9]])
- """
- def narrow_copy(
- input: Tensor,
- dim: _int,
- start: _int | SymInt,
- length: _int | SymInt,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- narrow_copy(input, dim, start, length, *, out=None) -> Tensor
- Same as :meth:`Tensor.narrow` except this returns a copy rather
- than shared storage. This is primarily for sparse tensors, which
- do not have a shared-storage narrow method.
- Args:
- input (Tensor): the tensor to narrow
- dim (int): the dimension along which to narrow
- start (int): index of the element to start the narrowed dimension from. Can
- be negative, which means indexing from the end of `dim`
- length (int): length of the narrowed dimension, must be weakly positive
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> x = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
- >>> torch.narrow_copy(x, 0, 0, 2)
- tensor([[ 1, 2, 3],
- [ 4, 5, 6]])
- >>> torch.narrow_copy(x, 1, 1, 2)
- tensor([[ 2, 3],
- [ 5, 6],
- [ 8, 9]])
- >>> s = torch.arange(16).reshape(2, 2, 2, 2).to_sparse(2)
- >>> torch.narrow_copy(s, 0, 0, 1)
- tensor(indices=tensor([[0, 0],
- [0, 1]]),
- values=tensor([[[0, 1],
- [2, 3]],
- [[4, 5],
- [6, 7]]]),
- size=(1, 2, 2, 2), nnz=2, layout=torch.sparse_coo)
- .. seealso::
- :func:`torch.narrow` for a non copy variant
- """
- def native_batch_norm(
- input: Tensor,
- weight: Tensor | None,
- bias: Tensor | None,
- running_mean: Tensor | None,
- running_var: Tensor | None,
- training: _bool,
- momentum: _float,
- eps: _float,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- def native_channel_shuffle(input: Tensor, groups: _int | SymInt) -> Tensor: ...
- def native_dropout(
- input: Tensor,
- p: _float,
- train: _bool | None,
- ) -> tuple[Tensor, Tensor]: ...
- def native_group_norm(
- input: Tensor,
- weight: Tensor | None,
- bias: Tensor | None,
- N: _int | SymInt,
- C: _int | SymInt,
- HxW: _int | SymInt,
- group: _int,
- eps: _float,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- def native_layer_norm(
- input: Tensor,
- normalized_shape: Sequence[_int | SymInt],
- weight: Tensor | None,
- bias: Tensor | None,
- eps: _float,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- @overload
- def native_norm(
- input: Tensor,
- p: Number | _complex | None,
- dim: _int | _size,
- keepdim: _bool,
- dtype: _dtype | None,
- ) -> Tensor: ...
- @overload
- def native_norm(input: Tensor, p: Number | _complex = 2) -> Tensor: ...
- @overload
- def ne(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- ne(input, other, *, out=None) -> Tensor
- Computes :math:`\text{input} \neq \text{other}` element-wise.
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or float): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is not equal to :attr:`other` and False elsewhere
- Example::
- >>> torch.ne(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[False, True], [True, False]])
- """
- @overload
- def ne(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- ne(input, other, *, out=None) -> Tensor
- Computes :math:`\text{input} \neq \text{other}` element-wise.
- The second argument can be a number or a tensor whose shape is
- :ref:`broadcastable <broadcasting-semantics>` with the first argument.
- Args:
- input (Tensor): the tensor to compare
- other (Tensor or float): the tensor or value to compare
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- A boolean tensor that is True where :attr:`input` is not equal to :attr:`other` and False elsewhere
- Example::
- >>> torch.ne(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
- tensor([[False, True], [True, False]])
- """
- def neg(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- neg(input, *, out=None) -> Tensor
- Returns a new tensor with the negative of the elements of :attr:`input`.
- .. math::
- \text{out} = -1 \times \text{input}
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(5)
- >>> a
- tensor([ 0.0090, -0.2262, -0.0682, -0.2866, 0.3940])
- >>> torch.neg(a)
- tensor([-0.0090, 0.2262, 0.0682, 0.2866, -0.3940])
- """
- def neg_(input: Tensor) -> Tensor: ...
- def negative(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- negative(input, *, out=None) -> Tensor
- Alias for :func:`torch.neg`
- """
- def negative_(input: Tensor) -> Tensor: ...
- def nextafter(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- nextafter(input, other, *, out=None) -> Tensor
- Return the next floating-point value after :attr:`input` towards :attr:`other`, elementwise.
- The shapes of ``input`` and ``other`` must be
- :ref:`broadcastable <broadcasting-semantics>`.
- Args:
- input (Tensor): the first input tensor
- other (Tensor): the second input tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> eps = torch.finfo(torch.float32).eps
- >>> torch.nextafter(torch.tensor([1.0, 2.0]), torch.tensor([2.0, 1.0])) == torch.tensor([eps + 1, 2 - eps])
- tensor([True, True])
- """
- @overload
- def nonzero(
- input: Tensor,
- *,
- as_tuple: Literal[False] = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- nonzero(input, *, out=None, as_tuple=False) -> LongTensor or tuple of LongTensors
- .. note::
- :func:`torch.nonzero(..., as_tuple=False) <torch.nonzero>` (default) returns a
- 2-D tensor where each row is the index for a nonzero value.
- :func:`torch.nonzero(..., as_tuple=True) <torch.nonzero>` returns a tuple of 1-D
- index tensors, allowing for advanced indexing, so ``x[x.nonzero(as_tuple=True)]``
- gives all nonzero values of tensor ``x``. Of the returned tuple, each index tensor
- contains nonzero indices for a certain dimension.
- See below for more details on the two behaviors.
- When :attr:`input` is on CUDA, :func:`torch.nonzero() <torch.nonzero>` causes
- host-device synchronization.
- **When** :attr:`as_tuple` **is** ``False`` **(default)**:
- Returns a tensor containing the indices of all non-zero elements of
- :attr:`input`. Each row in the result contains the indices of a non-zero
- element in :attr:`input`. The result is sorted lexicographically, with
- the last index changing the fastest (C-style).
- If :attr:`input` has :math:`n` dimensions, then the resulting indices tensor
- :attr:`out` is of size :math:`(z \times n)`, where :math:`z` is the total number of
- non-zero elements in the :attr:`input` tensor.
- **When** :attr:`as_tuple` **is** ``True``:
- Returns a tuple of 1-D tensors, one for each dimension in :attr:`input`,
- each containing the indices (in that dimension) of all non-zero elements of
- :attr:`input` .
- If :attr:`input` has :math:`n` dimensions, then the resulting tuple contains :math:`n`
- tensors of size :math:`z`, where :math:`z` is the total number of
- non-zero elements in the :attr:`input` tensor.
- As a special case, when :attr:`input` has zero dimensions and a nonzero scalar
- value, it is treated as a one-dimensional tensor with one element.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (LongTensor, optional): the output tensor containing indices
- Returns:
- LongTensor or tuple of LongTensor: If :attr:`as_tuple` is ``False``, the output
- tensor containing indices. If :attr:`as_tuple` is ``True``, one 1-D tensor for
- each dimension, containing the indices of each nonzero element along that
- dimension.
- Example::
- >>> torch.nonzero(torch.tensor([1, 1, 1, 0, 1]))
- tensor([[ 0],
- [ 1],
- [ 2],
- [ 4]])
- >>> torch.nonzero(torch.tensor([[0.6, 0.0, 0.0, 0.0],
- ... [0.0, 0.4, 0.0, 0.0],
- ... [0.0, 0.0, 1.2, 0.0],
- ... [0.0, 0.0, 0.0,-0.4]]))
- tensor([[ 0, 0],
- [ 1, 1],
- [ 2, 2],
- [ 3, 3]])
- >>> torch.nonzero(torch.tensor([1, 1, 1, 0, 1]), as_tuple=True)
- (tensor([0, 1, 2, 4]),)
- >>> torch.nonzero(torch.tensor([[0.6, 0.0, 0.0, 0.0],
- ... [0.0, 0.4, 0.0, 0.0],
- ... [0.0, 0.0, 1.2, 0.0],
- ... [0.0, 0.0, 0.0,-0.4]]), as_tuple=True)
- (tensor([0, 1, 2, 3]), tensor([0, 1, 2, 3]))
- >>> torch.nonzero(torch.tensor(5), as_tuple=True)
- (tensor([0]),)
- """
- @overload
- def nonzero(
- input: Tensor,
- *,
- as_tuple: Literal[True],
- ) -> tuple[Tensor, ...]:
- r"""
- nonzero(input, *, out=None, as_tuple=False) -> LongTensor or tuple of LongTensors
- .. note::
- :func:`torch.nonzero(..., as_tuple=False) <torch.nonzero>` (default) returns a
- 2-D tensor where each row is the index for a nonzero value.
- :func:`torch.nonzero(..., as_tuple=True) <torch.nonzero>` returns a tuple of 1-D
- index tensors, allowing for advanced indexing, so ``x[x.nonzero(as_tuple=True)]``
- gives all nonzero values of tensor ``x``. Of the returned tuple, each index tensor
- contains nonzero indices for a certain dimension.
- See below for more details on the two behaviors.
- When :attr:`input` is on CUDA, :func:`torch.nonzero() <torch.nonzero>` causes
- host-device synchronization.
- **When** :attr:`as_tuple` **is** ``False`` **(default)**:
- Returns a tensor containing the indices of all non-zero elements of
- :attr:`input`. Each row in the result contains the indices of a non-zero
- element in :attr:`input`. The result is sorted lexicographically, with
- the last index changing the fastest (C-style).
- If :attr:`input` has :math:`n` dimensions, then the resulting indices tensor
- :attr:`out` is of size :math:`(z \times n)`, where :math:`z` is the total number of
- non-zero elements in the :attr:`input` tensor.
- **When** :attr:`as_tuple` **is** ``True``:
- Returns a tuple of 1-D tensors, one for each dimension in :attr:`input`,
- each containing the indices (in that dimension) of all non-zero elements of
- :attr:`input` .
- If :attr:`input` has :math:`n` dimensions, then the resulting tuple contains :math:`n`
- tensors of size :math:`z`, where :math:`z` is the total number of
- non-zero elements in the :attr:`input` tensor.
- As a special case, when :attr:`input` has zero dimensions and a nonzero scalar
- value, it is treated as a one-dimensional tensor with one element.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (LongTensor, optional): the output tensor containing indices
- Returns:
- LongTensor or tuple of LongTensor: If :attr:`as_tuple` is ``False``, the output
- tensor containing indices. If :attr:`as_tuple` is ``True``, one 1-D tensor for
- each dimension, containing the indices of each nonzero element along that
- dimension.
- Example::
- >>> torch.nonzero(torch.tensor([1, 1, 1, 0, 1]))
- tensor([[ 0],
- [ 1],
- [ 2],
- [ 4]])
- >>> torch.nonzero(torch.tensor([[0.6, 0.0, 0.0, 0.0],
- ... [0.0, 0.4, 0.0, 0.0],
- ... [0.0, 0.0, 1.2, 0.0],
- ... [0.0, 0.0, 0.0,-0.4]]))
- tensor([[ 0, 0],
- [ 1, 1],
- [ 2, 2],
- [ 3, 3]])
- >>> torch.nonzero(torch.tensor([1, 1, 1, 0, 1]), as_tuple=True)
- (tensor([0, 1, 2, 4]),)
- >>> torch.nonzero(torch.tensor([[0.6, 0.0, 0.0, 0.0],
- ... [0.0, 0.4, 0.0, 0.0],
- ... [0.0, 0.0, 1.2, 0.0],
- ... [0.0, 0.0, 0.0,-0.4]]), as_tuple=True)
- (tensor([0, 1, 2, 3]), tensor([0, 1, 2, 3]))
- >>> torch.nonzero(torch.tensor(5), as_tuple=True)
- (tensor([0]),)
- """
- def nonzero_static(
- input: Tensor,
- *,
- size: _int | SymInt,
- fill_value: _int = -1,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def norm_except_dim(v: Tensor, pow: _int = 2, dim: _int = 0) -> Tensor: ...
- @overload
- def normal(
- mean: Tensor,
- std: Tensor,
- *,
- generator: Generator | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- normal(mean, std, *, generator=None, out=None) -> Tensor
- Returns a tensor of random numbers drawn from separate normal distributions
- whose mean and standard deviation are given.
- The :attr:`mean` is a tensor with the mean of
- each output element's normal distribution
- The :attr:`std` is a tensor with the standard deviation of
- each output element's normal distribution
- The shapes of :attr:`mean` and :attr:`std` don't need to match, but the
- total number of elements in each tensor need to be the same.
- .. note:: When the shapes do not match, the shape of :attr:`mean`
- is used as the shape for the returned output tensor
- .. note:: When :attr:`std` is a CUDA tensor, this function synchronizes
- its device with the CPU.
- Args:
- mean (Tensor): the tensor of per-element means
- std (Tensor): the tensor of per-element standard deviations
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(mean=torch.arange(1., 11.), std=torch.arange(1, 0, -0.1))
- tensor([ 1.0425, 3.5672, 2.7969, 4.2925, 4.7229, 6.2134,
- 8.0505, 8.1408, 9.0563, 10.0566])
- .. function:: normal(mean=0.0, std, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the means are shared among all drawn
- elements.
- Args:
- mean (float, optional): the mean for all distributions
- std (Tensor): the tensor of per-element standard deviations
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(mean=0.5, std=torch.arange(1., 6.))
- tensor([-1.2793, -1.0732, -2.0687, 5.1177, -1.2303])
- .. function:: normal(mean, std=1.0, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the standard deviations are shared among
- all drawn elements.
- Args:
- mean (Tensor): the tensor of per-element means
- std (float, optional): the standard deviation for all distributions
- Keyword args:
- out (Tensor, optional): the output tensor
- Example::
- >>> torch.normal(mean=torch.arange(1., 6.))
- tensor([ 1.1552, 2.6148, 2.6535, 5.8318, 4.2361])
- .. function:: normal(mean, std, size, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the means and standard deviations are shared
- among all drawn elements. The resulting tensor has size given by :attr:`size`.
- Args:
- mean (float): the mean for all distributions
- std (float): the standard deviation for all distributions
- size (int...): a sequence of integers defining the shape of the output tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(2, 3, size=(1, 4))
- tensor([[-1.3987, -1.9544, 3.6048, 0.7909]])
- """
- @overload
- def normal(
- mean: Tensor,
- std: _float = 1,
- *,
- generator: Generator | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- normal(mean, std, *, generator=None, out=None) -> Tensor
- Returns a tensor of random numbers drawn from separate normal distributions
- whose mean and standard deviation are given.
- The :attr:`mean` is a tensor with the mean of
- each output element's normal distribution
- The :attr:`std` is a tensor with the standard deviation of
- each output element's normal distribution
- The shapes of :attr:`mean` and :attr:`std` don't need to match, but the
- total number of elements in each tensor need to be the same.
- .. note:: When the shapes do not match, the shape of :attr:`mean`
- is used as the shape for the returned output tensor
- .. note:: When :attr:`std` is a CUDA tensor, this function synchronizes
- its device with the CPU.
- Args:
- mean (Tensor): the tensor of per-element means
- std (Tensor): the tensor of per-element standard deviations
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(mean=torch.arange(1., 11.), std=torch.arange(1, 0, -0.1))
- tensor([ 1.0425, 3.5672, 2.7969, 4.2925, 4.7229, 6.2134,
- 8.0505, 8.1408, 9.0563, 10.0566])
- .. function:: normal(mean=0.0, std, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the means are shared among all drawn
- elements.
- Args:
- mean (float, optional): the mean for all distributions
- std (Tensor): the tensor of per-element standard deviations
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(mean=0.5, std=torch.arange(1., 6.))
- tensor([-1.2793, -1.0732, -2.0687, 5.1177, -1.2303])
- .. function:: normal(mean, std=1.0, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the standard deviations are shared among
- all drawn elements.
- Args:
- mean (Tensor): the tensor of per-element means
- std (float, optional): the standard deviation for all distributions
- Keyword args:
- out (Tensor, optional): the output tensor
- Example::
- >>> torch.normal(mean=torch.arange(1., 6.))
- tensor([ 1.1552, 2.6148, 2.6535, 5.8318, 4.2361])
- .. function:: normal(mean, std, size, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the means and standard deviations are shared
- among all drawn elements. The resulting tensor has size given by :attr:`size`.
- Args:
- mean (float): the mean for all distributions
- std (float): the standard deviation for all distributions
- size (int...): a sequence of integers defining the shape of the output tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(2, 3, size=(1, 4))
- tensor([[-1.3987, -1.9544, 3.6048, 0.7909]])
- """
- @overload
- def normal(
- mean: _float,
- std: Tensor,
- *,
- generator: Generator | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- normal(mean, std, *, generator=None, out=None) -> Tensor
- Returns a tensor of random numbers drawn from separate normal distributions
- whose mean and standard deviation are given.
- The :attr:`mean` is a tensor with the mean of
- each output element's normal distribution
- The :attr:`std` is a tensor with the standard deviation of
- each output element's normal distribution
- The shapes of :attr:`mean` and :attr:`std` don't need to match, but the
- total number of elements in each tensor need to be the same.
- .. note:: When the shapes do not match, the shape of :attr:`mean`
- is used as the shape for the returned output tensor
- .. note:: When :attr:`std` is a CUDA tensor, this function synchronizes
- its device with the CPU.
- Args:
- mean (Tensor): the tensor of per-element means
- std (Tensor): the tensor of per-element standard deviations
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(mean=torch.arange(1., 11.), std=torch.arange(1, 0, -0.1))
- tensor([ 1.0425, 3.5672, 2.7969, 4.2925, 4.7229, 6.2134,
- 8.0505, 8.1408, 9.0563, 10.0566])
- .. function:: normal(mean=0.0, std, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the means are shared among all drawn
- elements.
- Args:
- mean (float, optional): the mean for all distributions
- std (Tensor): the tensor of per-element standard deviations
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(mean=0.5, std=torch.arange(1., 6.))
- tensor([-1.2793, -1.0732, -2.0687, 5.1177, -1.2303])
- .. function:: normal(mean, std=1.0, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the standard deviations are shared among
- all drawn elements.
- Args:
- mean (Tensor): the tensor of per-element means
- std (float, optional): the standard deviation for all distributions
- Keyword args:
- out (Tensor, optional): the output tensor
- Example::
- >>> torch.normal(mean=torch.arange(1., 6.))
- tensor([ 1.1552, 2.6148, 2.6535, 5.8318, 4.2361])
- .. function:: normal(mean, std, size, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the means and standard deviations are shared
- among all drawn elements. The resulting tensor has size given by :attr:`size`.
- Args:
- mean (float): the mean for all distributions
- std (float): the standard deviation for all distributions
- size (int...): a sequence of integers defining the shape of the output tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(2, 3, size=(1, 4))
- tensor([[-1.3987, -1.9544, 3.6048, 0.7909]])
- """
- @overload
- def normal(
- mean: _float,
- std: _float,
- size: Sequence[_int | SymInt],
- *,
- generator: Generator | None = None,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- normal(mean, std, *, generator=None, out=None) -> Tensor
- Returns a tensor of random numbers drawn from separate normal distributions
- whose mean and standard deviation are given.
- The :attr:`mean` is a tensor with the mean of
- each output element's normal distribution
- The :attr:`std` is a tensor with the standard deviation of
- each output element's normal distribution
- The shapes of :attr:`mean` and :attr:`std` don't need to match, but the
- total number of elements in each tensor need to be the same.
- .. note:: When the shapes do not match, the shape of :attr:`mean`
- is used as the shape for the returned output tensor
- .. note:: When :attr:`std` is a CUDA tensor, this function synchronizes
- its device with the CPU.
- Args:
- mean (Tensor): the tensor of per-element means
- std (Tensor): the tensor of per-element standard deviations
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(mean=torch.arange(1., 11.), std=torch.arange(1, 0, -0.1))
- tensor([ 1.0425, 3.5672, 2.7969, 4.2925, 4.7229, 6.2134,
- 8.0505, 8.1408, 9.0563, 10.0566])
- .. function:: normal(mean=0.0, std, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the means are shared among all drawn
- elements.
- Args:
- mean (float, optional): the mean for all distributions
- std (Tensor): the tensor of per-element standard deviations
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(mean=0.5, std=torch.arange(1., 6.))
- tensor([-1.2793, -1.0732, -2.0687, 5.1177, -1.2303])
- .. function:: normal(mean, std=1.0, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the standard deviations are shared among
- all drawn elements.
- Args:
- mean (Tensor): the tensor of per-element means
- std (float, optional): the standard deviation for all distributions
- Keyword args:
- out (Tensor, optional): the output tensor
- Example::
- >>> torch.normal(mean=torch.arange(1., 6.))
- tensor([ 1.1552, 2.6148, 2.6535, 5.8318, 4.2361])
- .. function:: normal(mean, std, size, *, out=None) -> Tensor
- :noindex:
- Similar to the function above, but the means and standard deviations are shared
- among all drawn elements. The resulting tensor has size given by :attr:`size`.
- Args:
- mean (float): the mean for all distributions
- std (float): the standard deviation for all distributions
- size (int...): a sequence of integers defining the shape of the output tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.normal(2, 3, size=(1, 4))
- tensor([[-1.3987, -1.9544, 3.6048, 0.7909]])
- """
- @overload
- def not_equal(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- not_equal(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.ne`.
- """
- @overload
- def not_equal(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- not_equal(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.ne`.
- """
- @overload
- def nuclear_norm(
- input: Tensor,
- dim: _int | _size,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def nuclear_norm(
- input: Tensor,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def numel(self: Tensor) -> _int:
- r"""
- numel(input: Tensor) -> int
- Returns the total number of elements in the :attr:`input` tensor.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> a = torch.randn(1, 2, 3, 4, 5)
- >>> torch.numel(a)
- 120
- >>> a = torch.zeros(4,4)
- >>> torch.numel(a)
- 16
- """
- @overload
- def ones(
- size: Sequence[_int | SymInt],
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- ones(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with the scalar value `1`, with the shape defined
- by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.ones(2, 3)
- tensor([[ 1., 1., 1.],
- [ 1., 1., 1.]])
- >>> torch.ones(5)
- tensor([ 1., 1., 1., 1., 1.])
- """
- @overload
- def ones(
- *size: _int | SymInt,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- ones(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with the scalar value `1`, with the shape defined
- by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.ones(2, 3)
- tensor([[ 1., 1., 1.],
- [ 1., 1., 1.]])
- >>> torch.ones(5)
- tensor([ 1., 1., 1., 1., 1.])
- """
- @overload
- def ones(
- size: _size,
- *,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- ones(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with the scalar value `1`, with the shape defined
- by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.ones(2, 3)
- tensor([[ 1., 1., 1.],
- [ 1., 1., 1.]])
- >>> torch.ones(5)
- tensor([ 1., 1., 1., 1., 1.])
- """
- @overload
- def ones(
- *size: _int,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- ones(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with the scalar value `1`, with the shape defined
- by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.ones(2, 3)
- tensor([[ 1., 1., 1.],
- [ 1., 1., 1.]])
- >>> torch.ones(5)
- tensor([ 1., 1., 1., 1., 1.])
- """
- def ones_like(
- input: Tensor,
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- ones_like(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor filled with the scalar value `1`, with the same size as
- :attr:`input`. ``torch.ones_like(input)`` is equivalent to
- ``torch.ones(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)``.
- .. warning::
- As of 0.4, this function does not support an :attr:`out` keyword. As an alternative,
- the old ``torch.ones_like(input, out=output)`` is equivalent to
- ``torch.ones(input.size(), out=output)``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- Keyword arguments:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- Example::
- >>> input = torch.empty(2, 3)
- >>> torch.ones_like(input)
- tensor([[ 1., 1., 1.],
- [ 1., 1., 1.]])
- """
- def orgqr(
- input: Tensor,
- input2: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- orgqr(input, tau) -> Tensor
- Alias for :func:`torch.linalg.householder_product`.
- """
- def ormqr(
- input: Tensor,
- input2: Tensor,
- input3: Tensor,
- left: _bool = True,
- transpose: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- ormqr(input, tau, other, left=True, transpose=False, *, out=None) -> Tensor
- Computes the matrix-matrix multiplication of a product of Householder matrices with a general matrix.
- Multiplies a :math:`m \times n` matrix `C` (given by :attr:`other`) with a matrix `Q`,
- where `Q` is represented using Householder reflectors `(input, tau)`.
- See `Representation of Orthogonal or Unitary Matrices`_ for further details.
- If :attr:`left` is `True` then `op(Q)` times `C` is computed, otherwise the result is `C` times `op(Q)`.
- When :attr:`left` is `True`, the implicit matrix `Q` has size :math:`m \times m`.
- It has size :math:`n \times n` otherwise.
- If :attr:`transpose` is `True` then `op` is the conjugate transpose operation, otherwise it's a no-op.
- Supports inputs of float, double, cfloat and cdouble dtypes.
- Also supports batched inputs, and, if the input is batched, the output is batched with the same dimensions.
- .. seealso::
- :func:`torch.geqrf` can be used to form the Householder representation `(input, tau)` of matrix `Q`
- from the QR decomposition.
- .. note::
- This function supports backward but it is only fast when ``(input, tau)`` do not require gradients
- and/or ``tau.size(-1)`` is very small.
- ``
- Args:
- input (Tensor): tensor of shape `(*, mn, k)` where `*` is zero or more batch dimensions
- and `mn` equals to `m` or `n` depending on the :attr:`left`.
- tau (Tensor): tensor of shape `(*, min(mn, k))` where `*` is zero or more batch dimensions.
- other (Tensor): tensor of shape `(*, m, n)` where `*` is zero or more batch dimensions.
- left (bool): controls the order of multiplication.
- transpose (bool): controls whether the matrix `Q` is conjugate transposed or not.
- Keyword args:
- out (Tensor, optional): the output Tensor. Ignored if `None`. Default: `None`.
- .. _Representation of Orthogonal or Unitary Matrices:
- https://www.netlib.org/lapack/lug/node128.html
- """
- def outer(
- input: Tensor,
- vec2: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- outer(input, vec2, *, out=None) -> Tensor
- Outer product of :attr:`input` and :attr:`vec2`.
- If :attr:`input` is a vector of size :math:`n` and :attr:`vec2` is a vector of
- size :math:`m`, then :attr:`out` must be a matrix of size :math:`(n \times m)`.
- .. note:: This function does not :ref:`broadcast <broadcasting-semantics>`.
- Args:
- input (Tensor): 1-D input vector
- vec2 (Tensor): 1-D input vector
- Keyword args:
- out (Tensor, optional): optional output matrix
- Example::
- >>> v1 = torch.arange(1., 5.)
- >>> v2 = torch.arange(1., 4.)
- >>> torch.outer(v1, v2)
- tensor([[ 1., 2., 3.],
- [ 2., 4., 6.],
- [ 3., 6., 9.],
- [ 4., 8., 12.]])
- """
- def pairwise_distance(
- x1: Tensor,
- x2: Tensor,
- p: _float = 2,
- eps: _float = 1e-06,
- keepdim: _bool = False,
- ) -> Tensor: ...
- def pdist(input: Tensor, p: _float = 2) -> Tensor: ...
- def permute(input: Tensor, dims: _size) -> Tensor:
- r"""
- permute(input, dims) -> Tensor
- Returns a view of the original tensor :attr:`input` with its dimensions permuted.
- Args:
- input (Tensor): the input tensor.
- dims (torch.Size, tuple of int or list of int): the desired ordering of dimensions.
- Example:
- >>> x = torch.randn(2, 3, 5)
- >>> x.size()
- torch.Size([2, 3, 5])
- >>> torch.permute(x, (2, 0, 1)).size()
- torch.Size([5, 2, 3])
- """
- def permute_copy(
- input: Tensor,
- dims: _size,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.permute`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def pinverse(input: Tensor, rcond: _float = 1e-15) -> Tensor:
- r"""
- pinverse(input, rcond=1e-15) -> Tensor
- Alias for :func:`torch.linalg.pinv`
- """
- def pixel_shuffle(input: Tensor, upscale_factor: _int) -> Tensor: ...
- def pixel_unshuffle(input: Tensor, downscale_factor: _int) -> Tensor: ...
- def poisson(input: Tensor, generator: Generator | None = None) -> Tensor:
- r"""
- poisson(input, generator=None) -> Tensor
- Returns a tensor of the same size as :attr:`input` with each element
- sampled from a Poisson distribution with rate parameter given by the corresponding
- element in :attr:`input` i.e.,
- .. math::
- \text{out}_i \sim \text{Poisson}(\text{input}_i)
- :attr:`input` must be non-negative.
- Args:
- input (Tensor): the input tensor containing the rates of the Poisson distribution
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- Example::
- >>> rates = torch.rand(4, 4) * 5 # rate parameter between 0 and 5
- >>> torch.poisson(rates)
- tensor([[9., 1., 3., 5.],
- [8., 6., 6., 0.],
- [0., 4., 5., 3.],
- [2., 1., 4., 2.]])
- """
- def poisson_nll_loss(
- input: Tensor,
- target: Tensor,
- log_input: _bool,
- full: _bool,
- eps: _float,
- reduction: _int,
- ) -> Tensor: ...
- def polar(
- abs: Tensor,
- angle: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- polar(abs, angle, *, out=None) -> Tensor
- Constructs a complex tensor whose elements are Cartesian coordinates
- corresponding to the polar coordinates with absolute value :attr:`abs` and angle
- :attr:`angle`.
- .. math::
- \text{out} = \text{abs} \cdot \cos(\text{angle}) + \text{abs} \cdot \sin(\text{angle}) \cdot j
- .. note::
- `torch.polar` is similar to
- `std::polar <https://en.cppreference.com/w/cpp/numeric/complex/polar>`_
- and does not compute the polar decomposition
- of a complex tensor like Python's `cmath.polar` and SciPy's `linalg.polar` do.
- The behavior of this function is undefined if `abs` is negative or NaN, or if `angle` is
- infinite.
- Args:
- abs (Tensor): The absolute value the complex tensor. Must be float or double.
- angle (Tensor): The angle of the complex tensor. Must be same dtype as
- :attr:`abs`.
- Keyword args:
- out (Tensor): If the inputs are ``torch.float32``, must be
- ``torch.complex64``. If the inputs are ``torch.float64``, must be
- ``torch.complex128``.
- Example::
- >>> import numpy as np
- >>> abs = torch.tensor([1, 2], dtype=torch.float64)
- >>> angle = torch.tensor([np.pi / 2, 5 * np.pi / 4], dtype=torch.float64)
- >>> z = torch.polar(abs, angle)
- >>> z
- tensor([(0.0000+1.0000j), (-1.4142-1.4142j)], dtype=torch.complex128)
- """
- def polygamma(
- n: _int,
- input: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- polygamma(n, input, *, out=None) -> Tensor
- Alias for :func:`torch.special.polygamma`.
- """
- def positive(input: Tensor) -> Tensor:
- r"""
- positive(input) -> Tensor
- Returns :attr:`input`.
- Throws a runtime error if :attr:`input` is a bool tensor.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> t = torch.randn(5)
- >>> t
- tensor([ 0.0090, -0.2262, -0.0682, -0.2866, 0.3940])
- >>> torch.positive(t)
- tensor([ 0.0090, -0.2262, -0.0682, -0.2866, 0.3940])
- """
- @overload
- def pow(
- input: Tensor,
- exponent: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- pow(input, exponent, *, out=None) -> Tensor
- Takes the power of each element in :attr:`input` with :attr:`exponent` and
- returns a tensor with the result.
- :attr:`exponent` can be either a single ``float`` number or a `Tensor`
- with the same number of elements as :attr:`input`.
- When :attr:`exponent` is a scalar value, the operation applied is:
- .. math::
- \text{out}_i = x_i ^ \text{exponent}
- When :attr:`exponent` is a tensor, the operation applied is:
- .. math::
- \text{out}_i = x_i ^ {\text{exponent}_i}
- When :attr:`exponent` is a tensor, the shapes of :attr:`input`
- and :attr:`exponent` must be :ref:`broadcastable <broadcasting-semantics>`.
- Args:
- input (Tensor): the input tensor.
- exponent (float or tensor): the exponent value
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.4331, 1.2475, 0.6834, -0.2791])
- >>> torch.pow(a, 2)
- tensor([ 0.1875, 1.5561, 0.4670, 0.0779])
- >>> exp = torch.arange(1., 5.)
- >>> a = torch.arange(1., 5.)
- >>> a
- tensor([ 1., 2., 3., 4.])
- >>> exp
- tensor([ 1., 2., 3., 4.])
- >>> torch.pow(a, exp)
- tensor([ 1., 4., 27., 256.])
- .. function:: pow(self, exponent, *, out=None) -> Tensor
- :noindex:
- :attr:`self` is a scalar ``float`` value, and :attr:`exponent` is a tensor.
- The returned tensor :attr:`out` is of the same shape as :attr:`exponent`
- The operation applied is:
- .. math::
- \text{out}_i = \text{self} ^ {\text{exponent}_i}
- Args:
- self (float): the scalar base value for the power operation
- exponent (Tensor): the exponent tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> exp = torch.arange(1., 5.)
- >>> base = 2
- >>> torch.pow(base, exp)
- tensor([ 2., 4., 8., 16.])
- """
- @overload
- def pow(
- self: Number | _complex,
- exponent: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- pow(input, exponent, *, out=None) -> Tensor
- Takes the power of each element in :attr:`input` with :attr:`exponent` and
- returns a tensor with the result.
- :attr:`exponent` can be either a single ``float`` number or a `Tensor`
- with the same number of elements as :attr:`input`.
- When :attr:`exponent` is a scalar value, the operation applied is:
- .. math::
- \text{out}_i = x_i ^ \text{exponent}
- When :attr:`exponent` is a tensor, the operation applied is:
- .. math::
- \text{out}_i = x_i ^ {\text{exponent}_i}
- When :attr:`exponent` is a tensor, the shapes of :attr:`input`
- and :attr:`exponent` must be :ref:`broadcastable <broadcasting-semantics>`.
- Args:
- input (Tensor): the input tensor.
- exponent (float or tensor): the exponent value
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.4331, 1.2475, 0.6834, -0.2791])
- >>> torch.pow(a, 2)
- tensor([ 0.1875, 1.5561, 0.4670, 0.0779])
- >>> exp = torch.arange(1., 5.)
- >>> a = torch.arange(1., 5.)
- >>> a
- tensor([ 1., 2., 3., 4.])
- >>> exp
- tensor([ 1., 2., 3., 4.])
- >>> torch.pow(a, exp)
- tensor([ 1., 4., 27., 256.])
- .. function:: pow(self, exponent, *, out=None) -> Tensor
- :noindex:
- :attr:`self` is a scalar ``float`` value, and :attr:`exponent` is a tensor.
- The returned tensor :attr:`out` is of the same shape as :attr:`exponent`
- The operation applied is:
- .. math::
- \text{out}_i = \text{self} ^ {\text{exponent}_i}
- Args:
- self (float): the scalar base value for the power operation
- exponent (Tensor): the exponent tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> exp = torch.arange(1., 5.)
- >>> base = 2
- >>> torch.pow(base, exp)
- tensor([ 2., 4., 8., 16.])
- """
- @overload
- def pow(
- input: Tensor,
- exponent: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- pow(input, exponent, *, out=None) -> Tensor
- Takes the power of each element in :attr:`input` with :attr:`exponent` and
- returns a tensor with the result.
- :attr:`exponent` can be either a single ``float`` number or a `Tensor`
- with the same number of elements as :attr:`input`.
- When :attr:`exponent` is a scalar value, the operation applied is:
- .. math::
- \text{out}_i = x_i ^ \text{exponent}
- When :attr:`exponent` is a tensor, the operation applied is:
- .. math::
- \text{out}_i = x_i ^ {\text{exponent}_i}
- When :attr:`exponent` is a tensor, the shapes of :attr:`input`
- and :attr:`exponent` must be :ref:`broadcastable <broadcasting-semantics>`.
- Args:
- input (Tensor): the input tensor.
- exponent (float or tensor): the exponent value
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.4331, 1.2475, 0.6834, -0.2791])
- >>> torch.pow(a, 2)
- tensor([ 0.1875, 1.5561, 0.4670, 0.0779])
- >>> exp = torch.arange(1., 5.)
- >>> a = torch.arange(1., 5.)
- >>> a
- tensor([ 1., 2., 3., 4.])
- >>> exp
- tensor([ 1., 2., 3., 4.])
- >>> torch.pow(a, exp)
- tensor([ 1., 4., 27., 256.])
- .. function:: pow(self, exponent, *, out=None) -> Tensor
- :noindex:
- :attr:`self` is a scalar ``float`` value, and :attr:`exponent` is a tensor.
- The returned tensor :attr:`out` is of the same shape as :attr:`exponent`
- The operation applied is:
- .. math::
- \text{out}_i = \text{self} ^ {\text{exponent}_i}
- Args:
- self (float): the scalar base value for the power operation
- exponent (Tensor): the exponent tensor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> exp = torch.arange(1., 5.)
- >>> base = 2
- >>> torch.pow(base, exp)
- tensor([ 2., 4., 8., 16.])
- """
- def prelu(input: Tensor, weight: Tensor) -> Tensor: ...
- @overload
- def prod(input: Tensor, *, dtype: _dtype | None = None) -> Tensor:
- r"""
- prod(input: Tensor, *, dtype: Optional[_dtype]) -> Tensor
- Returns the product of all elements in the :attr:`input` tensor.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[-0.8020, 0.5428, -1.5854]])
- >>> torch.prod(a)
- tensor(0.6902)
- .. function:: prod(input, dim, keepdim=False, *, dtype=None) -> Tensor
- :noindex:
- Returns the product of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in
- the output tensor having 1 fewer dimension than :attr:`input`.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(4, 2)
- >>> a
- tensor([[ 0.5261, -0.3837],
- [ 1.1857, -0.2498],
- [-1.1646, 0.0705],
- [ 1.1131, -1.0629]])
- >>> torch.prod(a, 1)
- tensor([-0.2018, -0.2962, -0.0821, -1.1831])
- """
- @overload
- def prod(
- input: Tensor,
- dim: _int,
- keepdim: _bool = False,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- prod(input: Tensor, *, dtype: Optional[_dtype]) -> Tensor
- Returns the product of all elements in the :attr:`input` tensor.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[-0.8020, 0.5428, -1.5854]])
- >>> torch.prod(a)
- tensor(0.6902)
- .. function:: prod(input, dim, keepdim=False, *, dtype=None) -> Tensor
- :noindex:
- Returns the product of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in
- the output tensor having 1 fewer dimension than :attr:`input`.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(4, 2)
- >>> a
- tensor([[ 0.5261, -0.3837],
- [ 1.1857, -0.2498],
- [-1.1646, 0.0705],
- [ 1.1131, -1.0629]])
- >>> torch.prod(a, 1)
- tensor([-0.2018, -0.2962, -0.0821, -1.1831])
- """
- @overload
- def prod(
- input: Tensor,
- dim: str | EllipsisType | None,
- keepdim: _bool = False,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- prod(input: Tensor, *, dtype: Optional[_dtype]) -> Tensor
- Returns the product of all elements in the :attr:`input` tensor.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[-0.8020, 0.5428, -1.5854]])
- >>> torch.prod(a)
- tensor(0.6902)
- .. function:: prod(input, dim, keepdim=False, *, dtype=None) -> Tensor
- :noindex:
- Returns the product of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in
- the output tensor having 1 fewer dimension than :attr:`input`.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(4, 2)
- >>> a
- tensor([[ 0.5261, -0.3837],
- [ 1.1857, -0.2498],
- [-1.1646, 0.0705],
- [ 1.1131, -1.0629]])
- >>> torch.prod(a, 1)
- tensor([-0.2018, -0.2962, -0.0821, -1.1831])
- """
- def promote_types(type1: _dtype, type2: _dtype) -> _dtype:
- r"""
- promote_types(type1, type2) -> dtype
- Returns the :class:`torch.dtype` with the smallest size and scalar kind that is
- not smaller nor of lower kind than either `type1` or `type2`. See type promotion
- :ref:`documentation <type-promotion-doc>` for more information on the type
- promotion logic.
- Args:
- type1 (:class:`torch.dtype`)
- type2 (:class:`torch.dtype`)
- Example::
- >>> torch.promote_types(torch.int32, torch.float32)
- torch.float32
- >>> torch.promote_types(torch.uint8, torch.long)
- torch.long
- """
- def put(
- input: Tensor,
- index: Tensor,
- source: Tensor,
- accumulate: _bool = False,
- ) -> Tensor: ...
- def q_per_channel_axis(input: Tensor) -> _int: ...
- def q_per_channel_scales(input: Tensor) -> Tensor: ...
- def q_per_channel_zero_points(input: Tensor) -> Tensor: ...
- def q_scale(input: Tensor) -> _float: ...
- def q_zero_point(input: Tensor) -> _int: ...
- def qr(
- input: Tensor,
- some: _bool = True,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.qr:
- r"""
- qr(input: Tensor, some: bool = True, *, out: Union[Tensor, Tuple[Tensor, ...], List[Tensor], None]) -> (Tensor, Tensor)
- Computes the QR decomposition of a matrix or a batch of matrices :attr:`input`,
- and returns a namedtuple (Q, R) of tensors such that :math:`\text{input} = Q R`
- with :math:`Q` being an orthogonal matrix or batch of orthogonal matrices and
- :math:`R` being an upper triangular matrix or batch of upper triangular matrices.
- If :attr:`some` is ``True``, then this function returns the thin (reduced) QR factorization.
- Otherwise, if :attr:`some` is ``False``, this function returns the complete QR factorization.
- .. warning::
- :func:`torch.qr` is deprecated in favor of :func:`torch.linalg.qr`
- and will be removed in a future PyTorch release. The boolean parameter :attr:`some` has been
- replaced with a string parameter :attr:`mode`.
- ``Q, R = torch.qr(A)`` should be replaced with
- .. code:: python
- Q, R = torch.linalg.qr(A)
- ``Q, R = torch.qr(A, some=False)`` should be replaced with
- .. code:: python
- Q, R = torch.linalg.qr(A, mode="complete")
- .. warning::
- If you plan to backpropagate through QR, note that the current backward implementation
- is only well-defined when the first :math:`\min(input.size(-1), input.size(-2))`
- columns of :attr:`input` are linearly independent.
- This behavior will probably change once QR supports pivoting.
- .. note:: This function uses LAPACK for CPU inputs and MAGMA for CUDA inputs,
- and may produce different (valid) decompositions on different device types
- or different platforms.
- Args:
- input (Tensor): the input tensor of size :math:`(*, m, n)` where `*` is zero or more
- batch dimensions consisting of matrices of dimension :math:`m \times n`.
- some (bool, optional): Set to ``True`` for reduced QR decomposition and ``False`` for
- complete QR decomposition. If `k = min(m, n)` then:
- * ``some=True`` : returns `(Q, R)` with dimensions (m, k), (k, n) (default)
- * ``'some=False'``: returns `(Q, R)` with dimensions (m, m), (m, n)
- Keyword args:
- out (tuple, optional): tuple of `Q` and `R` tensors.
- The dimensions of `Q` and `R` are detailed in the description of :attr:`some` above.
- Example::
- >>> a = torch.tensor([[12., -51, 4], [6, 167, -68], [-4, 24, -41]])
- >>> q, r = torch.qr(a)
- >>> q
- tensor([[-0.8571, 0.3943, 0.3314],
- [-0.4286, -0.9029, -0.0343],
- [ 0.2857, -0.1714, 0.9429]])
- >>> r
- tensor([[ -14.0000, -21.0000, 14.0000],
- [ 0.0000, -175.0000, 70.0000],
- [ 0.0000, 0.0000, -35.0000]])
- >>> torch.mm(q, r).round()
- tensor([[ 12., -51., 4.],
- [ 6., 167., -68.],
- [ -4., 24., -41.]])
- >>> torch.mm(q.t(), q).round()
- tensor([[ 1., 0., 0.],
- [ 0., 1., -0.],
- [ 0., -0., 1.]])
- >>> a = torch.randn(3, 4, 5)
- >>> q, r = torch.qr(a, some=False)
- >>> torch.allclose(torch.matmul(q, r), a)
- True
- >>> torch.allclose(torch.matmul(q.mT, q), torch.eye(5))
- True
- """
- @overload
- def quantile(
- input: Tensor,
- q: Tensor,
- dim: _int | None = None,
- keepdim: _bool = False,
- *,
- interpolation: str = "linear",
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- quantile(input, q, dim=None, keepdim=False, *, interpolation='linear', out=None) -> Tensor
- Computes the q-th quantiles of each row of the :attr:`input` tensor along the dimension :attr:`dim`.
- To compute the quantile, we map q in [0, 1] to the range of indices [0, n] to find the location
- of the quantile in the sorted input. If the quantile lies between two data points ``a < b`` with
- indices ``i`` and ``j`` in the sorted order, result is computed according to the given
- :attr:`interpolation` method as follows:
- - ``linear``: ``a + (b - a) * fraction``, where ``fraction`` is the fractional part of the computed quantile index.
- - ``lower``: ``a``.
- - ``higher``: ``b``.
- - ``nearest``: ``a`` or ``b``, whichever's index is closer to the computed quantile index (follows :func:`torch.round`).
- - ``midpoint``: ``(a + b) / 2``.
- If :attr:`q` is a 1D tensor, the first dimension of the output represents the quantiles and has size
- equal to the size of :attr:`q`, the remaining dimensions are what remains from the reduction.
- .. note::
- By default :attr:`dim` is ``None`` resulting in the :attr:`input` tensor being flattened before computation.
- Args:
- input (Tensor): the input tensor.
- q (float or Tensor): a scalar or 1D tensor of values in the range [0, 1].
- dim (int, optional): the dimension to reduce.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword arguments:
- interpolation (str, optional): interpolation method to use when the desired quantile lies between two data points.
- Can be ``linear``, ``lower``, ``higher``, ``midpoint`` and ``nearest``.
- Default is ``linear``.
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(2, 3)
- >>> a
- tensor([[ 0.0795, -1.2117, 0.9765],
- [ 1.1707, 0.6706, 0.4884]])
- >>> q = torch.tensor([0.25, 0.5, 0.75])
- >>> torch.quantile(a, q, dim=1, keepdim=True)
- tensor([[[-0.5661],
- [ 0.5795]],
- [[ 0.0795],
- [ 0.6706]],
- [[ 0.5280],
- [ 0.9206]]])
- >>> torch.quantile(a, q, dim=1, keepdim=True).shape
- torch.Size([3, 2, 1])
- >>> a = torch.arange(4.)
- >>> a
- tensor([0., 1., 2., 3.])
- >>> torch.quantile(a, 0.6, interpolation='linear')
- tensor(1.8000)
- >>> torch.quantile(a, 0.6, interpolation='lower')
- tensor(1.)
- >>> torch.quantile(a, 0.6, interpolation='higher')
- tensor(2.)
- >>> torch.quantile(a, 0.6, interpolation='midpoint')
- tensor(1.5000)
- >>> torch.quantile(a, 0.6, interpolation='nearest')
- tensor(2.)
- >>> torch.quantile(a, 0.4, interpolation='nearest')
- tensor(1.)
- """
- @overload
- def quantile(
- input: Tensor,
- q: _float,
- dim: _int | None = None,
- keepdim: _bool = False,
- *,
- interpolation: str = "linear",
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- quantile(input, q, dim=None, keepdim=False, *, interpolation='linear', out=None) -> Tensor
- Computes the q-th quantiles of each row of the :attr:`input` tensor along the dimension :attr:`dim`.
- To compute the quantile, we map q in [0, 1] to the range of indices [0, n] to find the location
- of the quantile in the sorted input. If the quantile lies between two data points ``a < b`` with
- indices ``i`` and ``j`` in the sorted order, result is computed according to the given
- :attr:`interpolation` method as follows:
- - ``linear``: ``a + (b - a) * fraction``, where ``fraction`` is the fractional part of the computed quantile index.
- - ``lower``: ``a``.
- - ``higher``: ``b``.
- - ``nearest``: ``a`` or ``b``, whichever's index is closer to the computed quantile index (follows :func:`torch.round`).
- - ``midpoint``: ``(a + b) / 2``.
- If :attr:`q` is a 1D tensor, the first dimension of the output represents the quantiles and has size
- equal to the size of :attr:`q`, the remaining dimensions are what remains from the reduction.
- .. note::
- By default :attr:`dim` is ``None`` resulting in the :attr:`input` tensor being flattened before computation.
- Args:
- input (Tensor): the input tensor.
- q (float or Tensor): a scalar or 1D tensor of values in the range [0, 1].
- dim (int, optional): the dimension to reduce.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword arguments:
- interpolation (str, optional): interpolation method to use when the desired quantile lies between two data points.
- Can be ``linear``, ``lower``, ``higher``, ``midpoint`` and ``nearest``.
- Default is ``linear``.
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(2, 3)
- >>> a
- tensor([[ 0.0795, -1.2117, 0.9765],
- [ 1.1707, 0.6706, 0.4884]])
- >>> q = torch.tensor([0.25, 0.5, 0.75])
- >>> torch.quantile(a, q, dim=1, keepdim=True)
- tensor([[[-0.5661],
- [ 0.5795]],
- [[ 0.0795],
- [ 0.6706]],
- [[ 0.5280],
- [ 0.9206]]])
- >>> torch.quantile(a, q, dim=1, keepdim=True).shape
- torch.Size([3, 2, 1])
- >>> a = torch.arange(4.)
- >>> a
- tensor([0., 1., 2., 3.])
- >>> torch.quantile(a, 0.6, interpolation='linear')
- tensor(1.8000)
- >>> torch.quantile(a, 0.6, interpolation='lower')
- tensor(1.)
- >>> torch.quantile(a, 0.6, interpolation='higher')
- tensor(2.)
- >>> torch.quantile(a, 0.6, interpolation='midpoint')
- tensor(1.5000)
- >>> torch.quantile(a, 0.6, interpolation='nearest')
- tensor(2.)
- >>> torch.quantile(a, 0.4, interpolation='nearest')
- tensor(1.)
- """
- def quantize_per_channel(
- input: Tensor,
- scales: Tensor,
- zero_points: Tensor,
- axis: _int,
- dtype: _dtype,
- ) -> Tensor:
- r"""
- quantize_per_channel(input, scales, zero_points, axis, dtype) -> Tensor
- Converts a float tensor to a per-channel quantized tensor with given scales and zero points.
- Arguments:
- input (Tensor): float tensor to quantize
- scales (Tensor): float 1D tensor of scales to use, size should match ``input.size(axis)``
- zero_points (int): integer 1D tensor of offset to use, size should match ``input.size(axis)``
- axis (int): dimension on which apply per-channel quantization
- dtype (:class:`torch.dtype`): the desired data type of returned tensor.
- Has to be one of the quantized dtypes: ``torch.quint8``, ``torch.qint8``, ``torch.qint32``
- Returns:
- Tensor: A newly quantized tensor
- Example::
- >>> x = torch.tensor([[-1.0, 0.0], [1.0, 2.0]])
- >>> torch.quantize_per_channel(x, torch.tensor([0.1, 0.01]), torch.tensor([10, 0]), 0, torch.quint8)
- tensor([[-1., 0.],
- [ 1., 2.]], size=(2, 2), dtype=torch.quint8,
- quantization_scheme=torch.per_channel_affine,
- scale=tensor([0.1000, 0.0100], dtype=torch.float64),
- zero_point=tensor([10, 0]), axis=0)
- >>> torch.quantize_per_channel(x, torch.tensor([0.1, 0.01]), torch.tensor([10, 0]), 0, torch.quint8).int_repr()
- tensor([[ 0, 10],
- [100, 200]], dtype=torch.uint8)
- """
- @overload
- def quantize_per_tensor(
- input: Tensor,
- scale: Tensor,
- zero_point: Tensor,
- dtype: _dtype,
- ) -> Tensor:
- r"""
- quantize_per_tensor(input, scale, zero_point, dtype) -> Tensor
- Converts a float tensor to a quantized tensor with given scale and zero point.
- Arguments:
- input (Tensor): float tensor or list of tensors to quantize
- scale (float or Tensor): scale to apply in quantization formula
- zero_point (int or Tensor): offset in integer value that maps to float zero
- dtype (:class:`torch.dtype`): the desired data type of returned tensor.
- Has to be one of the quantized dtypes: ``torch.quint8``, ``torch.qint8``, ``torch.qint32``
- Returns:
- Tensor: A newly quantized tensor or list of quantized tensors.
- Example::
- >>> torch.quantize_per_tensor(torch.tensor([-1.0, 0.0, 1.0, 2.0]), 0.1, 10, torch.quint8)
- tensor([-1., 0., 1., 2.], size=(4,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.1, zero_point=10)
- >>> torch.quantize_per_tensor(torch.tensor([-1.0, 0.0, 1.0, 2.0]), 0.1, 10, torch.quint8).int_repr()
- tensor([ 0, 10, 20, 30], dtype=torch.uint8)
- >>> torch.quantize_per_tensor([torch.tensor([-1.0, 0.0]), torch.tensor([-2.0, 2.0])],
- >>> torch.tensor([0.1, 0.2]), torch.tensor([10, 20]), torch.quint8)
- (tensor([-1., 0.], size=(2,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.1, zero_point=10),
- tensor([-2., 2.], size=(2,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.2, zero_point=20))
- >>> torch.quantize_per_tensor(torch.tensor([-1.0, 0.0, 1.0, 2.0]), torch.tensor(0.1), torch.tensor(10), torch.quint8)
- tensor([-1., 0., 1., 2.], size=(4,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.10, zero_point=10)
- """
- @overload
- def quantize_per_tensor(
- input: Tensor,
- scale: _float,
- zero_point: _int,
- dtype: _dtype,
- ) -> Tensor:
- r"""
- quantize_per_tensor(input, scale, zero_point, dtype) -> Tensor
- Converts a float tensor to a quantized tensor with given scale and zero point.
- Arguments:
- input (Tensor): float tensor or list of tensors to quantize
- scale (float or Tensor): scale to apply in quantization formula
- zero_point (int or Tensor): offset in integer value that maps to float zero
- dtype (:class:`torch.dtype`): the desired data type of returned tensor.
- Has to be one of the quantized dtypes: ``torch.quint8``, ``torch.qint8``, ``torch.qint32``
- Returns:
- Tensor: A newly quantized tensor or list of quantized tensors.
- Example::
- >>> torch.quantize_per_tensor(torch.tensor([-1.0, 0.0, 1.0, 2.0]), 0.1, 10, torch.quint8)
- tensor([-1., 0., 1., 2.], size=(4,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.1, zero_point=10)
- >>> torch.quantize_per_tensor(torch.tensor([-1.0, 0.0, 1.0, 2.0]), 0.1, 10, torch.quint8).int_repr()
- tensor([ 0, 10, 20, 30], dtype=torch.uint8)
- >>> torch.quantize_per_tensor([torch.tensor([-1.0, 0.0]), torch.tensor([-2.0, 2.0])],
- >>> torch.tensor([0.1, 0.2]), torch.tensor([10, 20]), torch.quint8)
- (tensor([-1., 0.], size=(2,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.1, zero_point=10),
- tensor([-2., 2.], size=(2,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.2, zero_point=20))
- >>> torch.quantize_per_tensor(torch.tensor([-1.0, 0.0, 1.0, 2.0]), torch.tensor(0.1), torch.tensor(10), torch.quint8)
- tensor([-1., 0., 1., 2.], size=(4,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.10, zero_point=10)
- """
- @overload
- def quantize_per_tensor(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- scales: Tensor,
- zero_points: Tensor,
- dtype: _dtype,
- ) -> tuple[Tensor, ...]:
- r"""
- quantize_per_tensor(input, scale, zero_point, dtype) -> Tensor
- Converts a float tensor to a quantized tensor with given scale and zero point.
- Arguments:
- input (Tensor): float tensor or list of tensors to quantize
- scale (float or Tensor): scale to apply in quantization formula
- zero_point (int or Tensor): offset in integer value that maps to float zero
- dtype (:class:`torch.dtype`): the desired data type of returned tensor.
- Has to be one of the quantized dtypes: ``torch.quint8``, ``torch.qint8``, ``torch.qint32``
- Returns:
- Tensor: A newly quantized tensor or list of quantized tensors.
- Example::
- >>> torch.quantize_per_tensor(torch.tensor([-1.0, 0.0, 1.0, 2.0]), 0.1, 10, torch.quint8)
- tensor([-1., 0., 1., 2.], size=(4,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.1, zero_point=10)
- >>> torch.quantize_per_tensor(torch.tensor([-1.0, 0.0, 1.0, 2.0]), 0.1, 10, torch.quint8).int_repr()
- tensor([ 0, 10, 20, 30], dtype=torch.uint8)
- >>> torch.quantize_per_tensor([torch.tensor([-1.0, 0.0]), torch.tensor([-2.0, 2.0])],
- >>> torch.tensor([0.1, 0.2]), torch.tensor([10, 20]), torch.quint8)
- (tensor([-1., 0.], size=(2,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.1, zero_point=10),
- tensor([-2., 2.], size=(2,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.2, zero_point=20))
- >>> torch.quantize_per_tensor(torch.tensor([-1.0, 0.0, 1.0, 2.0]), torch.tensor(0.1), torch.tensor(10), torch.quint8)
- tensor([-1., 0., 1., 2.], size=(4,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.10, zero_point=10)
- """
- def quantize_per_tensor_dynamic(
- input: Tensor,
- dtype: _dtype,
- reduce_range: _bool,
- ) -> Tensor:
- r"""
- quantize_per_tensor_dynamic(input, dtype, reduce_range) -> Tensor
- Converts a float tensor to a quantized tensor with scale and zero_point calculated
- dynamically based on the input.
- Arguments:
- input (Tensor): float tensor or list of tensors to quantize
- dtype (:class:`torch.dtype`): the desired data type of returned tensor.
- Has to be one of the quantized dtypes: ``torch.quint8``, ``torch.qint8``
- reduce_range (bool): a flag to indicate whether to reduce the range of quantized
- data by 1 bit, it's required to avoid instruction overflow for some hardwares
- Returns:
- Tensor: A newly (dynamically) quantized tensor
- Example::
- >>> t = torch.quantize_per_tensor_dynamic(torch.tensor([-1.0, 0.0, 1.0, 2.0]), torch.quint8, False)
- >>> print(t)
- tensor([-1., 0., 1., 2.], size=(4,), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.011764705882352941,
- zero_point=85)
- >>> t.int_repr()
- tensor([ 0, 85, 170, 255], dtype=torch.uint8)
- """
- def quantized_batch_norm(
- input: Tensor,
- weight: Tensor | None,
- bias: Tensor | None,
- mean: Tensor,
- var: Tensor,
- eps: _float,
- output_scale: _float,
- output_zero_point: _int,
- ) -> Tensor:
- r"""
- quantized_batch_norm(input, weight=None, bias=None, mean, var, eps, output_scale, output_zero_point) -> Tensor
- Applies batch normalization on a 4D (NCHW) quantized tensor.
- .. math::
- y = \frac{x - \mathrm{E}[x]}{\sqrt{\mathrm{Var}[x] + \epsilon}} * \gamma + \beta
- Arguments:
- input (Tensor): quantized tensor
- weight (Tensor): float tensor that corresponds to the gamma, size C
- bias (Tensor): float tensor that corresponds to the beta, size C
- mean (Tensor): float mean value in batch normalization, size C
- var (Tensor): float tensor for variance, size C
- eps (float): a value added to the denominator for numerical stability.
- output_scale (float): output quantized tensor scale
- output_zero_point (int): output quantized tensor zero_point
- Returns:
- Tensor: A quantized tensor with batch normalization applied.
- Example::
- >>> qx = torch.quantize_per_tensor(torch.rand(2, 2, 2, 2), 1.5, 3, torch.quint8)
- >>> torch.quantized_batch_norm(qx, torch.ones(2), torch.zeros(2), torch.rand(2), torch.rand(2), 0.00001, 0.2, 2)
- tensor([[[[-0.2000, -0.2000],
- [ 1.6000, -0.2000]],
- [[-0.4000, -0.4000],
- [-0.4000, 0.6000]]],
- [[[-0.2000, -0.2000],
- [-0.2000, -0.2000]],
- [[ 0.6000, -0.4000],
- [ 0.6000, -0.4000]]]], size=(2, 2, 2, 2), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=0.2, zero_point=2)
- """
- def quantized_gru_cell(
- input: Tensor,
- hx: Tensor,
- w_ih: Tensor,
- w_hh: Tensor,
- b_ih: Tensor,
- b_hh: Tensor,
- packed_ih: Tensor,
- packed_hh: Tensor,
- col_offsets_ih: Tensor,
- col_offsets_hh: Tensor,
- scale_ih: Number | _complex,
- scale_hh: Number | _complex,
- zero_point_ih: Number | _complex,
- zero_point_hh: Number | _complex,
- ) -> Tensor: ...
- def quantized_lstm_cell(
- input: Tensor,
- hx: tuple[Tensor, ...] | list[Tensor] | None,
- w_ih: Tensor,
- w_hh: Tensor,
- b_ih: Tensor,
- b_hh: Tensor,
- packed_ih: Tensor,
- packed_hh: Tensor,
- col_offsets_ih: Tensor,
- col_offsets_hh: Tensor,
- scale_ih: Number | _complex,
- scale_hh: Number | _complex,
- zero_point_ih: Number | _complex,
- zero_point_hh: Number | _complex,
- ) -> tuple[Tensor, Tensor]: ...
- def quantized_max_pool1d(
- input: Tensor,
- kernel_size: _int | _size,
- stride: _int | _size = (),
- padding: _int | _size = 0,
- dilation: _int | _size = 1,
- ceil_mode: _bool = False,
- ) -> Tensor:
- r"""
- quantized_max_pool1d(input, kernel_size, stride=[], padding=0, dilation=1, ceil_mode=False) -> Tensor
- Applies a 1D max pooling over an input quantized tensor composed of several input planes.
- Arguments:
- input (Tensor): quantized tensor
- kernel_size (list of int): the size of the sliding window
- stride (``list of int``, optional): the stride of the sliding window
- padding (``list of int``, optional): padding to be added on both sides, must be >= 0 and <= kernel_size / 2
- dilation (``list of int``, optional): The stride between elements within a sliding window, must be > 0. Default 1
- ceil_mode (bool, optional): If True, will use ceil instead of floor to compute the output shape.
- Defaults to False.
- Returns:
- Tensor: A quantized tensor with max_pool1d applied.
- Example::
- >>> qx = torch.quantize_per_tensor(torch.rand(2, 2), 1.5, 3, torch.quint8)
- >>> torch.quantized_max_pool1d(qx, [2])
- tensor([[0.0000],
- [1.5000]], size=(2, 1), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=1.5, zero_point=3)
- """
- def quantized_max_pool2d(
- input: Tensor,
- kernel_size: _int | _size,
- stride: _int | _size = (),
- padding: _int | _size = 0,
- dilation: _int | _size = 1,
- ceil_mode: _bool = False,
- ) -> Tensor:
- r"""
- quantized_max_pool2d(input, kernel_size, stride=[], padding=0, dilation=1, ceil_mode=False) -> Tensor
- Applies a 2D max pooling over an input quantized tensor composed of several input planes.
- Arguments:
- input (Tensor): quantized tensor
- kernel_size (``list of int``): the size of the sliding window
- stride (``list of int``, optional): the stride of the sliding window
- padding (``list of int``, optional): padding to be added on both sides, must be >= 0 and <= kernel_size / 2
- dilation (``list of int``, optional): The stride between elements within a sliding window, must be > 0. Default 1
- ceil_mode (bool, optional): If True, will use ceil instead of floor to compute the output shape.
- Defaults to False.
- Returns:
- Tensor: A quantized tensor with max_pool2d applied.
- Example::
- >>> qx = torch.quantize_per_tensor(torch.rand(2, 2, 2, 2), 1.5, 3, torch.quint8)
- >>> torch.quantized_max_pool2d(qx, [2,2])
- tensor([[[[1.5000]],
- [[1.5000]]],
- [[[0.0000]],
- [[0.0000]]]], size=(2, 2, 1, 1), dtype=torch.quint8,
- quantization_scheme=torch.per_tensor_affine, scale=1.5, zero_point=3)
- """
- def quantized_max_pool3d(
- input: Tensor,
- kernel_size: _int | _size,
- stride: _int | _size = (),
- padding: _int | _size = 0,
- dilation: _int | _size = 1,
- ceil_mode: _bool = False,
- ) -> Tensor: ...
- def quantized_rnn_relu_cell(
- input: Tensor,
- hx: Tensor,
- w_ih: Tensor,
- w_hh: Tensor,
- b_ih: Tensor,
- b_hh: Tensor,
- packed_ih: Tensor,
- packed_hh: Tensor,
- col_offsets_ih: Tensor,
- col_offsets_hh: Tensor,
- scale_ih: Number | _complex,
- scale_hh: Number | _complex,
- zero_point_ih: Number | _complex,
- zero_point_hh: Number | _complex,
- ) -> Tensor: ...
- def quantized_rnn_tanh_cell(
- input: Tensor,
- hx: Tensor,
- w_ih: Tensor,
- w_hh: Tensor,
- b_ih: Tensor,
- b_hh: Tensor,
- packed_ih: Tensor,
- packed_hh: Tensor,
- col_offsets_ih: Tensor,
- col_offsets_hh: Tensor,
- scale_ih: Number | _complex,
- scale_hh: Number | _complex,
- zero_point_ih: Number | _complex,
- zero_point_hh: Number | _complex,
- ) -> Tensor: ...
- def rad2deg(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- rad2deg(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Returns a new tensor with each of the elements of :attr:`input`
- converted from angles in radians to degrees.
- Args:
- input (Tensor): the input tensor.
- Keyword arguments:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([[3.142, -3.142], [6.283, -6.283], [1.570, -1.570]])
- >>> torch.rad2deg(a)
- tensor([[ 180.0233, -180.0233],
- [ 359.9894, -359.9894],
- [ 89.9544, -89.9544]])
- """
- def rad2deg_(input: Tensor) -> Tensor: ...
- @overload
- def rand(
- size: Sequence[_int | SymInt],
- *,
- generator: Generator | None,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- rand(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a uniform distribution
- on the interval :math:`[0, 1)`
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.rand(4)
- tensor([ 0.5204, 0.2503, 0.3525, 0.5673])
- >>> torch.rand(2, 3)
- tensor([[ 0.8237, 0.5781, 0.6879],
- [ 0.3816, 0.7249, 0.0998]])
- """
- @overload
- def rand(
- *size: _int | SymInt,
- generator: Generator | None,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- rand(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a uniform distribution
- on the interval :math:`[0, 1)`
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.rand(4)
- tensor([ 0.5204, 0.2503, 0.3525, 0.5673])
- >>> torch.rand(2, 3)
- tensor([[ 0.8237, 0.5781, 0.6879],
- [ 0.3816, 0.7249, 0.0998]])
- """
- @overload
- def rand(
- size: Sequence[_int | SymInt],
- *,
- generator: Generator | None,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- rand(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a uniform distribution
- on the interval :math:`[0, 1)`
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.rand(4)
- tensor([ 0.5204, 0.2503, 0.3525, 0.5673])
- >>> torch.rand(2, 3)
- tensor([[ 0.8237, 0.5781, 0.6879],
- [ 0.3816, 0.7249, 0.0998]])
- """
- @overload
- def rand(
- *size: _int | SymInt,
- generator: Generator | None,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- rand(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a uniform distribution
- on the interval :math:`[0, 1)`
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.rand(4)
- tensor([ 0.5204, 0.2503, 0.3525, 0.5673])
- >>> torch.rand(2, 3)
- tensor([[ 0.8237, 0.5781, 0.6879],
- [ 0.3816, 0.7249, 0.0998]])
- """
- @overload
- def rand(
- size: Sequence[_int | SymInt],
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- rand(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a uniform distribution
- on the interval :math:`[0, 1)`
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.rand(4)
- tensor([ 0.5204, 0.2503, 0.3525, 0.5673])
- >>> torch.rand(2, 3)
- tensor([[ 0.8237, 0.5781, 0.6879],
- [ 0.3816, 0.7249, 0.0998]])
- """
- @overload
- def rand(
- *size: _int | SymInt,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- rand(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a uniform distribution
- on the interval :math:`[0, 1)`
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.rand(4)
- tensor([ 0.5204, 0.2503, 0.3525, 0.5673])
- >>> torch.rand(2, 3)
- tensor([[ 0.8237, 0.5781, 0.6879],
- [ 0.3816, 0.7249, 0.0998]])
- """
- @overload
- def rand(
- size: Sequence[_int | SymInt],
- *,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- rand(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a uniform distribution
- on the interval :math:`[0, 1)`
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.rand(4)
- tensor([ 0.5204, 0.2503, 0.3525, 0.5673])
- >>> torch.rand(2, 3)
- tensor([[ 0.8237, 0.5781, 0.6879],
- [ 0.3816, 0.7249, 0.0998]])
- """
- @overload
- def rand(
- *size: _int | SymInt,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- rand(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a uniform distribution
- on the interval :math:`[0, 1)`
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.rand(4)
- tensor([ 0.5204, 0.2503, 0.3525, 0.5673])
- >>> torch.rand(2, 3)
- tensor([[ 0.8237, 0.5781, 0.6879],
- [ 0.3816, 0.7249, 0.0998]])
- """
- @overload
- def rand_like(
- input: Tensor,
- *,
- generator: Generator | None,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- rand_like(input, *, generator=None, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same size as :attr:`input` that is filled with
- random numbers from a uniform distribution on the interval :math:`[0, 1)`.
- ``torch.rand_like(input)`` is equivalent to
- ``torch.rand(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- """
- @overload
- def rand_like(
- input: Tensor,
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- rand_like(input, *, generator=None, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same size as :attr:`input` that is filled with
- random numbers from a uniform distribution on the interval :math:`[0, 1)`.
- ``torch.rand_like(input)`` is equivalent to
- ``torch.rand(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- """
- @overload
- def randint(
- low: _int,
- high: _int,
- size: _size,
- *,
- generator: Generator | None = None,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- randint(low=0, high, size, \*, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with random integers generated uniformly
- between :attr:`low` (inclusive) and :attr:`high` (exclusive).
- The shape of the tensor is defined by the variable argument :attr:`size`.
- .. note::
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- size (tuple): a tuple defining the shape of the output tensor.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the desired data type of returned tensor. Default: if ``None``,
- this function returns a tensor with dtype ``torch.int64``.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.randint(3, 5, (3,))
- tensor([4, 3, 4])
- >>> torch.randint(10, (2, 2))
- tensor([[0, 2],
- [5, 5]])
- >>> torch.randint(3, 10, (2, 2))
- tensor([[4, 5],
- [6, 7]])
- """
- @overload
- def randint(
- high: _int,
- size: _size,
- *,
- generator: Generator | None = None,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- randint(low=0, high, size, \*, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with random integers generated uniformly
- between :attr:`low` (inclusive) and :attr:`high` (exclusive).
- The shape of the tensor is defined by the variable argument :attr:`size`.
- .. note::
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- size (tuple): a tuple defining the shape of the output tensor.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the desired data type of returned tensor. Default: if ``None``,
- this function returns a tensor with dtype ``torch.int64``.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.randint(3, 5, (3,))
- tensor([4, 3, 4])
- >>> torch.randint(10, (2, 2))
- tensor([[0, 2],
- [5, 5]])
- >>> torch.randint(3, 10, (2, 2))
- tensor([[4, 5],
- [6, 7]])
- """
- @overload
- def randint(
- high: _int | SymInt,
- size: Sequence[_int | SymInt],
- *,
- generator: Generator | None,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randint(low=0, high, size, \*, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with random integers generated uniformly
- between :attr:`low` (inclusive) and :attr:`high` (exclusive).
- The shape of the tensor is defined by the variable argument :attr:`size`.
- .. note::
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- size (tuple): a tuple defining the shape of the output tensor.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the desired data type of returned tensor. Default: if ``None``,
- this function returns a tensor with dtype ``torch.int64``.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.randint(3, 5, (3,))
- tensor([4, 3, 4])
- >>> torch.randint(10, (2, 2))
- tensor([[0, 2],
- [5, 5]])
- >>> torch.randint(3, 10, (2, 2))
- tensor([[4, 5],
- [6, 7]])
- """
- @overload
- def randint(
- high: _int | SymInt,
- size: Sequence[_int | SymInt],
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randint(low=0, high, size, \*, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with random integers generated uniformly
- between :attr:`low` (inclusive) and :attr:`high` (exclusive).
- The shape of the tensor is defined by the variable argument :attr:`size`.
- .. note::
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- size (tuple): a tuple defining the shape of the output tensor.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the desired data type of returned tensor. Default: if ``None``,
- this function returns a tensor with dtype ``torch.int64``.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.randint(3, 5, (3,))
- tensor([4, 3, 4])
- >>> torch.randint(10, (2, 2))
- tensor([[0, 2],
- [5, 5]])
- >>> torch.randint(3, 10, (2, 2))
- tensor([[4, 5],
- [6, 7]])
- """
- @overload
- def randint(
- low: _int | SymInt,
- high: _int | SymInt,
- size: Sequence[_int | SymInt],
- *,
- generator: Generator | None,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randint(low=0, high, size, \*, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with random integers generated uniformly
- between :attr:`low` (inclusive) and :attr:`high` (exclusive).
- The shape of the tensor is defined by the variable argument :attr:`size`.
- .. note::
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- size (tuple): a tuple defining the shape of the output tensor.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the desired data type of returned tensor. Default: if ``None``,
- this function returns a tensor with dtype ``torch.int64``.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.randint(3, 5, (3,))
- tensor([4, 3, 4])
- >>> torch.randint(10, (2, 2))
- tensor([[0, 2],
- [5, 5]])
- >>> torch.randint(3, 10, (2, 2))
- tensor([[4, 5],
- [6, 7]])
- """
- @overload
- def randint(
- low: _int | SymInt,
- high: _int | SymInt,
- size: Sequence[_int | SymInt],
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randint(low=0, high, size, \*, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with random integers generated uniformly
- between :attr:`low` (inclusive) and :attr:`high` (exclusive).
- The shape of the tensor is defined by the variable argument :attr:`size`.
- .. note::
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- size (tuple): a tuple defining the shape of the output tensor.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (torch.dtype, optional): the desired data type of returned tensor. Default: if ``None``,
- this function returns a tensor with dtype ``torch.int64``.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.randint(3, 5, (3,))
- tensor([4, 3, 4])
- >>> torch.randint(10, (2, 2))
- tensor([[0, 2],
- [5, 5]])
- >>> torch.randint(3, 10, (2, 2))
- tensor([[4, 5],
- [6, 7]])
- """
- @overload
- def randint_like(
- input: Tensor,
- low: _int | SymInt,
- high: _int | SymInt,
- *,
- generator: Generator | None,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randint_like(input, low=0, high, \*, generator=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same shape as Tensor :attr:`input` filled with
- random integers generated uniformly between :attr:`low` (inclusive) and
- :attr:`high` (exclusive).
- .. note:
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- """
- @overload
- def randint_like(
- input: Tensor,
- low: _int | SymInt,
- high: _int | SymInt,
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randint_like(input, low=0, high, \*, generator=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same shape as Tensor :attr:`input` filled with
- random integers generated uniformly between :attr:`low` (inclusive) and
- :attr:`high` (exclusive).
- .. note:
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- """
- @overload
- def randint_like(
- input: Tensor,
- high: Tensor,
- *,
- generator: Generator | None,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randint_like(input, low=0, high, \*, generator=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same shape as Tensor :attr:`input` filled with
- random integers generated uniformly between :attr:`low` (inclusive) and
- :attr:`high` (exclusive).
- .. note:
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- """
- @overload
- def randint_like(
- input: Tensor,
- high: Tensor,
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randint_like(input, low=0, high, \*, generator=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same shape as Tensor :attr:`input` filled with
- random integers generated uniformly between :attr:`low` (inclusive) and
- :attr:`high` (exclusive).
- .. note:
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- """
- @overload
- def randint_like(
- input: Tensor,
- high: _int | SymInt,
- *,
- generator: Generator | None,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randint_like(input, low=0, high, \*, generator=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same shape as Tensor :attr:`input` filled with
- random integers generated uniformly between :attr:`low` (inclusive) and
- :attr:`high` (exclusive).
- .. note:
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- """
- @overload
- def randint_like(
- input: Tensor,
- high: _int | SymInt,
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randint_like(input, low=0, high, \*, generator=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same shape as Tensor :attr:`input` filled with
- random integers generated uniformly between :attr:`low` (inclusive) and
- :attr:`high` (exclusive).
- .. note:
- With the global dtype default (``torch.float32``), this function returns
- a tensor with dtype ``torch.int64``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- low (int, optional): Lowest integer to be drawn from the distribution. Default: 0.
- high (int): One above the highest integer to be drawn from the distribution.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- """
- @overload
- def randn(
- size: Sequence[_int | SymInt],
- *,
- generator: Generator | None,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randn(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a normal distribution
- with mean `0` and variance `1` (also called the standard normal
- distribution).
- .. math::
- \text{out}_{i} \sim \mathcal{N}(0, 1)
- For complex dtypes, the tensor is i.i.d. sampled from a `complex normal distribution`_ with zero mean and
- unit variance as
- .. math::
- \text{out}_{i} \sim \mathcal{CN}(0, 1)
- This is equivalent to separately sampling the real :math:`(\operatorname{Re})` and imaginary
- :math:`(\operatorname{Im})` part of :math:`\text{out}_i` as
- .. math::
- \operatorname{Re}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2}),\quad
- \operatorname{Im}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2})
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.randn(4)
- tensor([-2.1436, 0.9966, 2.3426, -0.6366])
- >>> torch.randn(2, 3)
- tensor([[ 1.5954, 2.8929, -1.0923],
- [ 1.1719, -0.4709, -0.1996]])
- .. _complex normal distribution: https://en.wikipedia.org/wiki/Complex_normal_distribution
- """
- @overload
- def randn(
- *size: _int | SymInt,
- generator: Generator | None,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randn(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a normal distribution
- with mean `0` and variance `1` (also called the standard normal
- distribution).
- .. math::
- \text{out}_{i} \sim \mathcal{N}(0, 1)
- For complex dtypes, the tensor is i.i.d. sampled from a `complex normal distribution`_ with zero mean and
- unit variance as
- .. math::
- \text{out}_{i} \sim \mathcal{CN}(0, 1)
- This is equivalent to separately sampling the real :math:`(\operatorname{Re})` and imaginary
- :math:`(\operatorname{Im})` part of :math:`\text{out}_i` as
- .. math::
- \operatorname{Re}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2}),\quad
- \operatorname{Im}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2})
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.randn(4)
- tensor([-2.1436, 0.9966, 2.3426, -0.6366])
- >>> torch.randn(2, 3)
- tensor([[ 1.5954, 2.8929, -1.0923],
- [ 1.1719, -0.4709, -0.1996]])
- .. _complex normal distribution: https://en.wikipedia.org/wiki/Complex_normal_distribution
- """
- @overload
- def randn(
- size: Sequence[_int | SymInt],
- *,
- generator: Generator | None,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randn(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a normal distribution
- with mean `0` and variance `1` (also called the standard normal
- distribution).
- .. math::
- \text{out}_{i} \sim \mathcal{N}(0, 1)
- For complex dtypes, the tensor is i.i.d. sampled from a `complex normal distribution`_ with zero mean and
- unit variance as
- .. math::
- \text{out}_{i} \sim \mathcal{CN}(0, 1)
- This is equivalent to separately sampling the real :math:`(\operatorname{Re})` and imaginary
- :math:`(\operatorname{Im})` part of :math:`\text{out}_i` as
- .. math::
- \operatorname{Re}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2}),\quad
- \operatorname{Im}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2})
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.randn(4)
- tensor([-2.1436, 0.9966, 2.3426, -0.6366])
- >>> torch.randn(2, 3)
- tensor([[ 1.5954, 2.8929, -1.0923],
- [ 1.1719, -0.4709, -0.1996]])
- .. _complex normal distribution: https://en.wikipedia.org/wiki/Complex_normal_distribution
- """
- @overload
- def randn(
- *size: _int | SymInt,
- generator: Generator | None,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randn(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a normal distribution
- with mean `0` and variance `1` (also called the standard normal
- distribution).
- .. math::
- \text{out}_{i} \sim \mathcal{N}(0, 1)
- For complex dtypes, the tensor is i.i.d. sampled from a `complex normal distribution`_ with zero mean and
- unit variance as
- .. math::
- \text{out}_{i} \sim \mathcal{CN}(0, 1)
- This is equivalent to separately sampling the real :math:`(\operatorname{Re})` and imaginary
- :math:`(\operatorname{Im})` part of :math:`\text{out}_i` as
- .. math::
- \operatorname{Re}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2}),\quad
- \operatorname{Im}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2})
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.randn(4)
- tensor([-2.1436, 0.9966, 2.3426, -0.6366])
- >>> torch.randn(2, 3)
- tensor([[ 1.5954, 2.8929, -1.0923],
- [ 1.1719, -0.4709, -0.1996]])
- .. _complex normal distribution: https://en.wikipedia.org/wiki/Complex_normal_distribution
- """
- @overload
- def randn(
- size: Sequence[_int | SymInt],
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randn(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a normal distribution
- with mean `0` and variance `1` (also called the standard normal
- distribution).
- .. math::
- \text{out}_{i} \sim \mathcal{N}(0, 1)
- For complex dtypes, the tensor is i.i.d. sampled from a `complex normal distribution`_ with zero mean and
- unit variance as
- .. math::
- \text{out}_{i} \sim \mathcal{CN}(0, 1)
- This is equivalent to separately sampling the real :math:`(\operatorname{Re})` and imaginary
- :math:`(\operatorname{Im})` part of :math:`\text{out}_i` as
- .. math::
- \operatorname{Re}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2}),\quad
- \operatorname{Im}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2})
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.randn(4)
- tensor([-2.1436, 0.9966, 2.3426, -0.6366])
- >>> torch.randn(2, 3)
- tensor([[ 1.5954, 2.8929, -1.0923],
- [ 1.1719, -0.4709, -0.1996]])
- .. _complex normal distribution: https://en.wikipedia.org/wiki/Complex_normal_distribution
- """
- @overload
- def randn(
- *size: _int | SymInt,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randn(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a normal distribution
- with mean `0` and variance `1` (also called the standard normal
- distribution).
- .. math::
- \text{out}_{i} \sim \mathcal{N}(0, 1)
- For complex dtypes, the tensor is i.i.d. sampled from a `complex normal distribution`_ with zero mean and
- unit variance as
- .. math::
- \text{out}_{i} \sim \mathcal{CN}(0, 1)
- This is equivalent to separately sampling the real :math:`(\operatorname{Re})` and imaginary
- :math:`(\operatorname{Im})` part of :math:`\text{out}_i` as
- .. math::
- \operatorname{Re}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2}),\quad
- \operatorname{Im}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2})
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.randn(4)
- tensor([-2.1436, 0.9966, 2.3426, -0.6366])
- >>> torch.randn(2, 3)
- tensor([[ 1.5954, 2.8929, -1.0923],
- [ 1.1719, -0.4709, -0.1996]])
- .. _complex normal distribution: https://en.wikipedia.org/wiki/Complex_normal_distribution
- """
- @overload
- def randn(
- size: Sequence[_int | SymInt],
- *,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randn(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a normal distribution
- with mean `0` and variance `1` (also called the standard normal
- distribution).
- .. math::
- \text{out}_{i} \sim \mathcal{N}(0, 1)
- For complex dtypes, the tensor is i.i.d. sampled from a `complex normal distribution`_ with zero mean and
- unit variance as
- .. math::
- \text{out}_{i} \sim \mathcal{CN}(0, 1)
- This is equivalent to separately sampling the real :math:`(\operatorname{Re})` and imaginary
- :math:`(\operatorname{Im})` part of :math:`\text{out}_i` as
- .. math::
- \operatorname{Re}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2}),\quad
- \operatorname{Im}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2})
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.randn(4)
- tensor([-2.1436, 0.9966, 2.3426, -0.6366])
- >>> torch.randn(2, 3)
- tensor([[ 1.5954, 2.8929, -1.0923],
- [ 1.1719, -0.4709, -0.1996]])
- .. _complex normal distribution: https://en.wikipedia.org/wiki/Complex_normal_distribution
- """
- @overload
- def randn(
- *size: _int | SymInt,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randn(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a tensor filled with random numbers from a normal distribution
- with mean `0` and variance `1` (also called the standard normal
- distribution).
- .. math::
- \text{out}_{i} \sim \mathcal{N}(0, 1)
- For complex dtypes, the tensor is i.i.d. sampled from a `complex normal distribution`_ with zero mean and
- unit variance as
- .. math::
- \text{out}_{i} \sim \mathcal{CN}(0, 1)
- This is equivalent to separately sampling the real :math:`(\operatorname{Re})` and imaginary
- :math:`(\operatorname{Im})` part of :math:`\text{out}_i` as
- .. math::
- \operatorname{Re}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2}),\quad
- \operatorname{Im}(\text{out}_{i}) \sim \mathcal{N}(0, \frac{1}{2})
- The shape of the tensor is defined by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.randn(4)
- tensor([-2.1436, 0.9966, 2.3426, -0.6366])
- >>> torch.randn(2, 3)
- tensor([[ 1.5954, 2.8929, -1.0923],
- [ 1.1719, -0.4709, -0.1996]])
- .. _complex normal distribution: https://en.wikipedia.org/wiki/Complex_normal_distribution
- """
- @overload
- def randn_like(
- input: Tensor,
- *,
- generator: Generator | None,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randn_like(input, *, generator=None, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same size as :attr:`input` that is filled with
- random numbers from a normal distribution with mean 0 and variance 1. Please refer to :func:`torch.randn` for the
- sampling process of complex dtypes. ``torch.randn_like(input)`` is equivalent to
- ``torch.randn(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- """
- @overload
- def randn_like(
- input: Tensor,
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randn_like(input, *, generator=None, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor with the same size as :attr:`input` that is filled with
- random numbers from a normal distribution with mean 0 and variance 1. Please refer to :func:`torch.randn` for the
- sampling process of complex dtypes. ``torch.randn_like(input)`` is equivalent to
- ``torch.randn(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- """
- @overload
- def randperm(
- n: _int | SymInt,
- *,
- generator: Generator | None,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randperm(n, *, generator=None, out=None, dtype=torch.int64,layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a random permutation of integers from ``0`` to ``n - 1``.
- Args:
- n (int): the upper bound (exclusive)
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: ``torch.int64``.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.randperm(4)
- tensor([2, 1, 0, 3])
- """
- @overload
- def randperm(
- n: _int | SymInt,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- randperm(n, *, generator=None, out=None, dtype=torch.int64,layout=torch.strided, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Returns a random permutation of integers from ``0`` to ``n - 1``.
- Args:
- n (int): the upper bound (exclusive)
- Keyword args:
- generator (:class:`torch.Generator`, optional): a pseudorandom number generator for sampling
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: ``torch.int64``.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.randperm(4)
- tensor([2, 1, 0, 3])
- """
- def range(
- start: Number,
- end: Number,
- step: Number = 1,
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- range(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a 1-D tensor of size :math:`\left\lfloor \frac{\text{end} - \text{start}}{\text{step}} \right\rfloor + 1`
- with values from :attr:`start` to :attr:`end` with step :attr:`step`. Step is
- the gap between two values in the tensor.
- .. math::
- \text{out}_{i+1} = \text{out}_i + \text{step}.
- .. warning::
- This function is deprecated and will be removed in a future release because its behavior is inconsistent with
- Python's range builtin. Instead, use :func:`torch.arange`, which produces values in [start, end).
- Args:
- start (float, optional): the starting value for the set of points. Default: ``0``.
- end (float): the ending value for the set of points
- step (float, optional): the gap between each pair of adjacent points. Default: ``1``.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`). If `dtype` is not given, infer the data type from the other input
- arguments. If any of `start`, `end`, or `step` are floating-point, the
- `dtype` is inferred to be the default dtype, see
- :meth:`~torch.get_default_dtype`. Otherwise, the `dtype` is inferred to
- be `torch.int64`.
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.range(1, 4)
- tensor([ 1., 2., 3., 4.])
- >>> torch.range(1, 4, 0.5)
- tensor([ 1.0000, 1.5000, 2.0000, 2.5000, 3.0000, 3.5000, 4.0000])
- """
- def ravel(input: Tensor) -> Tensor:
- r"""
- ravel(input) -> Tensor
- Return a contiguous flattened tensor. A copy is made only if needed.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> t = torch.tensor([[[1, 2],
- ... [3, 4]],
- ... [[5, 6],
- ... [7, 8]]])
- >>> torch.ravel(t)
- tensor([1, 2, 3, 4, 5, 6, 7, 8])
- """
- def real(input: Tensor) -> Tensor:
- r"""
- real(input) -> Tensor
- Returns a new tensor containing real values of the :attr:`self` tensor.
- The returned tensor and :attr:`self` share the same underlying storage.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> x=torch.randn(4, dtype=torch.cfloat)
- >>> x
- tensor([(0.3100+0.3553j), (-0.5445-0.7896j), (-1.6492-0.0633j), (-0.0638-0.8119j)])
- >>> x.real
- tensor([ 0.3100, -0.5445, -1.6492, -0.0638])
- """
- def reciprocal(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- reciprocal(input, *, out=None) -> Tensor
- Returns a new tensor with the reciprocal of the elements of :attr:`input`
- .. math::
- \text{out}_{i} = \frac{1}{\text{input}_{i}}
- .. note::
- Unlike NumPy's reciprocal, torch.reciprocal supports integral inputs. Integral
- inputs to reciprocal are automatically :ref:`promoted <type-promotion-doc>` to
- the default scalar type.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-0.4595, -2.1219, -1.4314, 0.7298])
- >>> torch.reciprocal(a)
- tensor([-2.1763, -0.4713, -0.6986, 1.3702])
- """
- def reciprocal_(input: Tensor) -> Tensor: ...
- def relu(input: Tensor) -> Tensor: ...
- def relu_(input: Tensor) -> Tensor: ...
- @overload
- def remainder(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- remainder(input, other, *, out=None) -> Tensor
- Computes
- `Python's modulus operation <https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations>`_
- entrywise. The result has the same sign as the divisor :attr:`other` and its absolute value
- is less than that of :attr:`other`.
- It may also be defined in terms of :func:`torch.div` as
- .. code:: python
- torch.remainder(a, b) == a - a.div(b, rounding_mode="floor") * b
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer and float inputs.
- .. note::
- Complex inputs are not supported. In some cases, it is not mathematically
- possible to satisfy the definition of a modulo operation with complex numbers.
- See :func:`torch.fmod` for how division by zero is handled.
- .. seealso::
- :func:`torch.fmod` which implements C++'s `std::fmod <https://en.cppreference.com/w/cpp/numeric/math/fmod>`_.
- This one is defined in terms of division rounding towards zero.
- Args:
- input (Tensor or Scalar): the dividend
- other (Tensor or Scalar): the divisor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.remainder(torch.tensor([-3., -2, -1, 1, 2, 3]), 2)
- tensor([ 1., 0., 1., 1., 0., 1.])
- >>> torch.remainder(torch.tensor([1, 2, 3, 4, 5]), -1.5)
- tensor([ -0.5000, -1.0000, 0.0000, -0.5000, -1.0000 ])
- """
- @overload
- def remainder(self: Number | _complex, other: Tensor) -> Tensor:
- r"""
- remainder(input, other, *, out=None) -> Tensor
- Computes
- `Python's modulus operation <https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations>`_
- entrywise. The result has the same sign as the divisor :attr:`other` and its absolute value
- is less than that of :attr:`other`.
- It may also be defined in terms of :func:`torch.div` as
- .. code:: python
- torch.remainder(a, b) == a - a.div(b, rounding_mode="floor") * b
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer and float inputs.
- .. note::
- Complex inputs are not supported. In some cases, it is not mathematically
- possible to satisfy the definition of a modulo operation with complex numbers.
- See :func:`torch.fmod` for how division by zero is handled.
- .. seealso::
- :func:`torch.fmod` which implements C++'s `std::fmod <https://en.cppreference.com/w/cpp/numeric/math/fmod>`_.
- This one is defined in terms of division rounding towards zero.
- Args:
- input (Tensor or Scalar): the dividend
- other (Tensor or Scalar): the divisor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.remainder(torch.tensor([-3., -2, -1, 1, 2, 3]), 2)
- tensor([ 1., 0., 1., 1., 0., 1.])
- >>> torch.remainder(torch.tensor([1, 2, 3, 4, 5]), -1.5)
- tensor([ -0.5000, -1.0000, 0.0000, -0.5000, -1.0000 ])
- """
- @overload
- def remainder(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- remainder(input, other, *, out=None) -> Tensor
- Computes
- `Python's modulus operation <https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations>`_
- entrywise. The result has the same sign as the divisor :attr:`other` and its absolute value
- is less than that of :attr:`other`.
- It may also be defined in terms of :func:`torch.div` as
- .. code:: python
- torch.remainder(a, b) == a - a.div(b, rounding_mode="floor") * b
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer and float inputs.
- .. note::
- Complex inputs are not supported. In some cases, it is not mathematically
- possible to satisfy the definition of a modulo operation with complex numbers.
- See :func:`torch.fmod` for how division by zero is handled.
- .. seealso::
- :func:`torch.fmod` which implements C++'s `std::fmod <https://en.cppreference.com/w/cpp/numeric/math/fmod>`_.
- This one is defined in terms of division rounding towards zero.
- Args:
- input (Tensor or Scalar): the dividend
- other (Tensor or Scalar): the divisor
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.remainder(torch.tensor([-3., -2, -1, 1, 2, 3]), 2)
- tensor([ 1., 0., 1., 1., 0., 1.])
- >>> torch.remainder(torch.tensor([1, 2, 3, 4, 5]), -1.5)
- tensor([ -0.5000, -1.0000, 0.0000, -0.5000, -1.0000 ])
- """
- def renorm(
- input: Tensor,
- p: Number | _complex,
- dim: _int,
- maxnorm: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- renorm(input, p, dim, maxnorm, *, out=None) -> Tensor
- Returns a tensor where each sub-tensor of :attr:`input` along dimension
- :attr:`dim` is normalized such that the `p`-norm of the sub-tensor is lower
- than the value :attr:`maxnorm`
- .. note:: If the norm of a row is lower than `maxnorm`, the row is unchanged
- Args:
- input (Tensor): the input tensor.
- p (float): the power for the norm computation
- dim (int): the dimension to slice over to get the sub-tensors
- maxnorm (float): the maximum norm to keep each sub-tensor under
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> x = torch.ones(3, 3)
- >>> x[1].fill_(2)
- tensor([ 2., 2., 2.])
- >>> x[2].fill_(3)
- tensor([ 3., 3., 3.])
- >>> x
- tensor([[ 1., 1., 1.],
- [ 2., 2., 2.],
- [ 3., 3., 3.]])
- >>> torch.renorm(x, 1, 0, 5)
- tensor([[ 1.0000, 1.0000, 1.0000],
- [ 1.6667, 1.6667, 1.6667],
- [ 1.6667, 1.6667, 1.6667]])
- """
- @overload
- def repeat_interleave(
- input: Tensor,
- repeats: Tensor,
- dim: _int | None = None,
- *,
- output_size: _int | SymInt | None = None,
- ) -> Tensor:
- r"""
- repeat_interleave(input, repeats, dim=None, *, output_size=None) -> Tensor
- Repeat elements of a tensor.
- .. warning::
- This is different from :meth:`torch.Tensor.repeat` but similar to ``numpy.repeat``.
- Args:
- input (Tensor): the input tensor.
- repeats (Tensor or int): The number of repetitions for each element.
- repeats is broadcasted to fit the shape of the given axis.
- dim (int, optional): The dimension along which to repeat values.
- By default, use the flattened input array, and return a flat output
- array.
- Keyword args:
- output_size (int, optional): Total output size for the given axis
- ( e.g. sum of repeats). If given, it will avoid stream synchronization
- needed to calculate output shape of the tensor.
- Returns:
- Tensor: Repeated tensor which has the same shape as input, except along the given axis.
- Example::
- >>> x = torch.tensor([1, 2, 3])
- >>> x.repeat_interleave(2)
- tensor([1, 1, 2, 2, 3, 3])
- >>> y = torch.tensor([[1, 2], [3, 4]])
- >>> torch.repeat_interleave(y, 2)
- tensor([1, 1, 2, 2, 3, 3, 4, 4])
- >>> torch.repeat_interleave(y, 3, dim=1)
- tensor([[1, 1, 1, 2, 2, 2],
- [3, 3, 3, 4, 4, 4]])
- >>> torch.repeat_interleave(y, torch.tensor([1, 2]), dim=0)
- tensor([[1, 2],
- [3, 4],
- [3, 4]])
- >>> torch.repeat_interleave(y, torch.tensor([1, 2]), dim=0, output_size=3)
- tensor([[1, 2],
- [3, 4],
- [3, 4]])
- If the `repeats` is `tensor([n1, n2, n3, ...])`, then the output will be
- `tensor([0, 0, ..., 1, 1, ..., 2, 2, ..., ...])` where `0` appears `n1` times,
- `1` appears `n2` times, `2` appears `n3` times, etc.
- .. function:: repeat_interleave(repeats, *) -> Tensor
- :noindex:
- Repeats 0 repeats[0] times, 1 repeats[1] times, 2 repeats[2] times, etc.
- Args:
- repeats (Tensor): The number of repetitions for each element.
- Returns:
- Tensor: Repeated tensor of size `sum(repeats)`.
- Example::
- >>> torch.repeat_interleave(torch.tensor([1, 2, 3]))
- tensor([0, 1, 1, 2, 2, 2])
- """
- @overload
- def repeat_interleave(
- repeats: Tensor,
- *,
- output_size: _int | SymInt | None = None,
- ) -> Tensor:
- r"""
- repeat_interleave(input, repeats, dim=None, *, output_size=None) -> Tensor
- Repeat elements of a tensor.
- .. warning::
- This is different from :meth:`torch.Tensor.repeat` but similar to ``numpy.repeat``.
- Args:
- input (Tensor): the input tensor.
- repeats (Tensor or int): The number of repetitions for each element.
- repeats is broadcasted to fit the shape of the given axis.
- dim (int, optional): The dimension along which to repeat values.
- By default, use the flattened input array, and return a flat output
- array.
- Keyword args:
- output_size (int, optional): Total output size for the given axis
- ( e.g. sum of repeats). If given, it will avoid stream synchronization
- needed to calculate output shape of the tensor.
- Returns:
- Tensor: Repeated tensor which has the same shape as input, except along the given axis.
- Example::
- >>> x = torch.tensor([1, 2, 3])
- >>> x.repeat_interleave(2)
- tensor([1, 1, 2, 2, 3, 3])
- >>> y = torch.tensor([[1, 2], [3, 4]])
- >>> torch.repeat_interleave(y, 2)
- tensor([1, 1, 2, 2, 3, 3, 4, 4])
- >>> torch.repeat_interleave(y, 3, dim=1)
- tensor([[1, 1, 1, 2, 2, 2],
- [3, 3, 3, 4, 4, 4]])
- >>> torch.repeat_interleave(y, torch.tensor([1, 2]), dim=0)
- tensor([[1, 2],
- [3, 4],
- [3, 4]])
- >>> torch.repeat_interleave(y, torch.tensor([1, 2]), dim=0, output_size=3)
- tensor([[1, 2],
- [3, 4],
- [3, 4]])
- If the `repeats` is `tensor([n1, n2, n3, ...])`, then the output will be
- `tensor([0, 0, ..., 1, 1, ..., 2, 2, ..., ...])` where `0` appears `n1` times,
- `1` appears `n2` times, `2` appears `n3` times, etc.
- .. function:: repeat_interleave(repeats, *) -> Tensor
- :noindex:
- Repeats 0 repeats[0] times, 1 repeats[1] times, 2 repeats[2] times, etc.
- Args:
- repeats (Tensor): The number of repetitions for each element.
- Returns:
- Tensor: Repeated tensor of size `sum(repeats)`.
- Example::
- >>> torch.repeat_interleave(torch.tensor([1, 2, 3]))
- tensor([0, 1, 1, 2, 2, 2])
- """
- @overload
- def repeat_interleave(
- input: Tensor,
- repeats: _int | SymInt,
- dim: _int | None = None,
- *,
- output_size: _int | SymInt | None = None,
- ) -> Tensor:
- r"""
- repeat_interleave(input, repeats, dim=None, *, output_size=None) -> Tensor
- Repeat elements of a tensor.
- .. warning::
- This is different from :meth:`torch.Tensor.repeat` but similar to ``numpy.repeat``.
- Args:
- input (Tensor): the input tensor.
- repeats (Tensor or int): The number of repetitions for each element.
- repeats is broadcasted to fit the shape of the given axis.
- dim (int, optional): The dimension along which to repeat values.
- By default, use the flattened input array, and return a flat output
- array.
- Keyword args:
- output_size (int, optional): Total output size for the given axis
- ( e.g. sum of repeats). If given, it will avoid stream synchronization
- needed to calculate output shape of the tensor.
- Returns:
- Tensor: Repeated tensor which has the same shape as input, except along the given axis.
- Example::
- >>> x = torch.tensor([1, 2, 3])
- >>> x.repeat_interleave(2)
- tensor([1, 1, 2, 2, 3, 3])
- >>> y = torch.tensor([[1, 2], [3, 4]])
- >>> torch.repeat_interleave(y, 2)
- tensor([1, 1, 2, 2, 3, 3, 4, 4])
- >>> torch.repeat_interleave(y, 3, dim=1)
- tensor([[1, 1, 1, 2, 2, 2],
- [3, 3, 3, 4, 4, 4]])
- >>> torch.repeat_interleave(y, torch.tensor([1, 2]), dim=0)
- tensor([[1, 2],
- [3, 4],
- [3, 4]])
- >>> torch.repeat_interleave(y, torch.tensor([1, 2]), dim=0, output_size=3)
- tensor([[1, 2],
- [3, 4],
- [3, 4]])
- If the `repeats` is `tensor([n1, n2, n3, ...])`, then the output will be
- `tensor([0, 0, ..., 1, 1, ..., 2, 2, ..., ...])` where `0` appears `n1` times,
- `1` appears `n2` times, `2` appears `n3` times, etc.
- .. function:: repeat_interleave(repeats, *) -> Tensor
- :noindex:
- Repeats 0 repeats[0] times, 1 repeats[1] times, 2 repeats[2] times, etc.
- Args:
- repeats (Tensor): The number of repetitions for each element.
- Returns:
- Tensor: Repeated tensor of size `sum(repeats)`.
- Example::
- >>> torch.repeat_interleave(torch.tensor([1, 2, 3]))
- tensor([0, 1, 1, 2, 2, 2])
- """
- def reshape(input: Tensor, shape: Sequence[_int | SymInt]) -> Tensor:
- r"""
- reshape(input, shape) -> Tensor
- Returns a tensor with the same data and number of elements as :attr:`input`,
- but with the specified shape. When possible, the returned tensor will be a view
- of :attr:`input`. Otherwise, it will be a copy. Contiguous inputs and inputs
- with compatible strides can be reshaped without copying, but you should not
- depend on the copying vs. viewing behavior.
- See :meth:`torch.Tensor.view` on when it is possible to return a view.
- A single dimension may be -1, in which case it's inferred from the remaining
- dimensions and the number of elements in :attr:`input`.
- Args:
- input (Tensor): the tensor to be reshaped
- shape (tuple of int): the new shape
- Example::
- >>> a = torch.arange(4.)
- >>> torch.reshape(a, (2, 2))
- tensor([[ 0., 1.],
- [ 2., 3.]])
- >>> b = torch.tensor([[0, 1], [2, 3]])
- >>> torch.reshape(b, (-1,))
- tensor([ 0, 1, 2, 3])
- """
- def resize_as_(
- input: Tensor,
- the_template: Tensor,
- *,
- memory_format: memory_format | None = None,
- ) -> Tensor: ...
- def resize_as_sparse_(input: Tensor, the_template: Tensor) -> Tensor: ...
- def resolve_conj(input: Tensor) -> Tensor:
- r"""
- resolve_conj(input) -> Tensor
- Returns a new tensor with materialized conjugation if :attr:`input`'s conjugate bit is set to `True`,
- else returns :attr:`input`. The output tensor will always have its conjugate bit set to `False`.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> x = torch.tensor([-1 + 1j, -2 + 2j, 3 - 3j])
- >>> y = x.conj()
- >>> y.is_conj()
- True
- >>> z = y.resolve_conj()
- >>> z
- tensor([-1 - 1j, -2 - 2j, 3 + 3j])
- >>> z.is_conj()
- False
- """
- def resolve_neg(input: Tensor) -> Tensor:
- r"""
- resolve_neg(input) -> Tensor
- Returns a new tensor with materialized negation if :attr:`input`'s negative bit is set to `True`,
- else returns :attr:`input`. The output tensor will always have its negative bit set to `False`.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> x = torch.tensor([-1 + 1j, -2 + 2j, 3 - 3j])
- >>> y = x.conj()
- >>> z = y.imag
- >>> z.is_neg()
- True
- >>> out = z.resolve_neg()
- >>> out
- tensor([-1., -2., 3.])
- >>> out.is_neg()
- False
- """
- @overload
- def result_type(tensor: Tensor, other: Tensor) -> _dtype:
- r"""
- result_type(tensor1, tensor2) -> dtype
- Returns the :class:`torch.dtype` that would result from performing an arithmetic
- operation on the provided input tensors. See type promotion :ref:`documentation <type-promotion-doc>`
- for more information on the type promotion logic.
- Args:
- tensor1 (Tensor or Number): an input tensor or number
- tensor2 (Tensor or Number): an input tensor or number
- Example::
- >>> torch.result_type(torch.tensor([1, 2], dtype=torch.int), 1.0)
- torch.float32
- >>> torch.result_type(torch.tensor([1, 2], dtype=torch.uint8), torch.tensor(1))
- torch.uint8
- """
- @overload
- def result_type(scalar: Number | _complex, tensor: Tensor) -> _dtype:
- r"""
- result_type(tensor1, tensor2) -> dtype
- Returns the :class:`torch.dtype` that would result from performing an arithmetic
- operation on the provided input tensors. See type promotion :ref:`documentation <type-promotion-doc>`
- for more information on the type promotion logic.
- Args:
- tensor1 (Tensor or Number): an input tensor or number
- tensor2 (Tensor or Number): an input tensor or number
- Example::
- >>> torch.result_type(torch.tensor([1, 2], dtype=torch.int), 1.0)
- torch.float32
- >>> torch.result_type(torch.tensor([1, 2], dtype=torch.uint8), torch.tensor(1))
- torch.uint8
- """
- @overload
- def result_type(tensor: Tensor, other: Number | _complex) -> _dtype:
- r"""
- result_type(tensor1, tensor2) -> dtype
- Returns the :class:`torch.dtype` that would result from performing an arithmetic
- operation on the provided input tensors. See type promotion :ref:`documentation <type-promotion-doc>`
- for more information on the type promotion logic.
- Args:
- tensor1 (Tensor or Number): an input tensor or number
- tensor2 (Tensor or Number): an input tensor or number
- Example::
- >>> torch.result_type(torch.tensor([1, 2], dtype=torch.int), 1.0)
- torch.float32
- >>> torch.result_type(torch.tensor([1, 2], dtype=torch.uint8), torch.tensor(1))
- torch.uint8
- """
- @overload
- def result_type(
- scalar1: Number | _complex,
- scalar2: Number | _complex,
- ) -> _dtype:
- r"""
- result_type(tensor1, tensor2) -> dtype
- Returns the :class:`torch.dtype` that would result from performing an arithmetic
- operation on the provided input tensors. See type promotion :ref:`documentation <type-promotion-doc>`
- for more information on the type promotion logic.
- Args:
- tensor1 (Tensor or Number): an input tensor or number
- tensor2 (Tensor or Number): an input tensor or number
- Example::
- >>> torch.result_type(torch.tensor([1, 2], dtype=torch.int), 1.0)
- torch.float32
- >>> torch.result_type(torch.tensor([1, 2], dtype=torch.uint8), torch.tensor(1))
- torch.uint8
- """
- def rms_norm(
- input: Tensor,
- normalized_shape: Sequence[_int | SymInt],
- weight: Tensor | None = None,
- eps: _float | None = None,
- ) -> Tensor: ...
- @overload
- def rnn_relu(
- data: Tensor,
- batch_sizes: Tensor,
- hx: Tensor,
- params: tuple[Tensor, ...] | list[Tensor] | None,
- has_biases: _bool,
- num_layers: _int,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- @overload
- def rnn_relu(
- input: Tensor,
- hx: Tensor,
- params: tuple[Tensor, ...] | list[Tensor] | None,
- has_biases: _bool,
- num_layers: _int,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- batch_first: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- def rnn_relu_cell(
- input: Tensor,
- hx: Tensor,
- w_ih: Tensor,
- w_hh: Tensor,
- b_ih: Tensor | None = None,
- b_hh: Tensor | None = None,
- ) -> Tensor: ...
- @overload
- def rnn_tanh(
- data: Tensor,
- batch_sizes: Tensor,
- hx: Tensor,
- params: tuple[Tensor, ...] | list[Tensor] | None,
- has_biases: _bool,
- num_layers: _int,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- @overload
- def rnn_tanh(
- input: Tensor,
- hx: Tensor,
- params: tuple[Tensor, ...] | list[Tensor] | None,
- has_biases: _bool,
- num_layers: _int,
- dropout: _float,
- train: _bool,
- bidirectional: _bool,
- batch_first: _bool,
- ) -> tuple[Tensor, Tensor]: ...
- def rnn_tanh_cell(
- input: Tensor,
- hx: Tensor,
- w_ih: Tensor,
- w_hh: Tensor,
- b_ih: Tensor | None = None,
- b_hh: Tensor | None = None,
- ) -> Tensor: ...
- def roll(
- input: Tensor,
- shifts: _int | SymInt | Sequence[_int | SymInt],
- dims: _int | _size = (),
- ) -> Tensor:
- r"""
- roll(input, shifts, dims=None) -> Tensor
- Roll the tensor :attr:`input` along the given dimension(s). Elements that are
- shifted beyond the last position are re-introduced at the first position. If
- :attr:`dims` is `None`, the tensor will be flattened before rolling and then
- restored to the original shape.
- Args:
- input (Tensor): the input tensor.
- shifts (int or tuple of ints): The number of places by which the elements
- of the tensor are shifted. If shifts is a tuple, dims must be a tuple of
- the same size, and each dimension will be rolled by the corresponding
- value
- dims (int or tuple of ints): Axis along which to roll
- Example::
- >>> x = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8]).view(4, 2)
- >>> x
- tensor([[1, 2],
- [3, 4],
- [5, 6],
- [7, 8]])
- >>> torch.roll(x, 1)
- tensor([[8, 1],
- [2, 3],
- [4, 5],
- [6, 7]])
- >>> torch.roll(x, 1, 0)
- tensor([[7, 8],
- [1, 2],
- [3, 4],
- [5, 6]])
- >>> torch.roll(x, -1, 0)
- tensor([[3, 4],
- [5, 6],
- [7, 8],
- [1, 2]])
- >>> torch.roll(x, shifts=(2, 1), dims=(0, 1))
- tensor([[6, 5],
- [8, 7],
- [2, 1],
- [4, 3]])
- """
- def rot90(input: Tensor, k: _int = 1, dims: _size = (0, 1)) -> Tensor:
- r"""
- rot90(input, k=1, dims=(0, 1)) -> Tensor
- Rotate an n-D tensor by 90 degrees in the plane specified by dims axis.
- Rotation direction is from the first towards the second axis if k > 0, and from the second towards the first for k < 0.
- Args:
- input (Tensor): the input tensor.
- k (int): number of times to rotate. Default value is 1
- dims (a list or tuple): axis to rotate. Default value is [0, 1]
- Example::
- >>> x = torch.arange(4).view(2, 2)
- >>> x
- tensor([[0, 1],
- [2, 3]])
- >>> torch.rot90(x, 1, [0, 1])
- tensor([[1, 3],
- [0, 2]])
- >>> x = torch.arange(8).view(2, 2, 2)
- >>> x
- tensor([[[0, 1],
- [2, 3]],
- [[4, 5],
- [6, 7]]])
- >>> torch.rot90(x, 1, [1, 2])
- tensor([[[1, 3],
- [0, 2]],
- [[5, 7],
- [4, 6]]])
- """
- @overload
- def round(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- round(input, *, decimals=0, out=None) -> Tensor
- Rounds elements of :attr:`input` to the nearest integer.
- For integer inputs, follows the array-api convention of returning a
- copy of the input tensor.
- The return type of output is same as that of input's dtype.
- .. note::
- This function implements the "round half to even" to
- break ties when a number is equidistant from two
- integers (e.g. `round(2.5)` is 2).
- When the :attr:\`decimals\` argument is specified the
- algorithm used is similar to NumPy's `around`. This
- algorithm is fast but inexact and it can easily
- overflow for low precision dtypes.
- Eg. `round(tensor([10000], dtype=torch.float16), decimals=3)` is `inf`.
- .. seealso::
- :func:`torch.ceil`, which rounds up.
- :func:`torch.floor`, which rounds down.
- :func:`torch.trunc`, which rounds towards zero.
- Args:
- input (Tensor): the input tensor.
- decimals (int): Number of decimal places to round to (default: 0).
- If decimals is negative, it specifies the number of positions
- to the left of the decimal point.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.round(torch.tensor((4.7, -2.3, 9.1, -7.7)))
- tensor([ 5., -2., 9., -8.])
- >>> # Values equidistant from two integers are rounded towards the
- >>> # the nearest even value (zero is treated as even)
- >>> torch.round(torch.tensor([-0.5, 0.5, 1.5, 2.5]))
- tensor([-0., 0., 2., 2.])
- >>> # A positive decimals argument rounds to the to that decimal place
- >>> torch.round(torch.tensor([0.1234567]), decimals=3)
- tensor([0.1230])
- >>> # A negative decimals argument rounds to the left of the decimal
- >>> torch.round(torch.tensor([1200.1234567]), decimals=-3)
- tensor([1000.])
- """
- @overload
- def round(
- input: Tensor,
- *,
- decimals: _int,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- round(input, *, decimals=0, out=None) -> Tensor
- Rounds elements of :attr:`input` to the nearest integer.
- For integer inputs, follows the array-api convention of returning a
- copy of the input tensor.
- The return type of output is same as that of input's dtype.
- .. note::
- This function implements the "round half to even" to
- break ties when a number is equidistant from two
- integers (e.g. `round(2.5)` is 2).
- When the :attr:\`decimals\` argument is specified the
- algorithm used is similar to NumPy's `around`. This
- algorithm is fast but inexact and it can easily
- overflow for low precision dtypes.
- Eg. `round(tensor([10000], dtype=torch.float16), decimals=3)` is `inf`.
- .. seealso::
- :func:`torch.ceil`, which rounds up.
- :func:`torch.floor`, which rounds down.
- :func:`torch.trunc`, which rounds towards zero.
- Args:
- input (Tensor): the input tensor.
- decimals (int): Number of decimal places to round to (default: 0).
- If decimals is negative, it specifies the number of positions
- to the left of the decimal point.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> torch.round(torch.tensor((4.7, -2.3, 9.1, -7.7)))
- tensor([ 5., -2., 9., -8.])
- >>> # Values equidistant from two integers are rounded towards the
- >>> # the nearest even value (zero is treated as even)
- >>> torch.round(torch.tensor([-0.5, 0.5, 1.5, 2.5]))
- tensor([-0., 0., 2., 2.])
- >>> # A positive decimals argument rounds to the to that decimal place
- >>> torch.round(torch.tensor([0.1234567]), decimals=3)
- tensor([0.1230])
- >>> # A negative decimals argument rounds to the left of the decimal
- >>> torch.round(torch.tensor([1200.1234567]), decimals=-3)
- tensor([1000.])
- """
- @overload
- def round_(input: Tensor) -> Tensor: ...
- @overload
- def round_(input: Tensor, *, decimals: _int) -> Tensor: ...
- def row_indices_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor: ...
- def row_stack(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- row_stack(tensors, *, out=None) -> Tensor
- Alias of :func:`torch.vstack`.
- """
- def rrelu(
- input: Tensor,
- lower: Number | _complex = 0.125,
- upper: Number | _complex = 0.3333333333333333,
- training: _bool = False,
- generator: Generator | None = None,
- ) -> Tensor: ...
- def rrelu_(
- input: Tensor,
- lower: Number | _complex = 0.125,
- upper: Number | _complex = 0.3333333333333333,
- training: _bool = False,
- generator: Generator | None = None,
- ) -> Tensor: ...
- def rsqrt(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- rsqrt(input, *, out=None) -> Tensor
- Returns a new tensor with the reciprocal of the square-root of each of
- the elements of :attr:`input`.
- .. math::
- \text{out}_{i} = \frac{1}{\sqrt{\text{input}_{i}}}
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-0.0370, 0.2970, 1.5420, -0.9105])
- >>> torch.rsqrt(a)
- tensor([ nan, 1.8351, 0.8053, nan])
- """
- def rsqrt_(input: Tensor) -> Tensor: ...
- @overload
- def rsub(
- input: Tensor,
- other: Tensor,
- *,
- alpha: Number | _complex = 1,
- ) -> Tensor: ...
- @overload
- def rsub(
- input: Tensor,
- other: Number | _complex,
- alpha: Number | _complex = 1,
- ) -> Tensor: ...
- def saddmm(
- input: Tensor,
- mat1: Tensor,
- mat2: Tensor,
- *,
- beta: Number = 1,
- alpha: Number = 1,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def scalar_tensor(
- s: Number | _complex,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor: ...
- @overload
- def scatter(
- input: Tensor,
- dim: _int,
- index: Tensor,
- src: Tensor,
- *,
- reduce: str,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- scatter(input, dim, index, src) -> Tensor
- Out-of-place version of :meth:`torch.Tensor.scatter_`
- """
- @overload
- def scatter(
- input: Tensor,
- dim: _int,
- index: Tensor,
- src: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- scatter(input, dim, index, src) -> Tensor
- Out-of-place version of :meth:`torch.Tensor.scatter_`
- """
- @overload
- def scatter(
- input: Tensor,
- dim: _int,
- index: Tensor,
- value: Number | _complex,
- *,
- reduce: str,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- scatter(input, dim, index, src) -> Tensor
- Out-of-place version of :meth:`torch.Tensor.scatter_`
- """
- @overload
- def scatter(
- input: Tensor,
- dim: str | EllipsisType | None,
- index: Tensor,
- src: Tensor,
- ) -> Tensor:
- r"""
- scatter(input, dim, index, src) -> Tensor
- Out-of-place version of :meth:`torch.Tensor.scatter_`
- """
- @overload
- def scatter(
- input: Tensor,
- dim: _int,
- index: Tensor,
- value: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- scatter(input, dim, index, src) -> Tensor
- Out-of-place version of :meth:`torch.Tensor.scatter_`
- """
- @overload
- def scatter(
- input: Tensor,
- dim: str | EllipsisType | None,
- index: Tensor,
- value: Number | _complex,
- ) -> Tensor:
- r"""
- scatter(input, dim, index, src) -> Tensor
- Out-of-place version of :meth:`torch.Tensor.scatter_`
- """
- @overload
- def scatter_add(
- input: Tensor,
- dim: _int,
- index: Tensor,
- src: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- scatter_add(input, dim, index, src) -> Tensor
- Out-of-place version of :meth:`torch.Tensor.scatter_add_`
- """
- @overload
- def scatter_add(
- input: Tensor,
- dim: str | EllipsisType | None,
- index: Tensor,
- src: Tensor,
- ) -> Tensor:
- r"""
- scatter_add(input, dim, index, src) -> Tensor
- Out-of-place version of :meth:`torch.Tensor.scatter_add_`
- """
- def scatter_reduce(
- input: Tensor,
- dim: _int,
- index: Tensor,
- src: Tensor,
- reduce: str,
- *,
- include_self: _bool = True,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- scatter_reduce(input, dim, index, src, reduce, *, include_self=True) -> Tensor
- Out-of-place version of :meth:`torch.Tensor.scatter_reduce_`
- """
- @overload
- def searchsorted(
- sorted_sequence: Tensor,
- input: Tensor,
- *,
- out_int32: _bool = False,
- right: _bool = False,
- side: str | None = None,
- sorter: Tensor | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- searchsorted(sorted_sequence, values, *, out_int32=False, right=False, side=None, out=None, sorter=None) -> Tensor
- Find the indices from the *innermost* dimension of :attr:`sorted_sequence` such that, if the
- corresponding values in :attr:`values` were inserted before the indices, when sorted, the order
- of the corresponding *innermost* dimension within :attr:`sorted_sequence` would be preserved.
- Return a new tensor with the same size as :attr:`values`. More formally,
- the returned index satisfies the following rules:
- .. list-table::
- :widths: 12 10 78
- :header-rows: 1
- * - :attr:`sorted_sequence`
- - :attr:`right`
- - *returned index satisfies*
- * - 1-D
- - False
- - ``sorted_sequence[i-1] < values[m][n]...[l][x] <= sorted_sequence[i]``
- * - 1-D
- - True
- - ``sorted_sequence[i-1] <= values[m][n]...[l][x] < sorted_sequence[i]``
- * - N-D
- - False
- - ``sorted_sequence[m][n]...[l][i-1] < values[m][n]...[l][x] <= sorted_sequence[m][n]...[l][i]``
- * - N-D
- - True
- - ``sorted_sequence[m][n]...[l][i-1] <= values[m][n]...[l][x] < sorted_sequence[m][n]...[l][i]``
- Args:
- sorted_sequence (Tensor): N-D or 1-D tensor, containing monotonically increasing sequence on the *innermost*
- dimension unless :attr:`sorter` is provided, in which case the sequence does not
- need to be sorted
- values (Tensor or Scalar): N-D tensor or a Scalar containing the search value(s).
- Keyword args:
- out_int32 (bool, optional): indicate the output data type. torch.int32 if True, torch.int64 otherwise.
- Default value is False, i.e. default output data type is torch.int64.
- right (bool, optional): if False, return the first suitable location that is found. If True, return the
- last such index. If no suitable index found, return 0 for non-numerical value
- (eg. nan, inf) or the size of *innermost* dimension within :attr:`sorted_sequence`
- (one pass the last index of the *innermost* dimension). In other words, if False,
- gets the lower bound index for each value in :attr:`values` on the corresponding
- *innermost* dimension of the :attr:`sorted_sequence`. If True, gets the upper
- bound index instead. Default value is False. :attr:`side` does the same and is
- preferred. It will error if :attr:`side` is set to "left" while this is True.
- side (str, optional): the same as :attr:`right` but preferred. "left" corresponds to False for :attr:`right`
- and "right" corresponds to True for :attr:`right`. It will error if this is set to
- "left" while :attr:`right` is True. Default value is None.
- out (Tensor, optional): the output tensor, must be the same size as :attr:`values` if provided.
- sorter (LongTensor, optional): if provided, a tensor matching the shape of the unsorted
- :attr:`sorted_sequence` containing a sequence of indices that sort it in the
- ascending order on the innermost dimension
- Example::
- >>> sorted_sequence = torch.tensor([[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]])
- >>> sorted_sequence
- tensor([[ 1, 3, 5, 7, 9],
- [ 2, 4, 6, 8, 10]])
- >>> values = torch.tensor([[3, 6, 9], [3, 6, 9]])
- >>> values
- tensor([[3, 6, 9],
- [3, 6, 9]])
- >>> torch.searchsorted(sorted_sequence, values)
- tensor([[1, 3, 4],
- [1, 2, 4]])
- >>> torch.searchsorted(sorted_sequence, values, side='right')
- tensor([[2, 3, 5],
- [1, 3, 4]])
- >>> sorted_sequence_1d = torch.tensor([1, 3, 5, 7, 9])
- >>> sorted_sequence_1d
- tensor([1, 3, 5, 7, 9])
- >>> torch.searchsorted(sorted_sequence_1d, values)
- tensor([[1, 3, 4],
- [1, 3, 4]])
- """
- @overload
- def searchsorted(
- sorted_sequence: Tensor,
- self: Number | _complex,
- *,
- out_int32: _bool = False,
- right: _bool = False,
- side: str | None = None,
- sorter: Tensor | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- searchsorted(sorted_sequence, values, *, out_int32=False, right=False, side=None, out=None, sorter=None) -> Tensor
- Find the indices from the *innermost* dimension of :attr:`sorted_sequence` such that, if the
- corresponding values in :attr:`values` were inserted before the indices, when sorted, the order
- of the corresponding *innermost* dimension within :attr:`sorted_sequence` would be preserved.
- Return a new tensor with the same size as :attr:`values`. More formally,
- the returned index satisfies the following rules:
- .. list-table::
- :widths: 12 10 78
- :header-rows: 1
- * - :attr:`sorted_sequence`
- - :attr:`right`
- - *returned index satisfies*
- * - 1-D
- - False
- - ``sorted_sequence[i-1] < values[m][n]...[l][x] <= sorted_sequence[i]``
- * - 1-D
- - True
- - ``sorted_sequence[i-1] <= values[m][n]...[l][x] < sorted_sequence[i]``
- * - N-D
- - False
- - ``sorted_sequence[m][n]...[l][i-1] < values[m][n]...[l][x] <= sorted_sequence[m][n]...[l][i]``
- * - N-D
- - True
- - ``sorted_sequence[m][n]...[l][i-1] <= values[m][n]...[l][x] < sorted_sequence[m][n]...[l][i]``
- Args:
- sorted_sequence (Tensor): N-D or 1-D tensor, containing monotonically increasing sequence on the *innermost*
- dimension unless :attr:`sorter` is provided, in which case the sequence does not
- need to be sorted
- values (Tensor or Scalar): N-D tensor or a Scalar containing the search value(s).
- Keyword args:
- out_int32 (bool, optional): indicate the output data type. torch.int32 if True, torch.int64 otherwise.
- Default value is False, i.e. default output data type is torch.int64.
- right (bool, optional): if False, return the first suitable location that is found. If True, return the
- last such index. If no suitable index found, return 0 for non-numerical value
- (eg. nan, inf) or the size of *innermost* dimension within :attr:`sorted_sequence`
- (one pass the last index of the *innermost* dimension). In other words, if False,
- gets the lower bound index for each value in :attr:`values` on the corresponding
- *innermost* dimension of the :attr:`sorted_sequence`. If True, gets the upper
- bound index instead. Default value is False. :attr:`side` does the same and is
- preferred. It will error if :attr:`side` is set to "left" while this is True.
- side (str, optional): the same as :attr:`right` but preferred. "left" corresponds to False for :attr:`right`
- and "right" corresponds to True for :attr:`right`. It will error if this is set to
- "left" while :attr:`right` is True. Default value is None.
- out (Tensor, optional): the output tensor, must be the same size as :attr:`values` if provided.
- sorter (LongTensor, optional): if provided, a tensor matching the shape of the unsorted
- :attr:`sorted_sequence` containing a sequence of indices that sort it in the
- ascending order on the innermost dimension
- Example::
- >>> sorted_sequence = torch.tensor([[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]])
- >>> sorted_sequence
- tensor([[ 1, 3, 5, 7, 9],
- [ 2, 4, 6, 8, 10]])
- >>> values = torch.tensor([[3, 6, 9], [3, 6, 9]])
- >>> values
- tensor([[3, 6, 9],
- [3, 6, 9]])
- >>> torch.searchsorted(sorted_sequence, values)
- tensor([[1, 3, 4],
- [1, 2, 4]])
- >>> torch.searchsorted(sorted_sequence, values, side='right')
- tensor([[2, 3, 5],
- [1, 3, 4]])
- >>> sorted_sequence_1d = torch.tensor([1, 3, 5, 7, 9])
- >>> sorted_sequence_1d
- tensor([1, 3, 5, 7, 9])
- >>> torch.searchsorted(sorted_sequence_1d, values)
- tensor([[1, 3, 4],
- [1, 3, 4]])
- """
- def segment_reduce(
- data: Tensor,
- reduce: str,
- *,
- lengths: Tensor | None = None,
- indices: Tensor | None = None,
- offsets: Tensor | None = None,
- axis: _int = 0,
- unsafe: _bool = False,
- initial: Number | _complex | None = None,
- ) -> Tensor:
- r"""
- segment_reduce(data: Tensor, reduce: str, *, lengths: Tensor | None = None, indices: Tensor | None = None, offsets: Tensor | None = None, axis: _int = 0, unsafe: _bool = False, initial: Number | _complex | None = None) -> Tensor # noqa: B950
- Perform a segment reduction operation on the input tensor along the specified axis.
- Args:
- data (Tensor): The input tensor on which the segment reduction operation will be performed.
- reduce (str): The type of reduction operation. Supported values are ``sum``, ``mean``, ``max``, ``min``, ``prod``.
- Keyword args:
- lengths (Tensor, optional): Length of each segment. Default: ``None``.
- offsets (Tensor, optional): Offset of each segment. Default: ``None``.
- axis (int, optional): The axis perform reduction. Default: ``0``.
- unsafe (bool, optional): Skip validation If `True`. Default: ``False``.
- initial (Number, optional): The initial value for the reduction operation. Default: ``None``.
- Example::
- >>> data = torch.tensor([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]], dtype=torch.float32, device='cuda')
- >>> lengths = torch.tensor([2, 1], device='cuda')
- >>> torch.segment_reduce(data, 'max', lengths=lengths)
- tensor([[ 5., 6., 7., 8.],
- [ 9., 10., 11., 12.]], device='cuda:0')
- """
- @overload
- def select(input: Tensor, dim: _int, index: _int | SymInt) -> Tensor:
- r"""
- select(input, dim, index) -> Tensor
- Slices the :attr:`input` tensor along the selected dimension at the given index.
- This function returns a view of the original tensor with the given dimension removed.
- .. note:: If :attr:`input` is a sparse tensor and returning a view of
- the tensor is not possible, a RuntimeError exception is
- raised. In this is the case, consider using
- :func:`torch.select_copy` function.
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to slice
- index (int): the index to select with
- .. note::
- :meth:`select` is equivalent to slicing. For example,
- ``tensor.select(0, index)`` is equivalent to ``tensor[index]`` and
- ``tensor.select(2, index)`` is equivalent to ``tensor[:,:,index]``.
- """
- @overload
- def select(
- input: Tensor,
- dim: str | EllipsisType | None,
- index: _int,
- ) -> Tensor:
- r"""
- select(input, dim, index) -> Tensor
- Slices the :attr:`input` tensor along the selected dimension at the given index.
- This function returns a view of the original tensor with the given dimension removed.
- .. note:: If :attr:`input` is a sparse tensor and returning a view of
- the tensor is not possible, a RuntimeError exception is
- raised. In this is the case, consider using
- :func:`torch.select_copy` function.
- Args:
- input (Tensor): the input tensor.
- dim (int): the dimension to slice
- index (int): the index to select with
- .. note::
- :meth:`select` is equivalent to slicing. For example,
- ``tensor.select(0, index)`` is equivalent to ``tensor[index]`` and
- ``tensor.select(2, index)`` is equivalent to ``tensor[:,:,index]``.
- """
- def select_copy(
- input: Tensor,
- dim: _int,
- index: _int | SymInt,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.select`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def select_scatter(
- input: Tensor,
- src: Tensor,
- dim: _int,
- index: _int | SymInt,
- ) -> Tensor:
- r"""
- select_scatter(input, src, dim, index) -> Tensor
- Embeds the values of the :attr:`src` tensor into :attr:`input` at the given index.
- This function returns a tensor with fresh storage; it does not create a view.
- Args:
- input (Tensor): the input tensor.
- src (Tensor): The tensor to embed into :attr:`input`
- dim (int): the dimension to insert the slice into.
- index (int): the index to select with
- .. note::
- :attr:`src` must be of the proper size in order to be embedded
- into :attr:`input`. Specifically, it should have the same shape as
- ``torch.select(input, dim, index)``
- Example::
- >>> a = torch.zeros(2, 2)
- >>> b = torch.ones(2)
- >>> a.select_scatter(b, 0, 0)
- tensor([[1., 1.],
- [0., 0.]])
- """
- def selu(input: Tensor) -> Tensor: ...
- def selu_(input: Tensor) -> Tensor: ...
- def set_flush_denormal(mode: _bool) -> _bool:
- r"""
- set_flush_denormal(mode) -> bool
- Disables denormal floating numbers on CPU.
- Returns ``True`` if your system supports flushing denormal numbers and it
- successfully configures flush denormal mode. :meth:`~torch.set_flush_denormal`
- is supported on x86 architectures supporting SSE3 and AArch64 architecture.
- Args:
- mode (bool): Controls whether to enable flush denormal mode or not
- Example::
- >>> torch.set_flush_denormal(True)
- True
- >>> torch.tensor([1e-323], dtype=torch.float64)
- tensor([ 0.], dtype=torch.float64)
- >>> torch.set_flush_denormal(False)
- True
- >>> torch.tensor([1e-323], dtype=torch.float64)
- tensor(9.88131e-324 *
- [ 1.0000], dtype=torch.float64)
- """
- def set_num_interop_threads(num: _int) -> None:
- r"""
- set_num_interop_threads(int)
- Sets the number of threads used for interop parallelism
- (e.g. in JIT interpreter) on CPU.
- .. warning::
- Can only be called once and before any inter-op parallel work
- is started (e.g. JIT execution).
- """
- def set_num_threads(num: _int) -> None:
- r"""
- set_num_threads(int)
- Sets the number of threads used for intraop parallelism on CPU.
- .. warning::
- To ensure that the correct number of threads is used, set_num_threads
- must be called before running eager, JIT or autograd code.
- """
- def sgn(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- sgn(input, *, out=None) -> Tensor
- This function is an extension of torch.sign() to complex tensors.
- It computes a new tensor whose elements have
- the same angles as the corresponding elements of :attr:`input` and
- absolute values (i.e. magnitudes) of one for complex tensors and
- is equivalent to torch.sign() for non-complex tensors.
- .. math::
- \text{out}_{i} = \begin{cases}
- 0 & |\text{{input}}_i| == 0 \\
- \frac{{\text{{input}}_i}}{|{\text{{input}}_i}|} & \text{otherwise}
- \end{cases}
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.tensor([3+4j, 7-24j, 0, 1+2j])
- >>> t.sgn()
- tensor([0.6000+0.8000j, 0.2800-0.9600j, 0.0000+0.0000j, 0.4472+0.8944j])
- """
- def sigmoid(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- sigmoid(input, *, out=None) -> Tensor
- Alias for :func:`torch.special.expit`.
- """
- def sigmoid_(input: Tensor) -> Tensor: ...
- def sign(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- sign(input, *, out=None) -> Tensor
- Returns a new tensor with the signs of the elements of :attr:`input`.
- .. math::
- \text{out}_{i} = \operatorname{sgn}(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([0.7, -1.2, 0., 2.3])
- >>> a
- tensor([ 0.7000, -1.2000, 0.0000, 2.3000])
- >>> torch.sign(a)
- tensor([ 1., -1., 0., 1.])
- """
- def signbit(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- signbit(input, *, out=None) -> Tensor
- Tests if each element of :attr:`input` has its sign bit set or not.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([0.7, -1.2, 0., 2.3])
- >>> torch.signbit(a)
- tensor([ False, True, False, False])
- >>> a = torch.tensor([-0.0, 0.0])
- >>> torch.signbit(a)
- tensor([ True, False])
- .. note::
- signbit handles signed zeros, so negative zero (-0) returns True.
- """
- def sin(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- sin(input, *, out=None) -> Tensor
- Returns a new tensor with the sine of the elements in the :attr:`input` tensor,
- where each value in this input tensor is in radians.
- .. math::
- \text{out}_{i} = \sin(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-0.5461, 0.1347, -2.7266, -0.2746])
- >>> torch.sin(a)
- tensor([-0.5194, 0.1343, -0.4032, -0.2711])
- """
- def sin_(input: Tensor) -> Tensor: ...
- def sinc(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- sinc(input, *, out=None) -> Tensor
- Alias for :func:`torch.special.sinc`.
- """
- def sinc_(input: Tensor) -> Tensor: ...
- def sinh(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- sinh(input, *, out=None) -> Tensor
- Returns a new tensor with the hyperbolic sine of the elements of
- :attr:`input`.
- .. math::
- \text{out}_{i} = \sinh(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.5380, -0.8632, -0.1265, 0.9399])
- >>> torch.sinh(a)
- tensor([ 0.5644, -0.9744, -0.1268, 1.0845])
- .. note::
- When :attr:`input` is on the CPU, the implementation of torch.sinh may use
- the Sleef library, which rounds very large results to infinity or negative
- infinity. See `here <https://sleef.org/purec.xhtml>`_ for details.
- """
- def sinh_(input: Tensor) -> Tensor: ...
- def slice_copy(
- input: Tensor,
- dim: _int = 0,
- start: _int | SymInt | None = None,
- end: _int | SymInt | None = None,
- step: _int | SymInt = 1,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.slice`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def slice_inverse(
- input: Tensor,
- src: Tensor,
- dim: _int = 0,
- start: _int | SymInt | None = None,
- end: _int | SymInt | None = None,
- step: _int | SymInt = 1,
- ) -> Tensor: ...
- def slice_scatter(
- input: Tensor,
- src: Tensor,
- dim: _int = 0,
- start: _int | SymInt | None = None,
- end: _int | SymInt | None = None,
- step: _int | SymInt = 1,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- slice_scatter(input, src, dim=0, start=None, end=None, step=1) -> Tensor
- Embeds the values of the :attr:`src` tensor into :attr:`input` at the given
- dimension.
- This function returns a tensor with fresh storage; it does not create a view.
- Args:
- input (Tensor): the input tensor.
- src (Tensor): The tensor to embed into :attr:`input`
- dim (int): the dimension to insert the slice into
- start (Optional[int]): the start index of where to insert the slice
- end (Optional[int]): the end index of where to insert the slice
- step (int): the how many elements to skip in
- Example::
- >>> a = torch.zeros(8, 8)
- >>> b = torch.ones(2, 8)
- >>> a.slice_scatter(b, start=6)
- tensor([[0., 0., 0., 0., 0., 0., 0., 0.],
- [0., 0., 0., 0., 0., 0., 0., 0.],
- [0., 0., 0., 0., 0., 0., 0., 0.],
- [0., 0., 0., 0., 0., 0., 0., 0.],
- [0., 0., 0., 0., 0., 0., 0., 0.],
- [0., 0., 0., 0., 0., 0., 0., 0.],
- [1., 1., 1., 1., 1., 1., 1., 1.],
- [1., 1., 1., 1., 1., 1., 1., 1.]])
- >>> b = torch.ones(8, 2)
- >>> a.slice_scatter(b, dim=1, start=2, end=6, step=2)
- tensor([[0., 0., 1., 0., 1., 0., 0., 0.],
- [0., 0., 1., 0., 1., 0., 0., 0.],
- [0., 0., 1., 0., 1., 0., 0., 0.],
- [0., 0., 1., 0., 1., 0., 0., 0.],
- [0., 0., 1., 0., 1., 0., 0., 0.],
- [0., 0., 1., 0., 1., 0., 0., 0.],
- [0., 0., 1., 0., 1., 0., 0., 0.],
- [0., 0., 1., 0., 1., 0., 0., 0.]])
- """
- def slogdet(
- input: Tensor,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.slogdet:
- r"""
- slogdet(input) -> (Tensor, Tensor)
- Alias for :func:`torch.linalg.slogdet`
- """
- def smm(input: Tensor, mat2: Tensor) -> Tensor:
- r"""
- smm(input, mat) -> Tensor
- Performs a matrix multiplication of the sparse matrix :attr:`input`
- with the dense matrix :attr:`mat`.
- Args:
- input (Tensor): a sparse matrix to be matrix multiplied
- mat (Tensor): a dense matrix to be matrix multiplied
- """
- @overload
- def softmax(
- input: Tensor,
- dim: _int,
- dtype: _dtype | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- softmax(input, dim, *, dtype=None) -> Tensor
- Alias for :func:`torch.nn.functional.softmax`.
- """
- @overload
- def softmax(
- input: Tensor,
- dim: str | EllipsisType | None,
- *,
- dtype: _dtype | None = None,
- ) -> Tensor:
- r"""
- softmax(input, dim, *, dtype=None) -> Tensor
- Alias for :func:`torch.nn.functional.softmax`.
- """
- @overload
- def sort(
- input: Tensor,
- *,
- stable: _bool | None,
- dim: _int = -1,
- descending: _bool = False,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.sort:
- r"""
- sort(input, dim=-1, descending=False, *, stable=False, out=None) -> (Tensor, LongTensor)
- Sorts the elements of the :attr:`input` tensor along a given dimension
- in ascending order by value.
- If :attr:`dim` is not given, the last dimension of the `input` is chosen.
- If :attr:`descending` is ``True`` then the elements are sorted in descending
- order by value.
- If :attr:`stable` is ``True`` then the sorting routine becomes stable, preserving
- the order of equivalent elements.
- A namedtuple of (values, indices) is returned, where the `values` are the
- sorted values and `indices` are the indices of the elements in the original
- `input` tensor.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to sort along
- descending (bool, optional): controls the sorting order (ascending or descending)
- Keyword args:
- stable (bool, optional): makes the sorting routine stable, which guarantees that the order
- of equivalent elements is preserved.
- out (tuple, optional): the output tuple of (`Tensor`, `LongTensor`) that can
- be optionally given to be used as output buffers
- Example::
- >>> x = torch.randn(3, 4)
- >>> sorted, indices = torch.sort(x)
- >>> sorted
- tensor([[-0.2162, 0.0608, 0.6719, 2.3332],
- [-0.5793, 0.0061, 0.6058, 0.9497],
- [-0.5071, 0.3343, 0.9553, 1.0960]])
- >>> indices
- tensor([[ 1, 0, 2, 3],
- [ 3, 1, 0, 2],
- [ 0, 3, 1, 2]])
- >>> sorted, indices = torch.sort(x, 0)
- >>> sorted
- tensor([[-0.5071, -0.2162, 0.6719, -0.5793],
- [ 0.0608, 0.0061, 0.9497, 0.3343],
- [ 0.6058, 0.9553, 1.0960, 2.3332]])
- >>> indices
- tensor([[ 2, 0, 0, 1],
- [ 0, 1, 1, 2],
- [ 1, 2, 2, 0]])
- >>> x = torch.tensor([0, 1] * 9)
- >>> x.sort()
- torch.return_types.sort(
- values=tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]),
- indices=tensor([ 2, 16, 4, 6, 14, 8, 0, 10, 12, 9, 17, 15, 13, 11, 7, 5, 3, 1]))
- >>> x.sort(stable=True)
- torch.return_types.sort(
- values=tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]),
- indices=tensor([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 17]))
- """
- @overload
- def sort(
- input: Tensor,
- dim: _int = -1,
- descending: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.sort:
- r"""
- sort(input, dim=-1, descending=False, *, stable=False, out=None) -> (Tensor, LongTensor)
- Sorts the elements of the :attr:`input` tensor along a given dimension
- in ascending order by value.
- If :attr:`dim` is not given, the last dimension of the `input` is chosen.
- If :attr:`descending` is ``True`` then the elements are sorted in descending
- order by value.
- If :attr:`stable` is ``True`` then the sorting routine becomes stable, preserving
- the order of equivalent elements.
- A namedtuple of (values, indices) is returned, where the `values` are the
- sorted values and `indices` are the indices of the elements in the original
- `input` tensor.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to sort along
- descending (bool, optional): controls the sorting order (ascending or descending)
- Keyword args:
- stable (bool, optional): makes the sorting routine stable, which guarantees that the order
- of equivalent elements is preserved.
- out (tuple, optional): the output tuple of (`Tensor`, `LongTensor`) that can
- be optionally given to be used as output buffers
- Example::
- >>> x = torch.randn(3, 4)
- >>> sorted, indices = torch.sort(x)
- >>> sorted
- tensor([[-0.2162, 0.0608, 0.6719, 2.3332],
- [-0.5793, 0.0061, 0.6058, 0.9497],
- [-0.5071, 0.3343, 0.9553, 1.0960]])
- >>> indices
- tensor([[ 1, 0, 2, 3],
- [ 3, 1, 0, 2],
- [ 0, 3, 1, 2]])
- >>> sorted, indices = torch.sort(x, 0)
- >>> sorted
- tensor([[-0.5071, -0.2162, 0.6719, -0.5793],
- [ 0.0608, 0.0061, 0.9497, 0.3343],
- [ 0.6058, 0.9553, 1.0960, 2.3332]])
- >>> indices
- tensor([[ 2, 0, 0, 1],
- [ 0, 1, 1, 2],
- [ 1, 2, 2, 0]])
- >>> x = torch.tensor([0, 1] * 9)
- >>> x.sort()
- torch.return_types.sort(
- values=tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]),
- indices=tensor([ 2, 16, 4, 6, 14, 8, 0, 10, 12, 9, 17, 15, 13, 11, 7, 5, 3, 1]))
- >>> x.sort(stable=True)
- torch.return_types.sort(
- values=tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]),
- indices=tensor([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 17]))
- """
- @overload
- def sort(
- input: Tensor,
- *,
- stable: _bool | None,
- dim: str | EllipsisType | None,
- descending: _bool = False,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.sort:
- r"""
- sort(input, dim=-1, descending=False, *, stable=False, out=None) -> (Tensor, LongTensor)
- Sorts the elements of the :attr:`input` tensor along a given dimension
- in ascending order by value.
- If :attr:`dim` is not given, the last dimension of the `input` is chosen.
- If :attr:`descending` is ``True`` then the elements are sorted in descending
- order by value.
- If :attr:`stable` is ``True`` then the sorting routine becomes stable, preserving
- the order of equivalent elements.
- A namedtuple of (values, indices) is returned, where the `values` are the
- sorted values and `indices` are the indices of the elements in the original
- `input` tensor.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to sort along
- descending (bool, optional): controls the sorting order (ascending or descending)
- Keyword args:
- stable (bool, optional): makes the sorting routine stable, which guarantees that the order
- of equivalent elements is preserved.
- out (tuple, optional): the output tuple of (`Tensor`, `LongTensor`) that can
- be optionally given to be used as output buffers
- Example::
- >>> x = torch.randn(3, 4)
- >>> sorted, indices = torch.sort(x)
- >>> sorted
- tensor([[-0.2162, 0.0608, 0.6719, 2.3332],
- [-0.5793, 0.0061, 0.6058, 0.9497],
- [-0.5071, 0.3343, 0.9553, 1.0960]])
- >>> indices
- tensor([[ 1, 0, 2, 3],
- [ 3, 1, 0, 2],
- [ 0, 3, 1, 2]])
- >>> sorted, indices = torch.sort(x, 0)
- >>> sorted
- tensor([[-0.5071, -0.2162, 0.6719, -0.5793],
- [ 0.0608, 0.0061, 0.9497, 0.3343],
- [ 0.6058, 0.9553, 1.0960, 2.3332]])
- >>> indices
- tensor([[ 2, 0, 0, 1],
- [ 0, 1, 1, 2],
- [ 1, 2, 2, 0]])
- >>> x = torch.tensor([0, 1] * 9)
- >>> x.sort()
- torch.return_types.sort(
- values=tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]),
- indices=tensor([ 2, 16, 4, 6, 14, 8, 0, 10, 12, 9, 17, 15, 13, 11, 7, 5, 3, 1]))
- >>> x.sort(stable=True)
- torch.return_types.sort(
- values=tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]),
- indices=tensor([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 17]))
- """
- @overload
- def sort(
- input: Tensor,
- dim: str | EllipsisType | None,
- descending: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.sort:
- r"""
- sort(input, dim=-1, descending=False, *, stable=False, out=None) -> (Tensor, LongTensor)
- Sorts the elements of the :attr:`input` tensor along a given dimension
- in ascending order by value.
- If :attr:`dim` is not given, the last dimension of the `input` is chosen.
- If :attr:`descending` is ``True`` then the elements are sorted in descending
- order by value.
- If :attr:`stable` is ``True`` then the sorting routine becomes stable, preserving
- the order of equivalent elements.
- A namedtuple of (values, indices) is returned, where the `values` are the
- sorted values and `indices` are the indices of the elements in the original
- `input` tensor.
- Args:
- input (Tensor): the input tensor.
- dim (int, optional): the dimension to sort along
- descending (bool, optional): controls the sorting order (ascending or descending)
- Keyword args:
- stable (bool, optional): makes the sorting routine stable, which guarantees that the order
- of equivalent elements is preserved.
- out (tuple, optional): the output tuple of (`Tensor`, `LongTensor`) that can
- be optionally given to be used as output buffers
- Example::
- >>> x = torch.randn(3, 4)
- >>> sorted, indices = torch.sort(x)
- >>> sorted
- tensor([[-0.2162, 0.0608, 0.6719, 2.3332],
- [-0.5793, 0.0061, 0.6058, 0.9497],
- [-0.5071, 0.3343, 0.9553, 1.0960]])
- >>> indices
- tensor([[ 1, 0, 2, 3],
- [ 3, 1, 0, 2],
- [ 0, 3, 1, 2]])
- >>> sorted, indices = torch.sort(x, 0)
- >>> sorted
- tensor([[-0.5071, -0.2162, 0.6719, -0.5793],
- [ 0.0608, 0.0061, 0.9497, 0.3343],
- [ 0.6058, 0.9553, 1.0960, 2.3332]])
- >>> indices
- tensor([[ 2, 0, 0, 1],
- [ 0, 1, 1, 2],
- [ 1, 2, 2, 0]])
- >>> x = torch.tensor([0, 1] * 9)
- >>> x.sort()
- torch.return_types.sort(
- values=tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]),
- indices=tensor([ 2, 16, 4, 6, 14, 8, 0, 10, 12, 9, 17, 15, 13, 11, 7, 5, 3, 1]))
- >>> x.sort(stable=True)
- torch.return_types.sort(
- values=tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]),
- indices=tensor([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 17]))
- """
- def sparse_bsc_tensor(
- ccol_indices: Tensor | list,
- row_indices: Tensor | list,
- values: Tensor | list,
- size: _size | None = None,
- *,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- check_invariants: _bool | None = None,
- ) -> Tensor:
- r"""
- sparse_bsc_tensor(ccol_indices, row_indices, values, size=None, *, dtype=None, device=None, pin_memory=False, requires_grad=False, check_invariants=None) -> Tensor
- Constructs a :ref:`sparse tensor in BSC (Block Compressed Sparse
- Column)) <sparse-bsc-docs>` with specified 2-dimensional blocks at the
- given :attr:`ccol_indices` and :attr:`row_indices`. Sparse matrix
- multiplication operations in BSC format are typically faster than that
- for sparse tensors in COO format. Make you have a look at :ref:`the
- note on the data type of the indices <sparse-bsc-docs>`.
- .. note::
- If the ``device`` argument is not specified the device of the given
- :attr:`values` and indices tensor(s) must match. If, however, the
- argument is specified the input Tensors will be converted to the
- given device and in turn determine the device of the constructed
- sparse tensor.
- Args:
- ccol_indices (array_like): (B+1)-dimensional array of size
- ``(*batchsize, ncolblocks + 1)``. The last element of each
- batch is the number of non-zeros. This tensor encodes the
- index in values and row_indices depending on where the given
- column starts. Each successive number in the tensor subtracted
- by the number before it denotes the number of elements in a
- given column.
- row_indices (array_like): Row block coordinates of each block in
- values. (B+1)-dimensional tensor with the same length
- as values.
- values (array_list): Initial blocks for the tensor. Can be a list,
- tuple, NumPy ``ndarray``, and other types that
- represents a (1 + 2 + K)-dimensional tensor where ``K`` is the
- number of dense dimensions.
- size (list, tuple, :class:`torch.Size`, optional): Size of the
- sparse tensor: ``(*batchsize, nrows * blocksize[0], ncols *
- blocksize[1], *densesize)`` If not provided, the size will be
- inferred as the minimum size big enough to hold all non-zero
- blocks.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of
- returned tensor. Default: if None, infers data type from
- :attr:`values`.
- device (:class:`torch.device`, optional): the desired device of
- returned tensor. Default: if None, uses the current device
- for the default tensor type (see
- :func:`torch.set_default_device`). :attr:`device` will be
- the CPU for CPU tensor types and the current CUDA device for
- CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- check_invariants (bool, optional): If sparse tensor invariants are checked.
- Default: as returned by :func:`torch.sparse.check_sparse_tensor_invariants.is_enabled`,
- initially False.
- Example::
- >>> ccol_indices = [0, 1, 2]
- >>> row_indices = [0, 1]
- >>> values = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
- >>> torch.sparse_bsc_tensor(torch.tensor(ccol_indices, dtype=torch.int64),
- ... torch.tensor(row_indices, dtype=torch.int64),
- ... torch.tensor(values), dtype=torch.double)
- tensor(ccol_indices=tensor([0, 1, 2]),
- row_indices=tensor([0, 1]),
- values=tensor([[[1., 2.],
- [3., 4.]],
- [[5., 6.],
- [7., 8.]]]), size=(2, 2), nnz=2, dtype=torch.float64,
- layout=torch.sparse_bsc)
- """
- def sparse_bsr_tensor(
- crow_indices: Tensor | list,
- col_indices: Tensor | list,
- values: Tensor | list,
- size: _size | None = None,
- *,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- check_invariants: _bool | None = None,
- ) -> Tensor:
- r"""
- sparse_bsr_tensor(crow_indices, col_indices, values, size=None, *, dtype=None, device=None, pin_memory=False, requires_grad=False, check_invariants=None) -> Tensor
- Constructs a :ref:`sparse tensor in BSR (Block Compressed Sparse Row))
- <sparse-bsr-docs>` with specified 2-dimensional blocks at the given
- :attr:`crow_indices` and :attr:`col_indices`. Sparse matrix
- multiplication operations in BSR format are typically faster than that
- for sparse tensors in COO format. Make you have a look at :ref:`the
- note on the data type of the indices <sparse-bsr-docs>`.
- .. note::
- If the ``device`` argument is not specified the device of the given
- :attr:`values` and indices tensor(s) must match. If, however, the
- argument is specified the input Tensors will be converted to the
- given device and in turn determine the device of the constructed
- sparse tensor.
- Args:
- crow_indices (array_like): (B+1)-dimensional array of size
- ``(*batchsize, nrowblocks + 1)``. The last element of each
- batch is the number of non-zeros. This tensor encodes the
- block index in values and col_indices depending on where the
- given row block starts. Each successive number in the tensor
- subtracted by the number before it denotes the number of
- blocks in a given row.
- col_indices (array_like): Column block coordinates of each block
- in values. (B+1)-dimensional tensor with the same length as
- values.
- values (array_list): Initial values for the tensor. Can be a list,
- tuple, NumPy ``ndarray``, scalar, and other types that
- represents a (1 + 2 + K)-dimensional tensor where ``K`` is the
- number of dense dimensions.
- size (list, tuple, :class:`torch.Size`, optional): Size of the
- sparse tensor: ``(*batchsize, nrows * blocksize[0], ncols *
- blocksize[1], *densesize)`` where ``blocksize ==
- values.shape[1:3]``. If not provided, the size will be
- inferred as the minimum size big enough to hold all non-zero
- blocks.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of
- returned tensor. Default: if None, infers data type from
- :attr:`values`.
- device (:class:`torch.device`, optional): the desired device of
- returned tensor. Default: if None, uses the current device
- for the default tensor type (see
- :func:`torch.set_default_device`). :attr:`device` will be
- the CPU for CPU tensor types and the current CUDA device for
- CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- check_invariants (bool, optional): If sparse tensor invariants are checked.
- Default: as returned by :func:`torch.sparse.check_sparse_tensor_invariants.is_enabled`,
- initially False.
- Example::
- >>> crow_indices = [0, 1, 2]
- >>> col_indices = [0, 1]
- >>> values = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
- >>> torch.sparse_bsr_tensor(torch.tensor(crow_indices, dtype=torch.int64),
- ... torch.tensor(col_indices, dtype=torch.int64),
- ... torch.tensor(values), dtype=torch.double)
- tensor(crow_indices=tensor([0, 1, 2]),
- col_indices=tensor([0, 1]),
- values=tensor([[[1., 2.],
- [3., 4.]],
- [[5., 6.],
- [7., 8.]]]), size=(2, 2), nnz=2, dtype=torch.float64,
- layout=torch.sparse_bsr)
- """
- def sparse_compressed_tensor(
- compressed_indices: Tensor | list,
- plain_indices: Tensor | list,
- values: Tensor | list,
- size: _size | None = None,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- check_invariants: _bool | None = None,
- ) -> Tensor:
- r"""
- sparse_compressed_tensor(compressed_indices, plain_indices, values, size=None, *, dtype=None, layout=None, device=None, pin_memory=False, requires_grad=False, check_invariants=None) -> Tensor
- Constructs a :ref:`sparse tensor in Compressed Sparse format - CSR,
- CSC, BSR, or BSC - <sparse-compressed-docs>` with specified values at
- the given :attr:`compressed_indices` and :attr:`plain_indices`. Sparse
- matrix multiplication operations in Compressed Sparse format are
- typically faster than that for sparse tensors in COO format. Make you
- have a look at :ref:`the note on the data type of the indices
- <sparse-compressed-docs>`.
- .. note::
- If the ``device`` argument is not specified the device of the given
- :attr:`values` and indices tensor(s) must match. If, however, the
- argument is specified the input Tensors will be converted to the
- given device and in turn determine the device of the constructed
- sparse tensor.
- Args:
- compressed_indices (array_like): (B+1)-dimensional array of size
- ``(*batchsize, compressed_dim_size + 1)``. The last element of
- each batch is the number of non-zero elements or blocks. This
- tensor encodes the index in ``values`` and ``plain_indices``
- depending on where the given compressed dimension (row or
- column) starts. Each successive number in the tensor
- subtracted by the number before it denotes the number of
- elements or blocks in a given compressed dimension.
- plain_indices (array_like): Plain dimension (column or row)
- coordinates of each element or block in values. (B+1)-dimensional
- tensor with the same length as values.
- values (array_list): Initial values for the tensor. Can be a list,
- tuple, NumPy ``ndarray``, scalar, and other types. that
- represents a (1+K)-dimensional (for CSR and CSC layouts) or
- (1+2+K)-dimensional tensor (for BSR and BSC layouts) where
- ``K`` is the number of dense dimensions.
- size (list, tuple, :class:`torch.Size`, optional): Size of the
- sparse tensor: ``(*batchsize, nrows * blocksize[0], ncols *
- blocksize[1], *densesize)`` where ``blocksize[0] ==
- blocksize[1] == 1`` for CSR and CSC formats. If not provided,
- the size will be inferred as the minimum size big enough to
- hold all non-zero elements or blocks.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of
- returned tensor. Default: if None, infers data type from
- :attr:`values`.
- layout (:class:`torch.layout`, required): the desired layout of
- returned tensor: :attr:`torch.sparse_csr`,
- :attr:`torch.sparse_csc`, :attr:`torch.sparse_bsr`, or
- :attr:`torch.sparse_bsc`.
- device (:class:`torch.device`, optional): the desired device of
- returned tensor. Default: if None, uses the current device
- for the default tensor type (see
- :func:`torch.set_default_device`). :attr:`device` will be
- the CPU for CPU tensor types and the current CUDA device for
- CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- check_invariants (bool, optional): If sparse tensor invariants are checked.
- Default: as returned by :func:`torch.sparse.check_sparse_tensor_invariants.is_enabled`,
- initially False.
- Example::
- >>> compressed_indices = [0, 2, 4]
- >>> plain_indices = [0, 1, 0, 1]
- >>> values = [1, 2, 3, 4]
- >>> torch.sparse_compressed_tensor(torch.tensor(compressed_indices, dtype=torch.int64),
- ... torch.tensor(plain_indices, dtype=torch.int64),
- ... torch.tensor(values), dtype=torch.double, layout=torch.sparse_csr)
- tensor(crow_indices=tensor([0, 2, 4]),
- col_indices=tensor([0, 1, 0, 1]),
- values=tensor([1., 2., 3., 4.]), size=(2, 2), nnz=4,
- dtype=torch.float64, layout=torch.sparse_csr)
- """
- def sparse_coo_tensor(
- indices: Tensor,
- values: Tensor | list,
- size: _size | None = None,
- *,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- check_invariants: _bool | None = None,
- is_coalesced: _bool | None = None,
- ) -> Tensor:
- r"""
- sparse_coo_tensor(indices, values, size=None, *, dtype=None, device=None, pin_memory=False, requires_grad=False, check_invariants=None, is_coalesced=None) -> Tensor
- Constructs a :ref:`sparse tensor in COO(rdinate) format
- <sparse-coo-docs>` with specified values at the given
- :attr:`indices`.
- .. note::
- This function returns an :ref:`uncoalesced tensor
- <sparse-uncoalesced-coo-docs>` when :attr:`is_coalesced` is
- unspecified or ``None``.
- .. note::
- If the ``device`` argument is not specified the device of the given
- :attr:`values` and indices tensor(s) must match. If, however, the
- argument is specified the input Tensors will be converted to the
- given device and in turn determine the device of the constructed
- sparse tensor.
- Args:
- indices (array_like): Initial data for the tensor. Can be a list, tuple,
- NumPy ``ndarray``, scalar, and other types. Will be cast to a :class:`torch.LongTensor`
- internally. The indices are the coordinates of the non-zero values in the matrix, and thus
- should be two-dimensional where the first dimension is the number of tensor dimensions and
- the second dimension is the number of non-zero values.
- values (array_like): Initial values for the tensor. Can be a list, tuple,
- NumPy ``ndarray``, scalar, and other types.
- size (list, tuple, or :class:`torch.Size`, optional): Size of the sparse tensor. If not
- provided the size will be inferred as the minimum size big enough to hold all non-zero
- elements.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if None, infers data type from :attr:`values`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if None, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- check_invariants (bool, optional): If sparse tensor invariants are checked.
- Default: as returned by :func:`torch.sparse.check_sparse_tensor_invariants.is_enabled`,
- initially False.
- is_coalesced (bool, optional): When``True``, the caller is
- responsible for providing tensor indices that correspond to a
- coalesced tensor. If the :attr:`check_invariants` flag is
- False, no error will be raised if the prerequisites are not
- met and this will lead to silently incorrect results. To force
- coalescion please use :meth:`coalesce` on the resulting
- Tensor.
- Default: None: except for trivial cases (e.g. nnz < 2) the
- resulting Tensor has is_coalesced set to ``False```.
- Example::
- >>> i = torch.tensor([[0, 1, 1],
- ... [2, 0, 2]])
- >>> v = torch.tensor([3, 4, 5], dtype=torch.float32)
- >>> torch.sparse_coo_tensor(i, v, [2, 4])
- tensor(indices=tensor([[0, 1, 1],
- [2, 0, 2]]),
- values=tensor([3., 4., 5.]),
- size=(2, 4), nnz=3, layout=torch.sparse_coo)
- >>> torch.sparse_coo_tensor(i, v) # Shape inference
- tensor(indices=tensor([[0, 1, 1],
- [2, 0, 2]]),
- values=tensor([3., 4., 5.]),
- size=(2, 3), nnz=3, layout=torch.sparse_coo)
- >>> torch.sparse_coo_tensor(i, v, [2, 4],
- ... dtype=torch.float64,
- ... device=torch.device('cuda:0'))
- tensor(indices=tensor([[0, 1, 1],
- [2, 0, 2]]),
- values=tensor([3., 4., 5.]),
- device='cuda:0', size=(2, 4), nnz=3, dtype=torch.float64,
- layout=torch.sparse_coo)
- # Create an empty sparse tensor with the following invariants:
- # 1. sparse_dim + dense_dim = len(SparseTensor.shape)
- # 2. SparseTensor._indices().shape = (sparse_dim, nnz)
- # 3. SparseTensor._values().shape = (nnz, SparseTensor.shape[sparse_dim:])
- #
- # For instance, to create an empty sparse tensor with nnz = 0, dense_dim = 0 and
- # sparse_dim = 1 (hence indices is a 2D tensor of shape = (1, 0))
- >>> S = torch.sparse_coo_tensor(torch.empty([1, 0]), [], [1])
- tensor(indices=tensor([], size=(1, 0)),
- values=tensor([], size=(0,)),
- size=(1,), nnz=0, layout=torch.sparse_coo)
- # and to create an empty sparse tensor with nnz = 0, dense_dim = 1 and
- # sparse_dim = 1
- >>> S = torch.sparse_coo_tensor(torch.empty([1, 0]), torch.empty([0, 2]), [1, 2])
- tensor(indices=tensor([], size=(1, 0)),
- values=tensor([], size=(0, 2)),
- size=(1, 2), nnz=0, layout=torch.sparse_coo)
- .. _torch.sparse: https://pytorch.org/docs/stable/sparse.html
- """
- def sparse_csc_tensor(
- ccol_indices: Tensor | list,
- row_indices: Tensor | list,
- values: Tensor | list,
- size: _size | None = None,
- *,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- check_invariants: _bool | None = None,
- ) -> Tensor:
- r"""
- sparse_csc_tensor(ccol_indices, row_indices, values, size=None, *, dtype=None, device=None, pin_memory=False, requires_grad=False, check_invariants=None) -> Tensor
- Constructs a :ref:`sparse tensor in CSC (Compressed Sparse Column)
- <sparse-csc-docs>` with specified values at the given
- :attr:`ccol_indices` and :attr:`row_indices`. Sparse matrix
- multiplication operations in CSC format are typically faster than that
- for sparse tensors in COO format. Make you have a look at :ref:`the
- note on the data type of the indices <sparse-csc-docs>`.
- .. note::
- If the ``device`` argument is not specified the device of the given
- :attr:`values` and indices tensor(s) must match. If, however, the
- argument is specified the input Tensors will be converted to the
- given device and in turn determine the device of the constructed
- sparse tensor.
- Args:
- ccol_indices (array_like): (B+1)-dimensional array of size
- ``(*batchsize, ncols + 1)``. The last element of each batch
- is the number of non-zeros. This tensor encodes the index in
- values and row_indices depending on where the given column
- starts. Each successive number in the tensor subtracted by the
- number before it denotes the number of elements in a given
- column.
- row_indices (array_like): Row coordinates of each element in
- values. (B+1)-dimensional tensor with the same length as
- values.
- values (array_list): Initial values for the tensor. Can be a list,
- tuple, NumPy ``ndarray``, scalar, and other types that
- represents a (1+K)-dimensional tensor where ``K`` is the number
- of dense dimensions.
- size (list, tuple, :class:`torch.Size`, optional): Size of the
- sparse tensor: ``(*batchsize, nrows, ncols, *densesize)``. If
- not provided, the size will be inferred as the minimum size
- big enough to hold all non-zero elements.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of
- returned tensor. Default: if None, infers data type from
- :attr:`values`.
- device (:class:`torch.device`, optional): the desired device of
- returned tensor. Default: if None, uses the current device
- for the default tensor type (see
- :func:`torch.set_default_device`). :attr:`device` will be
- the CPU for CPU tensor types and the current CUDA device for
- CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- check_invariants (bool, optional): If sparse tensor invariants are checked.
- Default: as returned by :func:`torch.sparse.check_sparse_tensor_invariants.is_enabled`,
- initially False.
- Example::
- >>> ccol_indices = [0, 2, 4]
- >>> row_indices = [0, 1, 0, 1]
- >>> values = [1, 2, 3, 4]
- >>> torch.sparse_csc_tensor(torch.tensor(ccol_indices, dtype=torch.int64),
- ... torch.tensor(row_indices, dtype=torch.int64),
- ... torch.tensor(values), dtype=torch.double)
- tensor(ccol_indices=tensor([0, 2, 4]),
- row_indices=tensor([0, 1, 0, 1]),
- values=tensor([1., 2., 3., 4.]), size=(2, 2), nnz=4,
- dtype=torch.float64, layout=torch.sparse_csc)
- """
- def sparse_csr_tensor(
- crow_indices: Tensor | list,
- col_indices: Tensor | list,
- values: Tensor | list,
- size: _size | None = None,
- *,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- check_invariants: _bool | None = None,
- ) -> Tensor:
- r"""
- sparse_csr_tensor(crow_indices, col_indices, values, size=None, *, dtype=None, device=None, pin_memory=False, requires_grad=False, check_invariants=None) -> Tensor
- Constructs a :ref:`sparse tensor in CSR (Compressed Sparse Row) <sparse-csr-docs>` with specified
- values at the given :attr:`crow_indices` and :attr:`col_indices`. Sparse matrix multiplication operations
- in CSR format are typically faster than that for sparse tensors in COO format. Make you have a look
- at :ref:`the note on the data type of the indices <sparse-csr-docs>`.
- .. note::
- If the ``device`` argument is not specified the device of the given
- :attr:`values` and indices tensor(s) must match. If, however, the
- argument is specified the input Tensors will be converted to the
- given device and in turn determine the device of the constructed
- sparse tensor.
- Args:
- crow_indices (array_like): (B+1)-dimensional array of size
- ``(*batchsize, nrows + 1)``. The last element of each batch
- is the number of non-zeros. This tensor encodes the index in
- values and col_indices depending on where the given row
- starts. Each successive number in the tensor subtracted by the
- number before it denotes the number of elements in a given
- row.
- col_indices (array_like): Column coordinates of each element in
- values. (B+1)-dimensional tensor with the same length
- as values.
- values (array_list): Initial values for the tensor. Can be a list,
- tuple, NumPy ``ndarray``, scalar, and other types that
- represents a (1+K)-dimensional tensor where ``K`` is the number
- of dense dimensions.
- size (list, tuple, :class:`torch.Size`, optional): Size of the
- sparse tensor: ``(*batchsize, nrows, ncols, *densesize)``. If
- not provided, the size will be inferred as the minimum size
- big enough to hold all non-zero elements.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of
- returned tensor. Default: if None, infers data type from
- :attr:`values`.
- device (:class:`torch.device`, optional): the desired device of
- returned tensor. Default: if None, uses the current device
- for the default tensor type (see
- :func:`torch.set_default_device`). :attr:`device` will be
- the CPU for CPU tensor types and the current CUDA device for
- CUDA tensor types.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- check_invariants (bool, optional): If sparse tensor invariants are checked.
- Default: as returned by :func:`torch.sparse.check_sparse_tensor_invariants.is_enabled`,
- initially False.
- Example::
- >>> crow_indices = [0, 2, 4]
- >>> col_indices = [0, 1, 0, 1]
- >>> values = [1, 2, 3, 4]
- >>> torch.sparse_csr_tensor(torch.tensor(crow_indices, dtype=torch.int64),
- ... torch.tensor(col_indices, dtype=torch.int64),
- ... torch.tensor(values), dtype=torch.double)
- tensor(crow_indices=tensor([0, 2, 4]),
- col_indices=tensor([0, 1, 0, 1]),
- values=tensor([1., 2., 3., 4.]), size=(2, 2), nnz=4,
- dtype=torch.float64, layout=torch.sparse_csr)
- """
- def split_copy(
- input: Tensor,
- split_size: _int | SymInt,
- dim: _int = 0,
- *,
- out: tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> None:
- r"""
- Performs the same operation as :func:`torch.split`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def split_with_sizes(
- input: Tensor,
- split_sizes: Sequence[_int | SymInt],
- dim: _int = 0,
- ) -> tuple[Tensor, ...]: ...
- def split_with_sizes_copy(
- input: Tensor,
- split_sizes: Sequence[_int | SymInt],
- dim: _int = 0,
- *,
- out: tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> None:
- r"""
- Performs the same operation as :func:`torch.split_with_sizes`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def spmm(input: Tensor, mat2: Tensor) -> Tensor: ...
- def sqrt(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- sqrt(input, *, out=None) -> Tensor
- Returns a new tensor with the square-root of the elements of :attr:`input`.
- .. math::
- \text{out}_{i} = \sqrt{\text{input}_{i}}
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-2.0755, 1.0226, 0.0831, 0.4806])
- >>> torch.sqrt(a)
- tensor([ nan, 1.0112, 0.2883, 0.6933])
- """
- def sqrt_(input: Tensor) -> Tensor: ...
- def square(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- square(input: Tensor, *, out: Optional[Tensor]) -> Tensor
- Returns a new tensor with the square of the elements of :attr:`input`.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-2.0755, 1.0226, 0.0831, 0.4806])
- >>> torch.square(a)
- tensor([ 4.3077, 1.0457, 0.0069, 0.2310])
- """
- def square_(input: Tensor) -> Tensor: ...
- @overload
- def squeeze(input: Tensor) -> Tensor:
- r"""
- squeeze(input: Tensor, dim: Optional[Union[int, List[int]]]) -> Tensor
- Returns a tensor with all specified dimensions of :attr:`input` of size `1` removed.
- For example, if `input` is of shape:
- :math:`(A \times 1 \times B \times C \times 1 \times D)` then the `input.squeeze()`
- will be of shape: :math:`(A \times B \times C \times D)`.
- When :attr:`dim` is given, a squeeze operation is done only in the given
- dimension(s). If `input` is of shape: :math:`(A \times 1 \times B)`,
- ``squeeze(input, 0)`` leaves the tensor unchanged, but ``squeeze(input, 1)``
- will squeeze the tensor to the shape :math:`(A \times B)`.
- .. note:: The returned tensor shares the storage with the input tensor,
- so changing the contents of one will change the contents of the other.
- .. warning:: If the tensor has a batch dimension of size 1, then `squeeze(input)`
- will also remove the batch dimension, which can lead to unexpected
- errors. Consider specifying only the dims you wish to be squeezed.
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): if given, the input will be squeezed
- only in the specified dimensions.
- .. versionchanged:: 2.0
- :attr:`dim` now accepts tuples of dimensions.
- Example::
- >>> x = torch.zeros(2, 1, 2, 1, 2)
- >>> x.size()
- torch.Size([2, 1, 2, 1, 2])
- >>> y = torch.squeeze(x)
- >>> y.size()
- torch.Size([2, 2, 2])
- >>> y = torch.squeeze(x, 0)
- >>> y.size()
- torch.Size([2, 1, 2, 1, 2])
- >>> y = torch.squeeze(x, 1)
- >>> y.size()
- torch.Size([2, 2, 1, 2])
- >>> y = torch.squeeze(x, (1, 2, 3))
- torch.Size([2, 2, 2])
- """
- @overload
- def squeeze(input: Tensor, dim: _int) -> Tensor:
- r"""
- squeeze(input: Tensor, dim: Optional[Union[int, List[int]]]) -> Tensor
- Returns a tensor with all specified dimensions of :attr:`input` of size `1` removed.
- For example, if `input` is of shape:
- :math:`(A \times 1 \times B \times C \times 1 \times D)` then the `input.squeeze()`
- will be of shape: :math:`(A \times B \times C \times D)`.
- When :attr:`dim` is given, a squeeze operation is done only in the given
- dimension(s). If `input` is of shape: :math:`(A \times 1 \times B)`,
- ``squeeze(input, 0)`` leaves the tensor unchanged, but ``squeeze(input, 1)``
- will squeeze the tensor to the shape :math:`(A \times B)`.
- .. note:: The returned tensor shares the storage with the input tensor,
- so changing the contents of one will change the contents of the other.
- .. warning:: If the tensor has a batch dimension of size 1, then `squeeze(input)`
- will also remove the batch dimension, which can lead to unexpected
- errors. Consider specifying only the dims you wish to be squeezed.
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): if given, the input will be squeezed
- only in the specified dimensions.
- .. versionchanged:: 2.0
- :attr:`dim` now accepts tuples of dimensions.
- Example::
- >>> x = torch.zeros(2, 1, 2, 1, 2)
- >>> x.size()
- torch.Size([2, 1, 2, 1, 2])
- >>> y = torch.squeeze(x)
- >>> y.size()
- torch.Size([2, 2, 2])
- >>> y = torch.squeeze(x, 0)
- >>> y.size()
- torch.Size([2, 1, 2, 1, 2])
- >>> y = torch.squeeze(x, 1)
- >>> y.size()
- torch.Size([2, 2, 1, 2])
- >>> y = torch.squeeze(x, (1, 2, 3))
- torch.Size([2, 2, 2])
- """
- @overload
- def squeeze(input: Tensor, dim: _size) -> Tensor:
- r"""
- squeeze(input: Tensor, dim: Optional[Union[int, List[int]]]) -> Tensor
- Returns a tensor with all specified dimensions of :attr:`input` of size `1` removed.
- For example, if `input` is of shape:
- :math:`(A \times 1 \times B \times C \times 1 \times D)` then the `input.squeeze()`
- will be of shape: :math:`(A \times B \times C \times D)`.
- When :attr:`dim` is given, a squeeze operation is done only in the given
- dimension(s). If `input` is of shape: :math:`(A \times 1 \times B)`,
- ``squeeze(input, 0)`` leaves the tensor unchanged, but ``squeeze(input, 1)``
- will squeeze the tensor to the shape :math:`(A \times B)`.
- .. note:: The returned tensor shares the storage with the input tensor,
- so changing the contents of one will change the contents of the other.
- .. warning:: If the tensor has a batch dimension of size 1, then `squeeze(input)`
- will also remove the batch dimension, which can lead to unexpected
- errors. Consider specifying only the dims you wish to be squeezed.
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): if given, the input will be squeezed
- only in the specified dimensions.
- .. versionchanged:: 2.0
- :attr:`dim` now accepts tuples of dimensions.
- Example::
- >>> x = torch.zeros(2, 1, 2, 1, 2)
- >>> x.size()
- torch.Size([2, 1, 2, 1, 2])
- >>> y = torch.squeeze(x)
- >>> y.size()
- torch.Size([2, 2, 2])
- >>> y = torch.squeeze(x, 0)
- >>> y.size()
- torch.Size([2, 1, 2, 1, 2])
- >>> y = torch.squeeze(x, 1)
- >>> y.size()
- torch.Size([2, 2, 1, 2])
- >>> y = torch.squeeze(x, (1, 2, 3))
- torch.Size([2, 2, 2])
- """
- @overload
- def squeeze(input: Tensor, dim: str | EllipsisType | None) -> Tensor:
- r"""
- squeeze(input: Tensor, dim: Optional[Union[int, List[int]]]) -> Tensor
- Returns a tensor with all specified dimensions of :attr:`input` of size `1` removed.
- For example, if `input` is of shape:
- :math:`(A \times 1 \times B \times C \times 1 \times D)` then the `input.squeeze()`
- will be of shape: :math:`(A \times B \times C \times D)`.
- When :attr:`dim` is given, a squeeze operation is done only in the given
- dimension(s). If `input` is of shape: :math:`(A \times 1 \times B)`,
- ``squeeze(input, 0)`` leaves the tensor unchanged, but ``squeeze(input, 1)``
- will squeeze the tensor to the shape :math:`(A \times B)`.
- .. note:: The returned tensor shares the storage with the input tensor,
- so changing the contents of one will change the contents of the other.
- .. warning:: If the tensor has a batch dimension of size 1, then `squeeze(input)`
- will also remove the batch dimension, which can lead to unexpected
- errors. Consider specifying only the dims you wish to be squeezed.
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): if given, the input will be squeezed
- only in the specified dimensions.
- .. versionchanged:: 2.0
- :attr:`dim` now accepts tuples of dimensions.
- Example::
- >>> x = torch.zeros(2, 1, 2, 1, 2)
- >>> x.size()
- torch.Size([2, 1, 2, 1, 2])
- >>> y = torch.squeeze(x)
- >>> y.size()
- torch.Size([2, 2, 2])
- >>> y = torch.squeeze(x, 0)
- >>> y.size()
- torch.Size([2, 1, 2, 1, 2])
- >>> y = torch.squeeze(x, 1)
- >>> y.size()
- torch.Size([2, 2, 1, 2])
- >>> y = torch.squeeze(x, (1, 2, 3))
- torch.Size([2, 2, 2])
- """
- @overload
- def squeeze_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.squeeze`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- @overload
- def squeeze_copy(
- input: Tensor,
- dim: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.squeeze`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- @overload
- def squeeze_copy(
- input: Tensor,
- dim: _size,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.squeeze`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- @overload
- def sspaddmm(
- beta: Number | _complex,
- self: Tensor,
- alpha: Number | _complex,
- mat1: Tensor,
- mat2: Tensor,
- ) -> Tensor:
- r"""
- sspaddmm(input, mat1, mat2, *, beta=1, alpha=1, out=None) -> Tensor
- Matrix multiplies a sparse tensor :attr:`mat1` with a dense tensor
- :attr:`mat2`, then adds the sparse tensor :attr:`input` to the result.
- Note: This function is equivalent to :func:`torch.addmm`, except
- :attr:`input` and :attr:`mat1` are sparse.
- Args:
- input (Tensor): a sparse matrix to be added
- mat1 (Tensor): a sparse matrix to be matrix multiplied
- mat2 (Tensor): a dense matrix to be matrix multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`mat` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat1 @ mat2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- """
- @overload
- def sspaddmm(
- input: Tensor,
- mat1: Tensor,
- mat2: Tensor,
- *,
- beta: Number | _complex = 1,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- sspaddmm(input, mat1, mat2, *, beta=1, alpha=1, out=None) -> Tensor
- Matrix multiplies a sparse tensor :attr:`mat1` with a dense tensor
- :attr:`mat2`, then adds the sparse tensor :attr:`input` to the result.
- Note: This function is equivalent to :func:`torch.addmm`, except
- :attr:`input` and :attr:`mat1` are sparse.
- Args:
- input (Tensor): a sparse matrix to be added
- mat1 (Tensor): a sparse matrix to be matrix multiplied
- mat2 (Tensor): a dense matrix to be matrix multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`mat` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat1 @ mat2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- """
- @overload
- def sspaddmm(
- beta: Number | _complex,
- self: Tensor,
- mat1: Tensor,
- mat2: Tensor,
- ) -> Tensor:
- r"""
- sspaddmm(input, mat1, mat2, *, beta=1, alpha=1, out=None) -> Tensor
- Matrix multiplies a sparse tensor :attr:`mat1` with a dense tensor
- :attr:`mat2`, then adds the sparse tensor :attr:`input` to the result.
- Note: This function is equivalent to :func:`torch.addmm`, except
- :attr:`input` and :attr:`mat1` are sparse.
- Args:
- input (Tensor): a sparse matrix to be added
- mat1 (Tensor): a sparse matrix to be matrix multiplied
- mat2 (Tensor): a dense matrix to be matrix multiplied
- Keyword args:
- beta (Number, optional): multiplier for :attr:`mat` (:math:`\beta`)
- alpha (Number, optional): multiplier for :math:`mat1 @ mat2` (:math:`\alpha`)
- out (Tensor, optional): the output tensor.
- """
- def stack(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- dim: _int = 0,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- stack(tensors, dim=0, *, out=None) -> Tensor
- Concatenates a sequence of tensors along a new dimension.
- All tensors need to be of the same size.
- .. seealso::
- :func:`torch.cat` concatenates the given sequence along an existing dimension.
- Arguments:
- tensors (sequence of Tensors): sequence of tensors to concatenate
- dim (int, optional): dimension to insert. Has to be between 0 and the number
- of dimensions of concatenated tensors (inclusive). Default: 0
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> x = torch.randn(2, 3)
- >>> x
- tensor([[ 0.3367, 0.1288, 0.2345],
- [ 0.2303, -1.1229, -0.1863]])
- >>> torch.stack((x, x)) # same as torch.stack((x, x), dim=0)
- tensor([[[ 0.3367, 0.1288, 0.2345],
- [ 0.2303, -1.1229, -0.1863]],
- [[ 0.3367, 0.1288, 0.2345],
- [ 0.2303, -1.1229, -0.1863]]])
- >>> torch.stack((x, x)).size()
- torch.Size([2, 2, 3])
- >>> torch.stack((x, x), dim=1)
- tensor([[[ 0.3367, 0.1288, 0.2345],
- [ 0.3367, 0.1288, 0.2345]],
- [[ 0.2303, -1.1229, -0.1863],
- [ 0.2303, -1.1229, -0.1863]]])
- >>> torch.stack((x, x), dim=2)
- tensor([[[ 0.3367, 0.3367],
- [ 0.1288, 0.1288],
- [ 0.2345, 0.2345]],
- [[ 0.2303, 0.2303],
- [-1.1229, -1.1229],
- [-0.1863, -0.1863]]])
- >>> torch.stack((x, x), dim=-1)
- tensor([[[ 0.3367, 0.3367],
- [ 0.1288, 0.1288],
- [ 0.2345, 0.2345]],
- [[ 0.2303, 0.2303],
- [-1.1229, -1.1229],
- [-0.1863, -0.1863]]])
- """
- @overload
- def std(
- input: Tensor,
- dim: _int | _size | None,
- unbiased: _bool = True,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- std(input, dim=None, *, correction=1, keepdim=False, out=None) -> Tensor
- Calculates the standard deviation over the dimensions specified by :attr:`dim`.
- :attr:`dim` can be a single dimension, list of dimensions, or ``None`` to
- reduce over all dimensions.
- The standard deviation (:math:`\sigma`) is calculated as
- .. math:: \sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.std(a, dim=1, keepdim=True)
- tensor([[1.0311],
- [0.7477],
- [1.2204],
- [0.9087]])
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def std(
- input: Tensor,
- dim: _int | _size | None = None,
- *,
- correction: Number | _complex | None = None,
- keepdim: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- std(input, dim=None, *, correction=1, keepdim=False, out=None) -> Tensor
- Calculates the standard deviation over the dimensions specified by :attr:`dim`.
- :attr:`dim` can be a single dimension, list of dimensions, or ``None`` to
- reduce over all dimensions.
- The standard deviation (:math:`\sigma`) is calculated as
- .. math:: \sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.std(a, dim=1, keepdim=True)
- tensor([[1.0311],
- [0.7477],
- [1.2204],
- [0.9087]])
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def std(input: Tensor, unbiased: _bool = True) -> Tensor:
- r"""
- std(input, dim=None, *, correction=1, keepdim=False, out=None) -> Tensor
- Calculates the standard deviation over the dimensions specified by :attr:`dim`.
- :attr:`dim` can be a single dimension, list of dimensions, or ``None`` to
- reduce over all dimensions.
- The standard deviation (:math:`\sigma`) is calculated as
- .. math:: \sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.std(a, dim=1, keepdim=True)
- tensor([[1.0311],
- [0.7477],
- [1.2204],
- [0.9087]])
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def std(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- *,
- correction: Number | _complex | None = None,
- keepdim: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- std(input, dim=None, *, correction=1, keepdim=False, out=None) -> Tensor
- Calculates the standard deviation over the dimensions specified by :attr:`dim`.
- :attr:`dim` can be a single dimension, list of dimensions, or ``None`` to
- reduce over all dimensions.
- The standard deviation (:math:`\sigma`) is calculated as
- .. math:: \sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.std(a, dim=1, keepdim=True)
- tensor([[1.0311],
- [0.7477],
- [1.2204],
- [0.9087]])
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def std(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- unbiased: _bool = True,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- std(input, dim=None, *, correction=1, keepdim=False, out=None) -> Tensor
- Calculates the standard deviation over the dimensions specified by :attr:`dim`.
- :attr:`dim` can be a single dimension, list of dimensions, or ``None`` to
- reduce over all dimensions.
- The standard deviation (:math:`\sigma`) is calculated as
- .. math:: \sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.std(a, dim=1, keepdim=True)
- tensor([[1.0311],
- [0.7477],
- [1.2204],
- [0.9087]])
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def std_mean(
- input: Tensor,
- dim: _int | _size | None,
- unbiased: _bool = True,
- keepdim: _bool = False,
- ) -> tuple[Tensor, Tensor]:
- r"""
- std_mean(input, dim=None, *, correction=1, keepdim=False, out=None) -> (Tensor, Tensor)
- Calculates the standard deviation and mean over the dimensions specified by
- :attr:`dim`. :attr:`dim` can be a single dimension, list of dimensions, or
- ``None`` to reduce over all dimensions.
- The standard deviation (:math:`\sigma`) is calculated as
- .. math:: \sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Returns:
- A tuple (std, mean) containing the standard deviation and mean.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.std_mean(a, dim=0, keepdim=True)
- (tensor([[1.2620, 1.0028, 1.0957, 0.6038]]),
- tensor([[ 0.0645, 0.4485, 0.8707, -0.0665]]))
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def std_mean(
- input: Tensor,
- dim: _int | _size | None = None,
- *,
- correction: Number | _complex | None = None,
- keepdim: _bool = False,
- ) -> tuple[Tensor, Tensor]:
- r"""
- std_mean(input, dim=None, *, correction=1, keepdim=False, out=None) -> (Tensor, Tensor)
- Calculates the standard deviation and mean over the dimensions specified by
- :attr:`dim`. :attr:`dim` can be a single dimension, list of dimensions, or
- ``None`` to reduce over all dimensions.
- The standard deviation (:math:`\sigma`) is calculated as
- .. math:: \sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Returns:
- A tuple (std, mean) containing the standard deviation and mean.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.std_mean(a, dim=0, keepdim=True)
- (tensor([[1.2620, 1.0028, 1.0957, 0.6038]]),
- tensor([[ 0.0645, 0.4485, 0.8707, -0.0665]]))
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def std_mean(
- input: Tensor,
- unbiased: _bool = True,
- ) -> tuple[Tensor, Tensor]:
- r"""
- std_mean(input, dim=None, *, correction=1, keepdim=False, out=None) -> (Tensor, Tensor)
- Calculates the standard deviation and mean over the dimensions specified by
- :attr:`dim`. :attr:`dim` can be a single dimension, list of dimensions, or
- ``None`` to reduce over all dimensions.
- The standard deviation (:math:`\sigma`) is calculated as
- .. math:: \sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Returns:
- A tuple (std, mean) containing the standard deviation and mean.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.std_mean(a, dim=0, keepdim=True)
- (tensor([[1.2620, 1.0028, 1.0957, 0.6038]]),
- tensor([[ 0.0645, 0.4485, 0.8707, -0.0665]]))
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def std_mean(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- *,
- correction: Number | _complex | None = None,
- keepdim: _bool = False,
- ) -> tuple[Tensor, Tensor]:
- r"""
- std_mean(input, dim=None, *, correction=1, keepdim=False, out=None) -> (Tensor, Tensor)
- Calculates the standard deviation and mean over the dimensions specified by
- :attr:`dim`. :attr:`dim` can be a single dimension, list of dimensions, or
- ``None`` to reduce over all dimensions.
- The standard deviation (:math:`\sigma`) is calculated as
- .. math:: \sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Returns:
- A tuple (std, mean) containing the standard deviation and mean.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.std_mean(a, dim=0, keepdim=True)
- (tensor([[1.2620, 1.0028, 1.0957, 0.6038]]),
- tensor([[ 0.0645, 0.4485, 0.8707, -0.0665]]))
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def std_mean(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- unbiased: _bool = True,
- keepdim: _bool = False,
- ) -> tuple[Tensor, Tensor]:
- r"""
- std_mean(input, dim=None, *, correction=1, keepdim=False, out=None) -> (Tensor, Tensor)
- Calculates the standard deviation and mean over the dimensions specified by
- :attr:`dim`. :attr:`dim` can be a single dimension, list of dimensions, or
- ``None`` to reduce over all dimensions.
- The standard deviation (:math:`\sigma`) is calculated as
- .. math:: \sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Returns:
- A tuple (std, mean) containing the standard deviation and mean.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.std_mean(a, dim=0, keepdim=True)
- (tensor([[1.2620, 1.0028, 1.0957, 0.6038]]),
- tensor([[ 0.0645, 0.4485, 0.8707, -0.0665]]))
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def sub(
- input: Tensor | Number | _complex,
- other: Tensor | Number | _complex,
- *,
- alpha: Number | _complex | None = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- sub(input, other, *, alpha=1, out=None) -> Tensor
- Subtracts :attr:`other`, scaled by :attr:`alpha`, from :attr:`input`.
- .. math::
- \text{{out}}_i = \text{{input}}_i - \text{{alpha}} \times \text{{other}}_i
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer, float, and complex inputs.
- Args:
- input (Tensor): the input tensor.
- other (Tensor or Number): the tensor or number to subtract from :attr:`input`.
- Keyword args:
- alpha (Number): the multiplier for :attr:`other`.
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor((1, 2))
- >>> b = torch.tensor((0, 1))
- >>> torch.sub(a, b, alpha=2)
- tensor([1, 0])
- """
- @overload
- def sub(self: Tensor, alpha: Number | _complex, other: Tensor) -> Tensor:
- r"""
- sub(input, other, *, alpha=1, out=None) -> Tensor
- Subtracts :attr:`other`, scaled by :attr:`alpha`, from :attr:`input`.
- .. math::
- \text{{out}}_i = \text{{input}}_i - \text{{alpha}} \times \text{{other}}_i
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer, float, and complex inputs.
- Args:
- input (Tensor): the input tensor.
- other (Tensor or Number): the tensor or number to subtract from :attr:`input`.
- Keyword args:
- alpha (Number): the multiplier for :attr:`other`.
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor((1, 2))
- >>> b = torch.tensor((0, 1))
- >>> torch.sub(a, b, alpha=2)
- tensor([1, 0])
- """
- @overload
- def sub(
- self: Tensor,
- alpha: Number | _complex,
- other: Tensor,
- *,
- out: Tensor,
- ) -> Tensor:
- r"""
- sub(input, other, *, alpha=1, out=None) -> Tensor
- Subtracts :attr:`other`, scaled by :attr:`alpha`, from :attr:`input`.
- .. math::
- \text{{out}}_i = \text{{input}}_i - \text{{alpha}} \times \text{{other}}_i
- Supports :ref:`broadcasting to a common shape <broadcasting-semantics>`,
- :ref:`type promotion <type-promotion-doc>`, and integer, float, and complex inputs.
- Args:
- input (Tensor): the input tensor.
- other (Tensor or Number): the tensor or number to subtract from :attr:`input`.
- Keyword args:
- alpha (Number): the multiplier for :attr:`other`.
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor((1, 2))
- >>> b = torch.tensor((0, 1))
- >>> torch.sub(a, b, alpha=2)
- tensor([1, 0])
- """
- @overload
- def subtract(
- input: Tensor,
- other: Tensor,
- *,
- alpha: Number | _complex = 1,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- subtract(input, other, *, alpha=1, out=None) -> Tensor
- Alias for :func:`torch.sub`.
- """
- @overload
- def subtract(
- input: Tensor,
- other: Number | _complex,
- alpha: Number | _complex = 1,
- ) -> Tensor:
- r"""
- subtract(input, other, *, alpha=1, out=None) -> Tensor
- Alias for :func:`torch.sub`.
- """
- @overload
- def sum(input: Tensor, *, dtype: _dtype | None = None) -> Tensor:
- r"""
- sum(input, *, dtype=None) -> Tensor
- Returns the sum of all elements in the :attr:`input` tensor.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- .. note:: Use the `dtype` argument if you need the result in a specific tensor type.
- Otherwise, the result type may be automatically promoted (e.g., from `torch.int32` to `torch.int64`).
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.1133, -0.9567, 0.2958]])
- >>> torch.sum(a)
- tensor(-0.5475)
- .. function:: sum(input, dim, keepdim=False, *, dtype=None) -> Tensor
- :noindex:
- Returns the sum of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim`. If :attr:`dim` is a list of dimensions,
- reduce over all of them.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.0569, -0.2475, 0.0737, -0.3429],
- [-0.2993, 0.9138, 0.9337, -1.6864],
- [ 0.1132, 0.7892, -0.1003, 0.5688],
- [ 0.3637, -0.9906, -0.4752, -1.5197]])
- >>> torch.sum(a, 1)
- tensor([-0.4598, -0.1381, 1.3708, -2.6217])
- >>> b = torch.arange(4 * 5 * 6).view(4, 5, 6)
- >>> torch.sum(b, (2, 1))
- tensor([ 435., 1335., 2235., 3135.])
- """
- @overload
- def sum(
- input: Tensor,
- dim: _int | _size | None,
- keepdim: _bool = False,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- sum(input, *, dtype=None) -> Tensor
- Returns the sum of all elements in the :attr:`input` tensor.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- .. note:: Use the `dtype` argument if you need the result in a specific tensor type.
- Otherwise, the result type may be automatically promoted (e.g., from `torch.int32` to `torch.int64`).
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.1133, -0.9567, 0.2958]])
- >>> torch.sum(a)
- tensor(-0.5475)
- .. function:: sum(input, dim, keepdim=False, *, dtype=None) -> Tensor
- :noindex:
- Returns the sum of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim`. If :attr:`dim` is a list of dimensions,
- reduce over all of them.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.0569, -0.2475, 0.0737, -0.3429],
- [-0.2993, 0.9138, 0.9337, -1.6864],
- [ 0.1132, 0.7892, -0.1003, 0.5688],
- [ 0.3637, -0.9906, -0.4752, -1.5197]])
- >>> torch.sum(a, 1)
- tensor([-0.4598, -0.1381, 1.3708, -2.6217])
- >>> b = torch.arange(4 * 5 * 6).view(4, 5, 6)
- >>> torch.sum(b, (2, 1))
- tensor([ 435., 1335., 2235., 3135.])
- """
- @overload
- def sum(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- keepdim: _bool = False,
- *,
- dtype: _dtype | None = None,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- sum(input, *, dtype=None) -> Tensor
- Returns the sum of all elements in the :attr:`input` tensor.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- .. note:: Use the `dtype` argument if you need the result in a specific tensor type.
- Otherwise, the result type may be automatically promoted (e.g., from `torch.int32` to `torch.int64`).
- Example::
- >>> a = torch.randn(1, 3)
- >>> a
- tensor([[ 0.1133, -0.9567, 0.2958]])
- >>> torch.sum(a)
- tensor(-0.5475)
- .. function:: sum(input, dim, keepdim=False, *, dtype=None) -> Tensor
- :noindex:
- Returns the sum of each row of the :attr:`input` tensor in the given
- dimension :attr:`dim`. If :attr:`dim` is a list of dimensions,
- reduce over all of them.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- If specified, the input tensor is casted to :attr:`dtype` before the operation
- is performed. This is useful for preventing data type overflows. Default: None.
- Example::
- >>> a = torch.randn(4, 4)
- >>> a
- tensor([[ 0.0569, -0.2475, 0.0737, -0.3429],
- [-0.2993, 0.9138, 0.9337, -1.6864],
- [ 0.1132, 0.7892, -0.1003, 0.5688],
- [ 0.3637, -0.9906, -0.4752, -1.5197]])
- >>> torch.sum(a, 1)
- tensor([-0.4598, -0.1381, 1.3708, -2.6217])
- >>> b = torch.arange(4 * 5 * 6).view(4, 5, 6)
- >>> torch.sum(b, (2, 1))
- tensor([ 435., 1335., 2235., 3135.])
- """
- def svd(
- input: Tensor,
- some: _bool = True,
- compute_uv: _bool = True,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.svd:
- r"""
- svd(input, some=True, compute_uv=True, *, out=None) -> (Tensor, Tensor, Tensor)
- Computes the singular value decomposition of either a matrix or batch of
- matrices :attr:`input`. The singular value decomposition is represented as a
- namedtuple `(U, S, V)`, such that :attr:`input` :math:`= U \text{diag}(S) V^{\text{H}}`.
- where :math:`V^{\text{H}}` is the transpose of `V` for real inputs,
- and the conjugate transpose of `V` for complex inputs.
- If :attr:`input` is a batch of matrices, then `U`, `S`, and `V` are also
- batched with the same batch dimensions as :attr:`input`.
- If :attr:`some` is `True` (default), the method returns the reduced singular
- value decomposition. In this case, if the last two dimensions of :attr:`input` are
- `m` and `n`, then the returned `U` and `V` matrices will contain only
- `min(n, m)` orthonormal columns.
- If :attr:`compute_uv` is `False`, the returned `U` and `V` will be
- zero-filled matrices of shape `(m, m)` and `(n, n)`
- respectively, and the same device as :attr:`input`. The argument :attr:`some`
- has no effect when :attr:`compute_uv` is `False`.
- Supports :attr:`input` of float, double, cfloat and cdouble data types.
- The dtypes of `U` and `V` are the same as :attr:`input`'s. `S` will
- always be real-valued, even if :attr:`input` is complex.
- .. warning::
- :func:`torch.svd` is deprecated in favor of :func:`torch.linalg.svd`
- and will be removed in a future PyTorch release.
- ``U, S, V = torch.svd(A, some=some, compute_uv=True)`` (default) should be replaced with
- .. code:: python
- U, S, Vh = torch.linalg.svd(A, full_matrices=not some)
- V = Vh.mH
- ``_, S, _ = torch.svd(A, some=some, compute_uv=False)`` should be replaced with
- .. code:: python
- S = torch.linalg.svdvals(A)
- .. note:: Differences with :func:`torch.linalg.svd`:
- * :attr:`some` is the opposite of
- :func:`torch.linalg.svd`'s :attr:`full_matrices`. Note that
- default value for both is `True`, so the default behavior is
- effectively the opposite.
- * :func:`torch.svd` returns `V`, whereas :func:`torch.linalg.svd` returns
- `Vh`, that is, :math:`V^{\text{H}}`.
- * If :attr:`compute_uv` is `False`, :func:`torch.svd` returns zero-filled
- tensors for `U` and `Vh`, whereas :func:`torch.linalg.svd` returns
- empty tensors.
- .. note:: The singular values are returned in descending order. If :attr:`input` is a batch of matrices,
- then the singular values of each matrix in the batch are returned in descending order.
- .. note:: The `S` tensor can only be used to compute gradients if :attr:`compute_uv` is `True`.
- .. note:: When :attr:`some` is `False`, the gradients on `U[..., :, min(m, n):]`
- and `V[..., :, min(m, n):]` will be ignored in the backward pass, as those vectors
- can be arbitrary bases of the corresponding subspaces.
- .. note:: The implementation of :func:`torch.linalg.svd` on CPU uses LAPACK's routine `?gesdd`
- (a divide-and-conquer algorithm) instead of `?gesvd` for speed. Analogously,
- on GPU, it uses cuSOLVER's routines `gesvdj` and `gesvdjBatched` on CUDA 10.1.243
- and later, and MAGMA's routine `gesdd` on earlier versions of CUDA.
- .. note:: The returned `U` will not be contiguous. The matrix (or batch of matrices) will
- be represented as a column-major matrix (i.e. Fortran-contiguous).
- .. warning:: The gradients with respect to `U` and `V` will only be finite when the input does not
- have zero nor repeated singular values.
- .. warning:: If the distance between any two singular values is close to zero, the gradients with respect to
- `U` and `V` will be numerically unstable, as they depends on
- :math:`\frac{1}{\min_{i \neq j} \sigma_i^2 - \sigma_j^2}`. The same happens when the matrix
- has small singular values, as these gradients also depend on `S^{-1}`.
- .. warning:: For complex-valued :attr:`input` the singular value decomposition is not unique,
- as `U` and `V` may be multiplied by an arbitrary phase factor :math:`e^{i \phi}` on every column.
- The same happens when :attr:`input` has repeated singular values, where one may multiply
- the columns of the spanning subspace in `U` and `V` by a rotation matrix
- and `the resulting vectors will span the same subspace`_.
- Different platforms, like NumPy, or inputs on different device types,
- may produce different `U` and `V` tensors.
- Args:
- input (Tensor): the input tensor of size `(*, m, n)` where `*` is zero or more
- batch dimensions consisting of `(m, n)` matrices.
- some (bool, optional): controls whether to compute the reduced or full decomposition, and
- consequently, the shape of returned `U` and `V`. Default: `True`.
- compute_uv (bool, optional): controls whether to compute `U` and `V`. Default: `True`.
- Keyword args:
- out (tuple, optional): the output tuple of tensors
- Example::
- >>> a = torch.randn(5, 3)
- >>> a
- tensor([[ 0.2364, -0.7752, 0.6372],
- [ 1.7201, 0.7394, -0.0504],
- [-0.3371, -1.0584, 0.5296],
- [ 0.3550, -0.4022, 1.5569],
- [ 0.2445, -0.0158, 1.1414]])
- >>> u, s, v = torch.svd(a)
- >>> u
- tensor([[ 0.4027, 0.0287, 0.5434],
- [-0.1946, 0.8833, 0.3679],
- [ 0.4296, -0.2890, 0.5261],
- [ 0.6604, 0.2717, -0.2618],
- [ 0.4234, 0.2481, -0.4733]])
- >>> s
- tensor([2.3289, 2.0315, 0.7806])
- >>> v
- tensor([[-0.0199, 0.8766, 0.4809],
- [-0.5080, 0.4054, -0.7600],
- [ 0.8611, 0.2594, -0.4373]])
- >>> torch.dist(a, torch.mm(torch.mm(u, torch.diag(s)), v.t()))
- tensor(8.6531e-07)
- >>> a_big = torch.randn(7, 5, 3)
- >>> u, s, v = torch.svd(a_big)
- >>> torch.dist(a_big, torch.matmul(torch.matmul(u, torch.diag_embed(s)), v.mT))
- tensor(2.6503e-06)
- .. _the resulting vectors will span the same subspace:
- (https://en.wikipedia.org/wiki/Singular_value_decomposition#Singular_values,_singular_vectors,_and_their_relation_to_the_SVD)
- """
- def swapaxes(input: Tensor, axis0: _int, axis1: _int) -> Tensor:
- r"""
- swapaxes(input, axis0, axis1) -> Tensor
- Alias for :func:`torch.transpose`.
- This function is equivalent to NumPy's swapaxes function.
- Examples::
- >>> x = torch.tensor([[[0,1],[2,3]],[[4,5],[6,7]]])
- >>> x
- tensor([[[0, 1],
- [2, 3]],
- [[4, 5],
- [6, 7]]])
- >>> torch.swapaxes(x, 0, 1)
- tensor([[[0, 1],
- [4, 5]],
- [[2, 3],
- [6, 7]]])
- >>> torch.swapaxes(x, 0, 2)
- tensor([[[0, 4],
- [2, 6]],
- [[1, 5],
- [3, 7]]])
- """
- def swapdims(input: Tensor, dim0: _int, dim1: _int) -> Tensor:
- r"""
- swapdims(input, dim0, dim1) -> Tensor
- Alias for :func:`torch.transpose`.
- This function is equivalent to NumPy's swapaxes function.
- Examples::
- >>> x = torch.tensor([[[0,1],[2,3]],[[4,5],[6,7]]])
- >>> x
- tensor([[[0, 1],
- [2, 3]],
- [[4, 5],
- [6, 7]]])
- >>> torch.swapdims(x, 0, 1)
- tensor([[[0, 1],
- [4, 5]],
- [[2, 3],
- [6, 7]]])
- >>> torch.swapdims(x, 0, 2)
- tensor([[[0, 4],
- [2, 6]],
- [[1, 5],
- [3, 7]]])
- """
- def sym_constrain_range(
- size: Number | _complex,
- *,
- min: _int | None = None,
- max: _int | None = None,
- ) -> None: ...
- def sym_constrain_range_for_size(
- size: Number | _complex,
- *,
- min: _int | None = None,
- max: _int | None = None,
- ) -> None: ...
- def t(input: Tensor) -> Tensor:
- r"""
- t(input) -> Tensor
- Expects :attr:`input` to be <= 2-D tensor and transposes dimensions 0
- and 1.
- 0-D and 1-D tensors are returned as is. When input is a 2-D tensor this
- is equivalent to ``transpose(input, 0, 1)``.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> x = torch.randn(())
- >>> x
- tensor(0.1995)
- >>> torch.t(x)
- tensor(0.1995)
- >>> x = torch.randn(3)
- >>> x
- tensor([ 2.4320, -0.4608, 0.7702])
- >>> torch.t(x)
- tensor([ 2.4320, -0.4608, 0.7702])
- >>> x = torch.randn(2, 3)
- >>> x
- tensor([[ 0.4875, 0.9158, -0.5872],
- [ 0.3938, -0.6929, 0.6932]])
- >>> torch.t(x)
- tensor([[ 0.4875, 0.3938],
- [ 0.9158, -0.6929],
- [-0.5872, 0.6932]])
- See also :func:`torch.transpose`.
- """
- def t_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.t`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def take(
- input: Tensor,
- index: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- take(input, index) -> Tensor
- Returns a new tensor with the elements of :attr:`input` at the given indices.
- The input tensor is treated as if it were viewed as a 1-D tensor. The result
- takes the same shape as the indices.
- Args:
- input (Tensor): the input tensor.
- index (LongTensor): the indices into tensor
- Example::
- >>> src = torch.tensor([[4, 3, 5],
- ... [6, 7, 8]])
- >>> torch.take(src, torch.tensor([0, 2, 5]))
- tensor([ 4, 5, 8])
- """
- def take_along_dim(
- input: Tensor,
- indices: Tensor,
- dim: _int | None = None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- take_along_dim(input, indices, dim=None, *, out=None) -> Tensor
- Selects values from :attr:`input` at the 1-dimensional indices from :attr:`indices` along the given :attr:`dim`.
- If :attr:`dim` is None, the input array is treated as if it has been flattened to 1d.
- Functions that return indices along a dimension, like :func:`torch.argmax` and :func:`torch.argsort`,
- are designed to work with this function. See the examples below.
- .. note::
- This function is similar to NumPy's `take_along_axis`.
- See also :func:`torch.gather`.
- Args:
- input (Tensor): the input tensor.
- indices (LongTensor): the indices into :attr:`input`. Must have long dtype.
- dim (int, optional): dimension to select along. Default: 0
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> t = torch.tensor([[10, 30, 20], [60, 40, 50]])
- >>> max_idx = torch.argmax(t)
- >>> torch.take_along_dim(t, max_idx)
- tensor([60])
- >>> sorted_idx = torch.argsort(t, dim=1)
- >>> torch.take_along_dim(t, sorted_idx, dim=1)
- tensor([[10, 20, 30],
- [40, 50, 60]])
- """
- def tan(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- tan(input, *, out=None) -> Tensor
- Returns a new tensor with the tangent of the elements in the :attr:`input` tensor,
- where each value in this input tensor is in radians.
- .. math::
- \text{out}_{i} = \tan(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([-1.2027, -1.7687, 0.4412, -1.3856])
- >>> torch.tan(a)
- tensor([-2.5930, 4.9859, 0.4722, -5.3366])
- """
- def tan_(input: Tensor) -> Tensor: ...
- def tanh(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- tanh(input, *, out=None) -> Tensor
- Returns a new tensor with the hyperbolic tangent of the elements
- of :attr:`input`.
- .. math::
- \text{out}_{i} = \tanh(\text{input}_{i})
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 0.8986, -0.7279, 1.1745, 0.2611])
- >>> torch.tanh(a)
- tensor([ 0.7156, -0.6218, 0.8257, 0.2553])
- """
- def tanh_(input: Tensor) -> Tensor: ...
- def tensor(
- data: Any,
- dtype: _dtype | None = None,
- device: DeviceLikeType | None = None,
- requires_grad: _bool = False,
- pin_memory: _bool = False,
- ) -> Tensor:
- r"""
- tensor(data, *, dtype=None, device=None, requires_grad=False, pin_memory=False) -> Tensor
- Constructs a tensor with no autograd history (also known as a "leaf tensor", see :doc:`/notes/autograd`) by copying :attr:`data`.
- .. warning::
- When working with tensors prefer using :func:`torch.Tensor.clone`,
- :func:`torch.Tensor.detach`, and :func:`torch.Tensor.requires_grad_` for
- readability. Letting `t` be a tensor, ``torch.tensor(t)`` is equivalent to
- ``t.detach().clone()``, and ``torch.tensor(t, requires_grad=True)``
- is equivalent to ``t.detach().clone().requires_grad_(True)``.
- .. seealso::
- :func:`torch.as_tensor` preserves autograd history and avoids copies where possible.
- :func:`torch.from_numpy` creates a tensor that shares storage with a NumPy array.
- Args:
- data (array_like): Initial data for the tensor. Can be a list, tuple,
- NumPy ``ndarray``, scalar, and other types.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, infers data type from :attr:`data`.
- device (:class:`torch.device`, optional): the device of the constructed tensor. If None and data is a tensor
- then the device of data is used. If None and data is not a tensor then
- the result tensor is constructed on the current device.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- pin_memory (bool, optional): If set, returned tensor would be allocated in
- the pinned memory. Works only for CPU tensors. Default: ``False``.
- Example::
- >>> torch.tensor([[0.1, 1.2], [2.2, 3.1], [4.9, 5.2]])
- tensor([[ 0.1000, 1.2000],
- [ 2.2000, 3.1000],
- [ 4.9000, 5.2000]])
- >>> torch.tensor([0, 1]) # Type inference on data
- tensor([ 0, 1])
- >>> torch.tensor([[0.11111, 0.222222, 0.3333333]],
- ... dtype=torch.float64,
- ... device=torch.device('cuda:0')) # creates a double tensor on a CUDA device
- tensor([[ 0.1111, 0.2222, 0.3333]], dtype=torch.float64, device='cuda:0')
- >>> torch.tensor(3.14159) # Create a zero-dimensional (scalar) tensor
- tensor(3.1416)
- >>> torch.tensor([]) # Create an empty tensor (of size (0,))
- tensor([])
- """
- @overload
- def tensor_split(
- input: Tensor,
- tensor_indices_or_sections: Tensor,
- dim: _int = 0,
- ) -> tuple[Tensor, ...]:
- r"""
- tensor_split(input, indices_or_sections, dim=0) -> List of Tensors
- Splits a tensor into multiple sub-tensors, all of which are views of :attr:`input`,
- along dimension :attr:`dim` according to the indices or number of sections specified
- by :attr:`indices_or_sections`. This function is based on NumPy's
- :func:`numpy.array_split`.
- Args:
- input (Tensor): the tensor to split
- indices_or_sections (Tensor, int or list or tuple of ints):
- If :attr:`indices_or_sections` is an integer ``n`` or a zero dimensional long tensor
- with value ``n``, :attr:`input` is split into ``n`` sections along dimension :attr:`dim`.
- If :attr:`input` is divisible by ``n`` along dimension :attr:`dim`, each
- section will be of equal size, :code:`input.size(dim) / n`. If :attr:`input`
- is not divisible by ``n``, the sizes of the first :code:`int(input.size(dim) % n)`
- sections will have size :code:`int(input.size(dim) / n) + 1`, and the rest will
- have size :code:`int(input.size(dim) / n)`.
- If :attr:`indices_or_sections` is a list or tuple of ints, or a one-dimensional long
- tensor, then :attr:`input` is split along dimension :attr:`dim` at each of the indices
- in the list, tuple or tensor. For instance, :code:`indices_or_sections=[2, 3]` and :code:`dim=0`
- would result in the tensors :code:`input[:2]`, :code:`input[2:3]`, and :code:`input[3:]`.
- If :attr:`indices_or_sections` is a tensor, it must be a zero-dimensional or one-dimensional
- long tensor on the CPU.
- dim (int, optional): dimension along which to split the tensor. Default: ``0``
- Example::
- >>> x = torch.arange(8)
- >>> torch.tensor_split(x, 3)
- (tensor([0, 1, 2]), tensor([3, 4, 5]), tensor([6, 7]))
- >>> x = torch.arange(7)
- >>> torch.tensor_split(x, 3)
- (tensor([0, 1, 2]), tensor([3, 4]), tensor([5, 6]))
- >>> torch.tensor_split(x, (1, 6))
- (tensor([0]), tensor([1, 2, 3, 4, 5]), tensor([6]))
- >>> x = torch.arange(14).reshape(2, 7)
- >>> x
- tensor([[ 0, 1, 2, 3, 4, 5, 6],
- [ 7, 8, 9, 10, 11, 12, 13]])
- >>> torch.tensor_split(x, 3, dim=1)
- (tensor([[0, 1, 2],
- [7, 8, 9]]),
- tensor([[ 3, 4],
- [10, 11]]),
- tensor([[ 5, 6],
- [12, 13]]))
- >>> torch.tensor_split(x, (1, 6), dim=1)
- (tensor([[0],
- [7]]),
- tensor([[ 1, 2, 3, 4, 5],
- [ 8, 9, 10, 11, 12]]),
- tensor([[ 6],
- [13]]))
- """
- @overload
- def tensor_split(
- input: Tensor,
- sections: _int | SymInt,
- dim: _int = 0,
- ) -> tuple[Tensor, ...]:
- r"""
- tensor_split(input, indices_or_sections, dim=0) -> List of Tensors
- Splits a tensor into multiple sub-tensors, all of which are views of :attr:`input`,
- along dimension :attr:`dim` according to the indices or number of sections specified
- by :attr:`indices_or_sections`. This function is based on NumPy's
- :func:`numpy.array_split`.
- Args:
- input (Tensor): the tensor to split
- indices_or_sections (Tensor, int or list or tuple of ints):
- If :attr:`indices_or_sections` is an integer ``n`` or a zero dimensional long tensor
- with value ``n``, :attr:`input` is split into ``n`` sections along dimension :attr:`dim`.
- If :attr:`input` is divisible by ``n`` along dimension :attr:`dim`, each
- section will be of equal size, :code:`input.size(dim) / n`. If :attr:`input`
- is not divisible by ``n``, the sizes of the first :code:`int(input.size(dim) % n)`
- sections will have size :code:`int(input.size(dim) / n) + 1`, and the rest will
- have size :code:`int(input.size(dim) / n)`.
- If :attr:`indices_or_sections` is a list or tuple of ints, or a one-dimensional long
- tensor, then :attr:`input` is split along dimension :attr:`dim` at each of the indices
- in the list, tuple or tensor. For instance, :code:`indices_or_sections=[2, 3]` and :code:`dim=0`
- would result in the tensors :code:`input[:2]`, :code:`input[2:3]`, and :code:`input[3:]`.
- If :attr:`indices_or_sections` is a tensor, it must be a zero-dimensional or one-dimensional
- long tensor on the CPU.
- dim (int, optional): dimension along which to split the tensor. Default: ``0``
- Example::
- >>> x = torch.arange(8)
- >>> torch.tensor_split(x, 3)
- (tensor([0, 1, 2]), tensor([3, 4, 5]), tensor([6, 7]))
- >>> x = torch.arange(7)
- >>> torch.tensor_split(x, 3)
- (tensor([0, 1, 2]), tensor([3, 4]), tensor([5, 6]))
- >>> torch.tensor_split(x, (1, 6))
- (tensor([0]), tensor([1, 2, 3, 4, 5]), tensor([6]))
- >>> x = torch.arange(14).reshape(2, 7)
- >>> x
- tensor([[ 0, 1, 2, 3, 4, 5, 6],
- [ 7, 8, 9, 10, 11, 12, 13]])
- >>> torch.tensor_split(x, 3, dim=1)
- (tensor([[0, 1, 2],
- [7, 8, 9]]),
- tensor([[ 3, 4],
- [10, 11]]),
- tensor([[ 5, 6],
- [12, 13]]))
- >>> torch.tensor_split(x, (1, 6), dim=1)
- (tensor([[0],
- [7]]),
- tensor([[ 1, 2, 3, 4, 5],
- [ 8, 9, 10, 11, 12]]),
- tensor([[ 6],
- [13]]))
- """
- @overload
- def tensor_split(
- input: Tensor,
- indices: Sequence[_int | SymInt],
- dim: _int = 0,
- ) -> tuple[Tensor, ...]:
- r"""
- tensor_split(input, indices_or_sections, dim=0) -> List of Tensors
- Splits a tensor into multiple sub-tensors, all of which are views of :attr:`input`,
- along dimension :attr:`dim` according to the indices or number of sections specified
- by :attr:`indices_or_sections`. This function is based on NumPy's
- :func:`numpy.array_split`.
- Args:
- input (Tensor): the tensor to split
- indices_or_sections (Tensor, int or list or tuple of ints):
- If :attr:`indices_or_sections` is an integer ``n`` or a zero dimensional long tensor
- with value ``n``, :attr:`input` is split into ``n`` sections along dimension :attr:`dim`.
- If :attr:`input` is divisible by ``n`` along dimension :attr:`dim`, each
- section will be of equal size, :code:`input.size(dim) / n`. If :attr:`input`
- is not divisible by ``n``, the sizes of the first :code:`int(input.size(dim) % n)`
- sections will have size :code:`int(input.size(dim) / n) + 1`, and the rest will
- have size :code:`int(input.size(dim) / n)`.
- If :attr:`indices_or_sections` is a list or tuple of ints, or a one-dimensional long
- tensor, then :attr:`input` is split along dimension :attr:`dim` at each of the indices
- in the list, tuple or tensor. For instance, :code:`indices_or_sections=[2, 3]` and :code:`dim=0`
- would result in the tensors :code:`input[:2]`, :code:`input[2:3]`, and :code:`input[3:]`.
- If :attr:`indices_or_sections` is a tensor, it must be a zero-dimensional or one-dimensional
- long tensor on the CPU.
- dim (int, optional): dimension along which to split the tensor. Default: ``0``
- Example::
- >>> x = torch.arange(8)
- >>> torch.tensor_split(x, 3)
- (tensor([0, 1, 2]), tensor([3, 4, 5]), tensor([6, 7]))
- >>> x = torch.arange(7)
- >>> torch.tensor_split(x, 3)
- (tensor([0, 1, 2]), tensor([3, 4]), tensor([5, 6]))
- >>> torch.tensor_split(x, (1, 6))
- (tensor([0]), tensor([1, 2, 3, 4, 5]), tensor([6]))
- >>> x = torch.arange(14).reshape(2, 7)
- >>> x
- tensor([[ 0, 1, 2, 3, 4, 5, 6],
- [ 7, 8, 9, 10, 11, 12, 13]])
- >>> torch.tensor_split(x, 3, dim=1)
- (tensor([[0, 1, 2],
- [7, 8, 9]]),
- tensor([[ 3, 4],
- [10, 11]]),
- tensor([[ 5, 6],
- [12, 13]]))
- >>> torch.tensor_split(x, (1, 6), dim=1)
- (tensor([[0],
- [7]]),
- tensor([[ 1, 2, 3, 4, 5],
- [ 8, 9, 10, 11, 12]]),
- tensor([[ 6],
- [13]]))
- """
- def threshold(
- input: Tensor,
- threshold: Number | _complex,
- value: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor: ...
- def threshold_(
- input: Tensor,
- threshold: Number | _complex,
- value: Number | _complex,
- ) -> Tensor: ...
- def tile(input: Tensor, dims: Sequence[_int | SymInt]) -> Tensor:
- r"""
- tile(input, dims) -> Tensor
- Constructs a tensor by repeating the elements of :attr:`input`.
- The :attr:`dims` argument specifies the number of repetitions
- in each dimension.
- If :attr:`dims` specifies fewer dimensions than :attr:`input` has, then
- ones are prepended to :attr:`dims` until all dimensions are specified.
- For example, if :attr:`input` has shape (8, 6, 4, 2) and :attr:`dims`
- is (2, 2), then :attr:`dims` is treated as (1, 1, 2, 2).
- Analogously, if :attr:`input` has fewer dimensions than :attr:`dims`
- specifies, then :attr:`input` is treated as if it were unsqueezed at
- dimension zero until it has as many dimensions as :attr:`dims` specifies.
- For example, if :attr:`input` has shape (4, 2) and :attr:`dims`
- is (3, 3, 2, 2), then :attr:`input` is treated as if it had the
- shape (1, 1, 4, 2).
- .. note::
- This function is similar to NumPy's tile function.
- Args:
- input (Tensor): the tensor whose elements to repeat.
- dims (tuple): the number of repetitions per dimension.
- Example::
- >>> x = torch.tensor([1, 2, 3])
- >>> x.tile((2,))
- tensor([1, 2, 3, 1, 2, 3])
- >>> y = torch.tensor([[1, 2], [3, 4]])
- >>> torch.tile(y, (2, 2))
- tensor([[1, 2, 1, 2],
- [3, 4, 3, 4],
- [1, 2, 1, 2],
- [3, 4, 3, 4]])
- """
- def topk(
- input: Tensor,
- k: _int | SymInt,
- dim: _int = -1,
- largest: _bool = True,
- sorted: _bool = True,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.topk:
- r"""
- topk(input, k, dim=None, largest=True, sorted=True, *, out=None) -> (Tensor, LongTensor)
- Returns the :attr:`k` largest elements of the given :attr:`input` tensor along
- a given dimension.
- If :attr:`dim` is not given, the last dimension of the `input` is chosen.
- If :attr:`largest` is ``False`` then the `k` smallest elements are returned.
- A namedtuple of `(values, indices)` is returned with the `values` and
- `indices` of the largest `k` elements of each row of the `input` tensor in the
- given dimension `dim`.
- The boolean option :attr:`sorted` if ``True``, will make sure that the returned
- `k` elements are themselves sorted
- .. note::
- When using `torch.topk`, the indices of tied elements are not guaranteed to be stable
- and may vary across different invocations.
- Args:
- input (Tensor): the input tensor.
- k (int): the k in "top-k"
- dim (int, optional): the dimension to sort along
- largest (bool, optional): controls whether to return largest or
- smallest elements
- sorted (bool, optional): controls whether to return the elements
- in sorted order
- Keyword args:
- out (tuple, optional): the output tuple of (Tensor, LongTensor) that can be
- optionally given to be used as output buffers
- Example::
- >>> x = torch.arange(1., 6.)
- >>> x
- tensor([ 1., 2., 3., 4., 5.])
- >>> torch.topk(x, 3)
- torch.return_types.topk(values=tensor([5., 4., 3.]), indices=tensor([4, 3, 2]))
- """
- def trace(input: Tensor) -> Tensor:
- r"""
- trace(input) -> Tensor
- Returns the sum of the elements of the diagonal of the input 2-D matrix.
- Example::
- >>> x = torch.arange(1., 10.).view(3, 3)
- >>> x
- tensor([[ 1., 2., 3.],
- [ 4., 5., 6.],
- [ 7., 8., 9.]])
- >>> torch.trace(x)
- tensor(15.)
- """
- @overload
- def transpose(input: Tensor, dim0: _int, dim1: _int) -> Tensor:
- r"""
- transpose(input, dim0, dim1) -> Tensor
- Returns a tensor that is a transposed version of :attr:`input`.
- The given dimensions :attr:`dim0` and :attr:`dim1` are swapped.
- If :attr:`input` is a strided tensor then the resulting :attr:`out`
- tensor shares its underlying storage with the :attr:`input` tensor, so
- changing the content of one would change the content of the other.
- If :attr:`input` is a :ref:`sparse tensor <sparse-docs>` then the
- resulting :attr:`out` tensor *does not* share the underlying storage
- with the :attr:`input` tensor.
- If :attr:`input` is a :ref:`sparse tensor <sparse-docs>` with compressed
- layout (SparseCSR, SparseBSR, SparseCSC or SparseBSC) the arguments
- :attr:`dim0` and :attr:`dim1` must be both batch dimensions, or must
- both be sparse dimensions. The batch dimensions of a sparse tensor are the
- dimensions preceding the sparse dimensions.
- .. note::
- Transpositions which interchange the sparse dimensions of a `SparseCSR`
- or `SparseCSC` layout tensor will result in the layout changing between
- the two options. Transposition of the sparse dimensions of a ` SparseBSR`
- or `SparseBSC` layout tensor will likewise generate a result with the
- opposite layout.
- Args:
- input (Tensor): the input tensor.
- dim0 (int): the first dimension to be transposed
- dim1 (int): the second dimension to be transposed
- Example::
- >>> x = torch.randn(2, 3)
- >>> x
- tensor([[ 1.0028, -0.9893, 0.5809],
- [-0.1669, 0.7299, 0.4942]])
- >>> torch.transpose(x, 0, 1)
- tensor([[ 1.0028, -0.1669],
- [-0.9893, 0.7299],
- [ 0.5809, 0.4942]])
- See also :func:`torch.t`.
- """
- @overload
- def transpose(
- input: Tensor,
- dim0: str | EllipsisType | None,
- dim1: str | EllipsisType | None,
- ) -> Tensor:
- r"""
- transpose(input, dim0, dim1) -> Tensor
- Returns a tensor that is a transposed version of :attr:`input`.
- The given dimensions :attr:`dim0` and :attr:`dim1` are swapped.
- If :attr:`input` is a strided tensor then the resulting :attr:`out`
- tensor shares its underlying storage with the :attr:`input` tensor, so
- changing the content of one would change the content of the other.
- If :attr:`input` is a :ref:`sparse tensor <sparse-docs>` then the
- resulting :attr:`out` tensor *does not* share the underlying storage
- with the :attr:`input` tensor.
- If :attr:`input` is a :ref:`sparse tensor <sparse-docs>` with compressed
- layout (SparseCSR, SparseBSR, SparseCSC or SparseBSC) the arguments
- :attr:`dim0` and :attr:`dim1` must be both batch dimensions, or must
- both be sparse dimensions. The batch dimensions of a sparse tensor are the
- dimensions preceding the sparse dimensions.
- .. note::
- Transpositions which interchange the sparse dimensions of a `SparseCSR`
- or `SparseCSC` layout tensor will result in the layout changing between
- the two options. Transposition of the sparse dimensions of a ` SparseBSR`
- or `SparseBSC` layout tensor will likewise generate a result with the
- opposite layout.
- Args:
- input (Tensor): the input tensor.
- dim0 (int): the first dimension to be transposed
- dim1 (int): the second dimension to be transposed
- Example::
- >>> x = torch.randn(2, 3)
- >>> x
- tensor([[ 1.0028, -0.9893, 0.5809],
- [-0.1669, 0.7299, 0.4942]])
- >>> torch.transpose(x, 0, 1)
- tensor([[ 1.0028, -0.1669],
- [-0.9893, 0.7299],
- [ 0.5809, 0.4942]])
- See also :func:`torch.t`.
- """
- def transpose_copy(
- input: Tensor,
- dim0: _int,
- dim1: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.transpose`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- @overload
- def trapezoid(y: Tensor, x: Tensor, *, dim: _int = -1) -> Tensor:
- r"""
- trapezoid(y, x=None, *, dx=None, dim=-1) -> Tensor
- Computes the `trapezoidal rule <https://en.wikipedia.org/wiki/Trapezoidal_rule>`_ along
- :attr:`dim`. By default the spacing between elements is assumed to be 1, but
- :attr:`dx` can be used to specify a different constant spacing, and :attr:`x` can be
- used to specify arbitrary spacing along :attr:`dim`. Only one of :attr:`x` or :attr:`dx` should be specified.
- Assuming :attr:`y` is a one-dimensional tensor with elements :math:`{y_0, y_1, ..., y_n}`,
- the default computation is
- .. math::
- \begin{aligned}
- \sum_{i = 1}^{n} \frac{1}{2} (y_i + y_{i-1})
- \end{aligned}
- When :attr:`dx` is specified the computation becomes
- .. math::
- \begin{aligned}
- \sum_{i = 1}^{n} \frac{\Delta x}{2} (y_i + y_{i-1})
- \end{aligned}
- effectively multiplying the result by :attr:`dx`. When :attr:`x` is specified,
- assuming :attr:`x` is also a one-dimensional tensor with
- elements :math:`{x_0, x_1, ..., x_n}`, the computation becomes
- .. math::
- \begin{aligned}
- \sum_{i = 1}^{n} \frac{(x_i - x_{i-1})}{2} (y_i + y_{i-1})
- \end{aligned}
- When :attr:`x` and :attr:`y` have the same size, the computation is as described above and no broadcasting is needed.
- The broadcasting behavior of this function is as follows when their sizes are different. For both :attr:`x`
- and :attr:`y`, the function computes the difference between consecutive elements along
- dimension :attr:`dim`. This effectively creates two tensors, `x_diff` and `y_diff`, that have
- the same shape as the original tensors except their lengths along the dimension :attr:`dim` is reduced by 1.
- After that, those two tensors are broadcast together to compute final output as part of the trapezoidal rule.
- See the examples below for details.
- .. note::
- The trapezoidal rule is a technique for approximating the definite integral of a function
- by averaging its left and right Riemann sums. The approximation becomes more accurate as
- the resolution of the partition increases.
- Arguments:
- y (Tensor): Values to use when computing the trapezoidal rule.
- x (Tensor): If specified, defines spacing between values as specified above.
- Keyword arguments:
- dx (float): constant spacing between values. If neither :attr:`x` or :attr:`dx`
- are specified then this defaults to 1. Effectively multiplies the result by its value.
- dim (int): The dimension along which to compute the trapezoidal rule.
- The last (inner-most) dimension by default.
- Examples::
- >>> # Computes the trapezoidal rule in 1D, spacing is implicitly 1
- >>> y = torch.tensor([1, 5, 10])
- >>> torch.trapezoid(y)
- tensor(10.5)
- >>> # Computes the same trapezoidal rule directly to verify
- >>> (1 + 10 + 10) / 2
- 10.5
- >>> # Computes the trapezoidal rule in 1D with constant spacing of 2
- >>> # NOTE: the result is the same as before, but multiplied by 2
- >>> torch.trapezoid(y, dx=2)
- 21.0
- >>> # Computes the trapezoidal rule in 1D with arbitrary spacing
- >>> x = torch.tensor([1, 3, 6])
- >>> torch.trapezoid(y, x)
- 28.5
- >>> # Computes the same trapezoidal rule directly to verify
- >>> ((3 - 1) * (1 + 5) + (6 - 3) * (5 + 10)) / 2
- 28.5
- >>> # Computes the trapezoidal rule for each row of a 3x3 matrix
- >>> y = torch.arange(9).reshape(3, 3)
- tensor([[0, 1, 2],
- [3, 4, 5],
- [6, 7, 8]])
- >>> torch.trapezoid(y)
- tensor([ 2., 8., 14.])
- >>> # Computes the trapezoidal rule for each column of the matrix
- >>> torch.trapezoid(y, dim=0)
- tensor([ 6., 8., 10.])
- >>> # Computes the trapezoidal rule for each row of a 3x3 ones matrix
- >>> # with the same arbitrary spacing
- >>> y = torch.ones(3, 3)
- >>> x = torch.tensor([1, 3, 6])
- >>> torch.trapezoid(y, x)
- array([5., 5., 5.])
- >>> # Computes the trapezoidal rule for each row of a 3x3 ones matrix
- >>> # with different arbitrary spacing per row
- >>> y = torch.ones(3, 3)
- >>> x = torch.tensor([[1, 2, 3], [1, 3, 5], [1, 4, 7]])
- >>> torch.trapezoid(y, x)
- array([2., 4., 6.])
- """
- @overload
- def trapezoid(
- y: Tensor,
- *,
- dx: Number | _complex = 1,
- dim: _int = -1,
- ) -> Tensor:
- r"""
- trapezoid(y, x=None, *, dx=None, dim=-1) -> Tensor
- Computes the `trapezoidal rule <https://en.wikipedia.org/wiki/Trapezoidal_rule>`_ along
- :attr:`dim`. By default the spacing between elements is assumed to be 1, but
- :attr:`dx` can be used to specify a different constant spacing, and :attr:`x` can be
- used to specify arbitrary spacing along :attr:`dim`. Only one of :attr:`x` or :attr:`dx` should be specified.
- Assuming :attr:`y` is a one-dimensional tensor with elements :math:`{y_0, y_1, ..., y_n}`,
- the default computation is
- .. math::
- \begin{aligned}
- \sum_{i = 1}^{n} \frac{1}{2} (y_i + y_{i-1})
- \end{aligned}
- When :attr:`dx` is specified the computation becomes
- .. math::
- \begin{aligned}
- \sum_{i = 1}^{n} \frac{\Delta x}{2} (y_i + y_{i-1})
- \end{aligned}
- effectively multiplying the result by :attr:`dx`. When :attr:`x` is specified,
- assuming :attr:`x` is also a one-dimensional tensor with
- elements :math:`{x_0, x_1, ..., x_n}`, the computation becomes
- .. math::
- \begin{aligned}
- \sum_{i = 1}^{n} \frac{(x_i - x_{i-1})}{2} (y_i + y_{i-1})
- \end{aligned}
- When :attr:`x` and :attr:`y` have the same size, the computation is as described above and no broadcasting is needed.
- The broadcasting behavior of this function is as follows when their sizes are different. For both :attr:`x`
- and :attr:`y`, the function computes the difference between consecutive elements along
- dimension :attr:`dim`. This effectively creates two tensors, `x_diff` and `y_diff`, that have
- the same shape as the original tensors except their lengths along the dimension :attr:`dim` is reduced by 1.
- After that, those two tensors are broadcast together to compute final output as part of the trapezoidal rule.
- See the examples below for details.
- .. note::
- The trapezoidal rule is a technique for approximating the definite integral of a function
- by averaging its left and right Riemann sums. The approximation becomes more accurate as
- the resolution of the partition increases.
- Arguments:
- y (Tensor): Values to use when computing the trapezoidal rule.
- x (Tensor): If specified, defines spacing between values as specified above.
- Keyword arguments:
- dx (float): constant spacing between values. If neither :attr:`x` or :attr:`dx`
- are specified then this defaults to 1. Effectively multiplies the result by its value.
- dim (int): The dimension along which to compute the trapezoidal rule.
- The last (inner-most) dimension by default.
- Examples::
- >>> # Computes the trapezoidal rule in 1D, spacing is implicitly 1
- >>> y = torch.tensor([1, 5, 10])
- >>> torch.trapezoid(y)
- tensor(10.5)
- >>> # Computes the same trapezoidal rule directly to verify
- >>> (1 + 10 + 10) / 2
- 10.5
- >>> # Computes the trapezoidal rule in 1D with constant spacing of 2
- >>> # NOTE: the result is the same as before, but multiplied by 2
- >>> torch.trapezoid(y, dx=2)
- 21.0
- >>> # Computes the trapezoidal rule in 1D with arbitrary spacing
- >>> x = torch.tensor([1, 3, 6])
- >>> torch.trapezoid(y, x)
- 28.5
- >>> # Computes the same trapezoidal rule directly to verify
- >>> ((3 - 1) * (1 + 5) + (6 - 3) * (5 + 10)) / 2
- 28.5
- >>> # Computes the trapezoidal rule for each row of a 3x3 matrix
- >>> y = torch.arange(9).reshape(3, 3)
- tensor([[0, 1, 2],
- [3, 4, 5],
- [6, 7, 8]])
- >>> torch.trapezoid(y)
- tensor([ 2., 8., 14.])
- >>> # Computes the trapezoidal rule for each column of the matrix
- >>> torch.trapezoid(y, dim=0)
- tensor([ 6., 8., 10.])
- >>> # Computes the trapezoidal rule for each row of a 3x3 ones matrix
- >>> # with the same arbitrary spacing
- >>> y = torch.ones(3, 3)
- >>> x = torch.tensor([1, 3, 6])
- >>> torch.trapezoid(y, x)
- array([5., 5., 5.])
- >>> # Computes the trapezoidal rule for each row of a 3x3 ones matrix
- >>> # with different arbitrary spacing per row
- >>> y = torch.ones(3, 3)
- >>> x = torch.tensor([[1, 2, 3], [1, 3, 5], [1, 4, 7]])
- >>> torch.trapezoid(y, x)
- array([2., 4., 6.])
- """
- @overload
- def trapz(y: Tensor, *, dx: _float = 1, dim: _int = -1) -> Tensor:
- r"""
- trapz(y, x, *, dim=-1) -> Tensor
- Alias for :func:`torch.trapezoid`.
- """
- @overload
- def trapz(y: Tensor, x: Tensor, *, dim: _int = -1) -> Tensor:
- r"""
- trapz(y, x, *, dim=-1) -> Tensor
- Alias for :func:`torch.trapezoid`.
- """
- def triangular_solve(
- input: Tensor,
- A: Tensor,
- upper: _bool = True,
- transpose: _bool = False,
- unitriangular: _bool = False,
- *,
- out: Tensor | tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> torch.return_types.triangular_solve:
- r"""
- triangular_solve(b, A, upper=True, transpose=False, unitriangular=False, *, out=None) -> (Tensor, Tensor)
- Solves a system of equations with a square upper or lower triangular invertible matrix :math:`A`
- and multiple right-hand sides :math:`b`.
- In symbols, it solves :math:`AX = b` and assumes :math:`A` is square upper-triangular
- (or lower-triangular if :attr:`upper`\ `= False`) and does not have zeros on the diagonal.
- `torch.triangular_solve(b, A)` can take in 2D inputs `b, A` or inputs that are
- batches of 2D matrices. If the inputs are batches, then returns
- batched outputs `X`
- If the diagonal of :attr:`A` contains zeros or elements that are very close to zero and
- :attr:`unitriangular`\ `= False` (default) or if the input matrix is badly conditioned,
- the result may contain `NaN` s.
- Supports input of float, double, cfloat and cdouble data types.
- .. warning::
- :func:`torch.triangular_solve` is deprecated in favor of :func:`torch.linalg.solve_triangular`
- and will be removed in a future PyTorch release.
- :func:`torch.linalg.solve_triangular` has its arguments reversed and does not return a
- copy of one of the inputs.
- ``X = torch.triangular_solve(B, A).solution`` should be replaced with
- .. code:: python
- X = torch.linalg.solve_triangular(A, B)
- Args:
- b (Tensor): multiple right-hand sides of size :math:`(*, m, k)` where
- :math:`*` is zero of more batch dimensions
- A (Tensor): the input triangular coefficient matrix of size :math:`(*, m, m)`
- where :math:`*` is zero or more batch dimensions
- upper (bool, optional): whether :math:`A` is upper or lower triangular. Default: ``True``.
- transpose (bool, optional): solves `op(A)X = b` where `op(A) = A^T` if this flag is ``True``,
- and `op(A) = A` if it is ``False``. Default: ``False``.
- unitriangular (bool, optional): whether :math:`A` is unit triangular.
- If True, the diagonal elements of :math:`A` are assumed to be
- 1 and not referenced from :math:`A`. Default: ``False``.
- Keyword args:
- out ((Tensor, Tensor), optional): tuple of two tensors to write
- the output to. Ignored if `None`. Default: `None`.
- Returns:
- A namedtuple `(solution, cloned_coefficient)` where `cloned_coefficient`
- is a clone of :math:`A` and `solution` is the solution :math:`X` to :math:`AX = b`
- (or whatever variant of the system of equations, depending on the keyword arguments.)
- Examples::
- >>> A = torch.randn(2, 2).triu()
- >>> A
- tensor([[ 1.1527, -1.0753],
- [ 0.0000, 0.7986]])
- >>> b = torch.randn(2, 3)
- >>> b
- tensor([[-0.0210, 2.3513, -1.5492],
- [ 1.5429, 0.7403, -1.0243]])
- >>> torch.triangular_solve(b, A)
- torch.return_types.triangular_solve(
- solution=tensor([[ 1.7841, 2.9046, -2.5405],
- [ 1.9320, 0.9270, -1.2826]]),
- cloned_coefficient=tensor([[ 1.1527, -1.0753],
- [ 0.0000, 0.7986]]))
- """
- def tril(
- input: Tensor,
- diagonal: _int | SymInt = 0,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- tril(input, diagonal=0, *, out=None) -> Tensor
- Returns the lower triangular part of the matrix (2-D tensor) or batch of matrices
- :attr:`input`, the other elements of the result tensor :attr:`out` are set to 0.
- The lower triangular part of the matrix is defined as the elements on and
- below the diagonal.
- The argument :attr:`diagonal` controls which diagonal to consider. If
- :attr:`diagonal` = 0, all elements on and below the main diagonal are
- retained. A positive value includes just as many diagonals above the main
- diagonal, and similarly a negative value excludes just as many diagonals below
- the main diagonal. The main diagonal are the set of indices
- :math:`\lbrace (i, i) \rbrace` for :math:`i \in [0, \min\{d_{1}, d_{2}\} - 1]` where
- :math:`d_{1}, d_{2}` are the dimensions of the matrix.
- Args:
- input (Tensor): the input tensor.
- diagonal (int, optional): the diagonal to consider
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(3, 3)
- >>> a
- tensor([[-1.0813, -0.8619, 0.7105],
- [ 0.0935, 0.1380, 2.2112],
- [-0.3409, -0.9828, 0.0289]])
- >>> torch.tril(a)
- tensor([[-1.0813, 0.0000, 0.0000],
- [ 0.0935, 0.1380, 0.0000],
- [-0.3409, -0.9828, 0.0289]])
- >>> b = torch.randn(4, 6)
- >>> b
- tensor([[ 1.2219, 0.5653, -0.2521, -0.2345, 1.2544, 0.3461],
- [ 0.4785, -0.4477, 0.6049, 0.6368, 0.8775, 0.7145],
- [ 1.1502, 3.2716, -1.1243, -0.5413, 0.3615, 0.6864],
- [-0.0614, -0.7344, -1.3164, -0.7648, -1.4024, 0.0978]])
- >>> torch.tril(b, diagonal=1)
- tensor([[ 1.2219, 0.5653, 0.0000, 0.0000, 0.0000, 0.0000],
- [ 0.4785, -0.4477, 0.6049, 0.0000, 0.0000, 0.0000],
- [ 1.1502, 3.2716, -1.1243, -0.5413, 0.0000, 0.0000],
- [-0.0614, -0.7344, -1.3164, -0.7648, -1.4024, 0.0000]])
- >>> torch.tril(b, diagonal=-1)
- tensor([[ 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
- [ 0.4785, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
- [ 1.1502, 3.2716, 0.0000, 0.0000, 0.0000, 0.0000],
- [-0.0614, -0.7344, -1.3164, 0.0000, 0.0000, 0.0000]])
- """
- def tril_indices(
- row: _int,
- col: _int,
- offset: _int = 0,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- tril_indices(row, col, offset=0, *, dtype=torch.long, device='cpu', layout=torch.strided) -> Tensor
- Returns the indices of the lower triangular part of a :attr:`row`-by-
- :attr:`col` matrix in a 2-by-N Tensor, where the first row contains row
- coordinates of all indices and the second row contains column coordinates.
- Indices are ordered based on rows and then columns.
- The lower triangular part of the matrix is defined as the elements on and
- below the diagonal.
- The argument :attr:`offset` controls which diagonal to consider. If
- :attr:`offset` = 0, all elements on and below the main diagonal are
- retained. A positive value includes just as many diagonals above the main
- diagonal, and similarly a negative value excludes just as many diagonals below
- the main diagonal. The main diagonal are the set of indices
- :math:`\lbrace (i, i) \rbrace` for :math:`i \in [0, \min\{d_{1}, d_{2}\} - 1]`
- where :math:`d_{1}, d_{2}` are the dimensions of the matrix.
- .. note::
- When running on CUDA, ``row * col`` must be less than :math:`2^{59}` to
- prevent overflow during calculation.
- Args:
- row (``int``): number of rows in the 2-D matrix.
- col (``int``): number of columns in the 2-D matrix.
- offset (``int``): diagonal offset from the main diagonal.
- Default: if not provided, 0.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor,
- only support ``torch.int``, ``torch.long``. Default: if ``None``, ``torch.long``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- layout (:class:`torch.layout`, optional): currently only support ``torch.strided``.
- Example::
- >>> a = torch.tril_indices(3, 3)
- >>> a
- tensor([[0, 1, 1, 2, 2, 2],
- [0, 0, 1, 0, 1, 2]])
- >>> a = torch.tril_indices(4, 3, -1)
- >>> a
- tensor([[1, 2, 2, 3, 3, 3],
- [0, 0, 1, 0, 1, 2]])
- >>> a = torch.tril_indices(4, 3, 1)
- >>> a
- tensor([[0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3],
- [0, 1, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
- """
- def triplet_margin_loss(
- anchor: Tensor,
- positive: Tensor,
- negative: Tensor,
- margin: _float = 1.0,
- p: _float = 2,
- eps: _float = 1e-06,
- swap: _bool = False,
- reduction: _int = 1,
- ) -> Tensor: ...
- def triu(
- input: Tensor,
- diagonal: _int | SymInt = 0,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- triu(input, diagonal=0, *, out=None) -> Tensor
- Returns the upper triangular part of a matrix (2-D tensor) or batch of matrices
- :attr:`input`, the other elements of the result tensor :attr:`out` are set to 0.
- The upper triangular part of the matrix is defined as the elements on and
- above the diagonal.
- The argument :attr:`diagonal` controls which diagonal to consider. If
- :attr:`diagonal` = 0, all elements on and above the main diagonal are
- retained. A positive value excludes just as many diagonals above the main
- diagonal, and similarly a negative value includes just as many diagonals below
- the main diagonal. The main diagonal are the set of indices
- :math:`\lbrace (i, i) \rbrace` for :math:`i \in [0, \min\{d_{1}, d_{2}\} - 1]` where
- :math:`d_{1}, d_{2}` are the dimensions of the matrix.
- Args:
- input (Tensor): the input tensor.
- diagonal (int, optional): the diagonal to consider
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(3, 3)
- >>> a
- tensor([[ 0.2309, 0.5207, 2.0049],
- [ 0.2072, -1.0680, 0.6602],
- [ 0.3480, -0.5211, -0.4573]])
- >>> torch.triu(a)
- tensor([[ 0.2309, 0.5207, 2.0049],
- [ 0.0000, -1.0680, 0.6602],
- [ 0.0000, 0.0000, -0.4573]])
- >>> torch.triu(a, diagonal=1)
- tensor([[ 0.0000, 0.5207, 2.0049],
- [ 0.0000, 0.0000, 0.6602],
- [ 0.0000, 0.0000, 0.0000]])
- >>> torch.triu(a, diagonal=-1)
- tensor([[ 0.2309, 0.5207, 2.0049],
- [ 0.2072, -1.0680, 0.6602],
- [ 0.0000, -0.5211, -0.4573]])
- >>> b = torch.randn(4, 6)
- >>> b
- tensor([[ 0.5876, -0.0794, -1.8373, 0.6654, 0.2604, 1.5235],
- [-0.2447, 0.9556, -1.2919, 1.3378, -0.1768, -1.0857],
- [ 0.4333, 0.3146, 0.6576, -1.0432, 0.9348, -0.4410],
- [-0.9888, 1.0679, -1.3337, -1.6556, 0.4798, 0.2830]])
- >>> torch.triu(b, diagonal=1)
- tensor([[ 0.0000, -0.0794, -1.8373, 0.6654, 0.2604, 1.5235],
- [ 0.0000, 0.0000, -1.2919, 1.3378, -0.1768, -1.0857],
- [ 0.0000, 0.0000, 0.0000, -1.0432, 0.9348, -0.4410],
- [ 0.0000, 0.0000, 0.0000, 0.0000, 0.4798, 0.2830]])
- >>> torch.triu(b, diagonal=-1)
- tensor([[ 0.5876, -0.0794, -1.8373, 0.6654, 0.2604, 1.5235],
- [-0.2447, 0.9556, -1.2919, 1.3378, -0.1768, -1.0857],
- [ 0.0000, 0.3146, 0.6576, -1.0432, 0.9348, -0.4410],
- [ 0.0000, 0.0000, -1.3337, -1.6556, 0.4798, 0.2830]])
- """
- def triu_indices(
- row: _int,
- col: _int,
- offset: _int = 0,
- *,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- triu_indices(row, col, offset=0, *, dtype=torch.long, device='cpu', layout=torch.strided) -> Tensor
- Returns the indices of the upper triangular part of a :attr:`row` by
- :attr:`col` matrix in a 2-by-N Tensor, where the first row contains row
- coordinates of all indices and the second row contains column coordinates.
- Indices are ordered based on rows and then columns.
- The upper triangular part of the matrix is defined as the elements on and
- above the diagonal.
- The argument :attr:`offset` controls which diagonal to consider. If
- :attr:`offset` = 0, all elements on and above the main diagonal are
- retained. A positive value excludes just as many diagonals above the main
- diagonal, and similarly a negative value includes just as many diagonals below
- the main diagonal. The main diagonal are the set of indices
- :math:`\lbrace (i, i) \rbrace` for :math:`i \in [0, \min\{d_{1}, d_{2}\} - 1]`
- where :math:`d_{1}, d_{2}` are the dimensions of the matrix.
- .. note::
- When running on CUDA, ``row * col`` must be less than :math:`2^{59}` to
- prevent overflow during calculation.
- Args:
- row (``int``): number of rows in the 2-D matrix.
- col (``int``): number of columns in the 2-D matrix.
- offset (``int``): diagonal offset from the main diagonal.
- Default: if not provided, 0.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor,
- only support ``torch.int``, ``torch.long``. Default: if ``None``, ``torch.long``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- layout (:class:`torch.layout`, optional): currently only support ``torch.strided``.
- Example::
- >>> a = torch.triu_indices(3, 3)
- >>> a
- tensor([[0, 0, 0, 1, 1, 2],
- [0, 1, 2, 1, 2, 2]])
- >>> a = torch.triu_indices(4, 3, -1)
- >>> a
- tensor([[0, 0, 0, 1, 1, 1, 2, 2, 3],
- [0, 1, 2, 0, 1, 2, 1, 2, 2]])
- >>> a = torch.triu_indices(4, 3, 1)
- >>> a
- tensor([[0, 0, 1],
- [1, 2, 2]])
- """
- def true_divide(
- input: Tensor | Number,
- other: Tensor | Number,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- true_divide(dividend, divisor, *, out) -> Tensor
- Alias for :func:`torch.div` with ``rounding_mode=None``.
- """
- def trunc(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- trunc(input, *, out=None) -> Tensor
- Returns a new tensor with the truncated integer values of
- the elements of :attr:`input`.
- For integer inputs, follows the array-api convention of returning a
- copy of the input tensor.
- Args:
- input (Tensor): the input tensor.
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.randn(4)
- >>> a
- tensor([ 3.4742, 0.5466, -0.8008, -0.9079])
- >>> torch.trunc(a)
- tensor([ 3., 0., -0., -0.])
- """
- def trunc_(input: Tensor) -> Tensor: ...
- @overload
- def unbind(input: Tensor, dim: _int = 0) -> tuple[Tensor, ...]:
- r"""
- unbind(input, dim=0) -> seq
- Removes a tensor dimension.
- Returns a tuple of all slices along a given dimension, already without it.
- Arguments:
- input (Tensor): the tensor to unbind
- dim (int): dimension to remove
- Example::
- >>> torch.unbind(torch.tensor([[1, 2, 3],
- >>> [4, 5, 6],
- >>> [7, 8, 9]]))
- (tensor([1, 2, 3]), tensor([4, 5, 6]), tensor([7, 8, 9]))
- """
- @overload
- def unbind(
- input: Tensor,
- dim: str | EllipsisType | None,
- ) -> tuple[Tensor, ...]:
- r"""
- unbind(input, dim=0) -> seq
- Removes a tensor dimension.
- Returns a tuple of all slices along a given dimension, already without it.
- Arguments:
- input (Tensor): the tensor to unbind
- dim (int): dimension to remove
- Example::
- >>> torch.unbind(torch.tensor([[1, 2, 3],
- >>> [4, 5, 6],
- >>> [7, 8, 9]]))
- (tensor([1, 2, 3]), tensor([4, 5, 6]), tensor([7, 8, 9]))
- """
- def unbind_copy(
- input: Tensor,
- dim: _int = 0,
- *,
- out: tuple[Tensor, ...] | list[Tensor] | None = None,
- ) -> None:
- r"""
- Performs the same operation as :func:`torch.unbind`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- @overload
- def unflatten(
- input: Tensor,
- dim: str | EllipsisType | None,
- sizes: Sequence[_int | SymInt],
- names: Sequence[str | EllipsisType | None],
- ) -> Tensor:
- r"""
- unflatten(input, dim, sizes) -> Tensor
- Expands a dimension of the input tensor over multiple dimensions.
- .. seealso::
- :func:`torch.flatten` the inverse of this function. It coalesces several dimensions into one.
- Args:
- input (Tensor): the input tensor.
- dim (int): Dimension to be unflattened, specified as an index into
- ``input.shape``.
- sizes (Tuple[int]): New shape of the unflattened dimension.
- One of its elements can be `-1` in which case the corresponding output
- dimension is inferred. Otherwise, the product of ``sizes`` *must*
- equal ``input.shape[dim]``.
- Returns:
- A View of input with the specified dimension unflattened.
- Examples::
- >>> torch.unflatten(torch.randn(3, 4, 1), 1, (2, 2)).shape
- torch.Size([3, 2, 2, 1])
- >>> torch.unflatten(torch.randn(3, 4, 1), 1, (-1, 2)).shape
- torch.Size([3, 2, 2, 1])
- >>> torch.unflatten(torch.randn(5, 12, 3), -2, (2, 2, 3, 1, 1)).shape
- torch.Size([5, 2, 2, 3, 1, 1, 3])
- """
- @overload
- def unflatten(
- input: Tensor,
- dim: _int,
- sizes: Sequence[_int | SymInt],
- ) -> Tensor:
- r"""
- unflatten(input, dim, sizes) -> Tensor
- Expands a dimension of the input tensor over multiple dimensions.
- .. seealso::
- :func:`torch.flatten` the inverse of this function. It coalesces several dimensions into one.
- Args:
- input (Tensor): the input tensor.
- dim (int): Dimension to be unflattened, specified as an index into
- ``input.shape``.
- sizes (Tuple[int]): New shape of the unflattened dimension.
- One of its elements can be `-1` in which case the corresponding output
- dimension is inferred. Otherwise, the product of ``sizes`` *must*
- equal ``input.shape[dim]``.
- Returns:
- A View of input with the specified dimension unflattened.
- Examples::
- >>> torch.unflatten(torch.randn(3, 4, 1), 1, (2, 2)).shape
- torch.Size([3, 2, 2, 1])
- >>> torch.unflatten(torch.randn(3, 4, 1), 1, (-1, 2)).shape
- torch.Size([3, 2, 2, 1])
- >>> torch.unflatten(torch.randn(5, 12, 3), -2, (2, 2, 3, 1, 1)).shape
- torch.Size([5, 2, 2, 3, 1, 1, 3])
- """
- def unfold_copy(
- input: Tensor,
- dimension: _int,
- size: _int,
- step: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.unfold`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def unique_dim(
- input: Tensor,
- dim: _int,
- sorted: _bool = True,
- return_inverse: _bool = False,
- return_counts: _bool = False,
- ) -> tuple[Tensor, Tensor, Tensor]: ...
- def unsafe_chunk(
- input: Tensor,
- chunks: _int,
- dim: _int = 0,
- ) -> tuple[Tensor, ...]:
- r"""
- unsafe_chunk(input, chunks, dim=0) -> List of Tensors
- Works like :func:`torch.chunk` but without enforcing the autograd restrictions
- on inplace modification of the outputs.
- .. warning::
- This function is safe to use as long as only the input, or only the outputs
- are modified inplace after calling this function. It is user's
- responsibility to ensure that is the case. If both the input and one or more
- of the outputs are modified inplace, gradients computed by autograd will be
- silently incorrect.
- """
- def unsafe_split(
- input: Tensor,
- split_size: _int | SymInt,
- dim: _int = 0,
- ) -> tuple[Tensor, ...]:
- r"""
- unsafe_split(tensor, split_size_or_sections, dim=0) -> List of Tensors
- Works like :func:`torch.split` but without enforcing the autograd restrictions
- on inplace modification of the outputs.
- .. warning::
- This function is safe to use as long as only the input, or only the outputs
- are modified inplace after calling this function. It is user's
- responsibility to ensure that is the case. If both the input and one or more
- of the outputs are modified inplace, gradients computed by autograd will be
- silently incorrect.
- """
- def unsafe_split_with_sizes(
- input: Tensor,
- split_sizes: Sequence[_int | SymInt],
- dim: _int = 0,
- ) -> tuple[Tensor, ...]: ...
- def unsqueeze(input: Tensor, dim: _int) -> Tensor:
- r"""
- unsqueeze(input, dim) -> Tensor
- Returns a new tensor with a dimension of size one inserted at the
- specified position.
- The returned tensor shares the same underlying data with this tensor.
- A :attr:`dim` value within the range ``[-input.dim() - 1, input.dim() + 1)``
- can be used. Negative :attr:`dim` will correspond to :meth:`unsqueeze`
- applied at :attr:`dim` = ``dim + input.dim() + 1``.
- Args:
- input (Tensor): the input tensor.
- dim (int): the index at which to insert the singleton dimension
- Example::
- >>> x = torch.tensor([1, 2, 3, 4])
- >>> torch.unsqueeze(x, 0)
- tensor([[ 1, 2, 3, 4]])
- >>> torch.unsqueeze(x, 1)
- tensor([[ 1],
- [ 2],
- [ 3],
- [ 4]])
- """
- def unsqueeze_copy(
- input: Tensor,
- dim: _int,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.unsqueeze`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def values_copy(input: Tensor, *, out: Tensor | None = None) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.values`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def vander(
- x: Tensor,
- N: _int | None = None,
- increasing: _bool = False,
- ) -> Tensor:
- r"""
- vander(x, N=None, increasing=False) -> Tensor
- Generates a Vandermonde matrix.
- The columns of the output matrix are elementwise powers of the input vector :math:`x^{(N-1)}, x^{(N-2)}, ..., x^0`.
- If increasing is True, the order of the columns is reversed :math:`x^0, x^1, ..., x^{(N-1)}`. Such a
- matrix with a geometric progression in each row is named for Alexandre-Theophile Vandermonde.
- Arguments:
- x (Tensor): 1-D input tensor.
- N (int, optional): Number of columns in the output. If N is not specified,
- a square array is returned :math:`(N = len(x))`.
- increasing (bool, optional): Order of the powers of the columns. If True,
- the powers increase from left to right, if False (the default) they are reversed.
- Returns:
- Tensor: Vandermonde matrix. If increasing is False, the first column is :math:`x^{(N-1)}`,
- the second :math:`x^{(N-2)}` and so forth. If increasing is True, the columns
- are :math:`x^0, x^1, ..., x^{(N-1)}`.
- Example::
- >>> x = torch.tensor([1, 2, 3, 5])
- >>> torch.vander(x)
- tensor([[ 1, 1, 1, 1],
- [ 8, 4, 2, 1],
- [ 27, 9, 3, 1],
- [125, 25, 5, 1]])
- >>> torch.vander(x, N=3)
- tensor([[ 1, 1, 1],
- [ 4, 2, 1],
- [ 9, 3, 1],
- [25, 5, 1]])
- >>> torch.vander(x, N=3, increasing=True)
- tensor([[ 1, 1, 1],
- [ 1, 2, 4],
- [ 1, 3, 9],
- [ 1, 5, 25]])
- """
- @overload
- def var(
- input: Tensor,
- dim: _int | _size | None,
- unbiased: _bool = True,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- var(input, dim=None, *, correction=1, keepdim=False, out=None) -> Tensor
- Calculates the variance over the dimensions specified by :attr:`dim`. :attr:`dim`
- can be a single dimension, list of dimensions, or ``None`` to reduce over all
- dimensions.
- The variance (:math:`\sigma^2`) is calculated as
- .. math:: \sigma^2 = \frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.var(a, dim=1, keepdim=True)
- tensor([[1.0631],
- [0.5590],
- [1.4893],
- [0.8258]])
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def var(
- input: Tensor,
- dim: _int | _size | None = None,
- *,
- correction: Number | _complex | None = None,
- keepdim: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- var(input, dim=None, *, correction=1, keepdim=False, out=None) -> Tensor
- Calculates the variance over the dimensions specified by :attr:`dim`. :attr:`dim`
- can be a single dimension, list of dimensions, or ``None`` to reduce over all
- dimensions.
- The variance (:math:`\sigma^2`) is calculated as
- .. math:: \sigma^2 = \frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.var(a, dim=1, keepdim=True)
- tensor([[1.0631],
- [0.5590],
- [1.4893],
- [0.8258]])
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def var(input: Tensor, unbiased: _bool = True) -> Tensor:
- r"""
- var(input, dim=None, *, correction=1, keepdim=False, out=None) -> Tensor
- Calculates the variance over the dimensions specified by :attr:`dim`. :attr:`dim`
- can be a single dimension, list of dimensions, or ``None`` to reduce over all
- dimensions.
- The variance (:math:`\sigma^2`) is calculated as
- .. math:: \sigma^2 = \frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.var(a, dim=1, keepdim=True)
- tensor([[1.0631],
- [0.5590],
- [1.4893],
- [0.8258]])
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def var(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- *,
- correction: Number | _complex | None = None,
- keepdim: _bool = False,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- var(input, dim=None, *, correction=1, keepdim=False, out=None) -> Tensor
- Calculates the variance over the dimensions specified by :attr:`dim`. :attr:`dim`
- can be a single dimension, list of dimensions, or ``None`` to reduce over all
- dimensions.
- The variance (:math:`\sigma^2`) is calculated as
- .. math:: \sigma^2 = \frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.var(a, dim=1, keepdim=True)
- tensor([[1.0631],
- [0.5590],
- [1.4893],
- [0.8258]])
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def var(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- unbiased: _bool = True,
- keepdim: _bool = False,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- var(input, dim=None, *, correction=1, keepdim=False, out=None) -> Tensor
- Calculates the variance over the dimensions specified by :attr:`dim`. :attr:`dim`
- can be a single dimension, list of dimensions, or ``None`` to reduce over all
- dimensions.
- The variance (:math:`\sigma^2`) is calculated as
- .. math:: \sigma^2 = \frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.var(a, dim=1, keepdim=True)
- tensor([[1.0631],
- [0.5590],
- [1.4893],
- [0.8258]])
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def var_mean(
- input: Tensor,
- dim: _int | _size | None,
- unbiased: _bool = True,
- keepdim: _bool = False,
- ) -> tuple[Tensor, Tensor]:
- r"""
- var_mean(input, dim=None, *, correction=1, keepdim=False, out=None) -> (Tensor, Tensor)
- Calculates the variance and mean over the dimensions specified by :attr:`dim`.
- :attr:`dim` can be a single dimension, list of dimensions, or ``None`` to
- reduce over all dimensions.
- The variance (:math:`\sigma^2`) is calculated as
- .. math:: \sigma^2 = \frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Returns:
- A tuple (var, mean) containing the variance and mean.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.var_mean(a, dim=0, keepdim=True)
- (tensor([[1.5926, 1.0056, 1.2005, 0.3646]]),
- tensor([[ 0.0645, 0.4485, 0.8707, -0.0665]]))
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def var_mean(
- input: Tensor,
- dim: _int | _size | None = None,
- *,
- correction: Number | _complex | None = None,
- keepdim: _bool = False,
- ) -> tuple[Tensor, Tensor]:
- r"""
- var_mean(input, dim=None, *, correction=1, keepdim=False, out=None) -> (Tensor, Tensor)
- Calculates the variance and mean over the dimensions specified by :attr:`dim`.
- :attr:`dim` can be a single dimension, list of dimensions, or ``None`` to
- reduce over all dimensions.
- The variance (:math:`\sigma^2`) is calculated as
- .. math:: \sigma^2 = \frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Returns:
- A tuple (var, mean) containing the variance and mean.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.var_mean(a, dim=0, keepdim=True)
- (tensor([[1.5926, 1.0056, 1.2005, 0.3646]]),
- tensor([[ 0.0645, 0.4485, 0.8707, -0.0665]]))
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def var_mean(
- input: Tensor,
- unbiased: _bool = True,
- ) -> tuple[Tensor, Tensor]:
- r"""
- var_mean(input, dim=None, *, correction=1, keepdim=False, out=None) -> (Tensor, Tensor)
- Calculates the variance and mean over the dimensions specified by :attr:`dim`.
- :attr:`dim` can be a single dimension, list of dimensions, or ``None`` to
- reduce over all dimensions.
- The variance (:math:`\sigma^2`) is calculated as
- .. math:: \sigma^2 = \frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Returns:
- A tuple (var, mean) containing the variance and mean.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.var_mean(a, dim=0, keepdim=True)
- (tensor([[1.5926, 1.0056, 1.2005, 0.3646]]),
- tensor([[ 0.0645, 0.4485, 0.8707, -0.0665]]))
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def var_mean(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- *,
- correction: Number | _complex | None = None,
- keepdim: _bool = False,
- ) -> tuple[Tensor, Tensor]:
- r"""
- var_mean(input, dim=None, *, correction=1, keepdim=False, out=None) -> (Tensor, Tensor)
- Calculates the variance and mean over the dimensions specified by :attr:`dim`.
- :attr:`dim` can be a single dimension, list of dimensions, or ``None`` to
- reduce over all dimensions.
- The variance (:math:`\sigma^2`) is calculated as
- .. math:: \sigma^2 = \frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Returns:
- A tuple (var, mean) containing the variance and mean.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.var_mean(a, dim=0, keepdim=True)
- (tensor([[1.5926, 1.0056, 1.2005, 0.3646]]),
- tensor([[ 0.0645, 0.4485, 0.8707, -0.0665]]))
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- @overload
- def var_mean(
- input: Tensor,
- dim: Sequence[str | EllipsisType | None],
- unbiased: _bool = True,
- keepdim: _bool = False,
- ) -> tuple[Tensor, Tensor]:
- r"""
- var_mean(input, dim=None, *, correction=1, keepdim=False, out=None) -> (Tensor, Tensor)
- Calculates the variance and mean over the dimensions specified by :attr:`dim`.
- :attr:`dim` can be a single dimension, list of dimensions, or ``None`` to
- reduce over all dimensions.
- The variance (:math:`\sigma^2`) is calculated as
- .. math:: \sigma^2 = \frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2
- where :math:`x` is the sample set of elements, :math:`\bar{x}` is the
- sample mean, :math:`N` is the number of samples and :math:`\delta N` is
- the :attr:`correction`.
- If :attr:`keepdim` is ``True``, the output tensor is of the same size
- as :attr:`input` except in the dimension(s) :attr:`dim` where it is of size 1.
- Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting in the
- output tensor having 1 (or ``len(dim)``) fewer dimension(s).
- Args:
- input (Tensor): the input tensor.
- dim (int or tuple of ints, optional): the dimension or dimensions to reduce.
- If ``None``, all dimensions are reduced.
- Keyword args:
- correction (int): difference between the sample size and sample degrees of freedom.
- Defaults to `Bessel's correction`_, ``correction=1``.
- .. versionchanged:: 2.0
- Previously this argument was called ``unbiased`` and was a boolean
- with ``True`` corresponding to ``correction=1`` and ``False`` being
- ``correction=0``.
- keepdim (bool, optional): whether the output tensor has :attr:`dim` retained or not. Default: ``False``.
- out (Tensor, optional): the output tensor.
- Returns:
- A tuple (var, mean) containing the variance and mean.
- Example:
- >>> a = torch.tensor(
- ... [[ 0.2035, 1.2959, 1.8101, -0.4644],
- ... [ 1.5027, -0.3270, 0.5905, 0.6538],
- ... [-1.5745, 1.3330, -0.5596, -0.6548],
- ... [ 0.1264, -0.5080, 1.6420, 0.1992]]
- ... ) # fmt: skip
- >>> torch.var_mean(a, dim=0, keepdim=True)
- (tensor([[1.5926, 1.0056, 1.2005, 0.3646]]),
- tensor([[ 0.0645, 0.4485, 0.8707, -0.0665]]))
- .. _Bessel's correction: https://en.wikipedia.org/wiki/Bessel%27s_correction
- """
- def vdot(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- vdot(input, other, *, out=None) -> Tensor
- Computes the dot product of two 1D vectors along a dimension.
- In symbols, this function computes
- .. math::
- \sum_{i=1}^n \overline{x_i}y_i.
- where :math:`\overline{x_i}` denotes the conjugate for complex
- vectors, and it is the identity for real vectors.
- .. note::
- Unlike NumPy's vdot, torch.vdot intentionally only supports computing the dot product
- of two 1D tensors with the same number of elements.
- .. seealso::
- :func:`torch.linalg.vecdot` computes the dot product of two batches of vectors along a dimension.
- Args:
- input (Tensor): first tensor in the dot product, must be 1D. Its conjugate is used if it's complex.
- other (Tensor): second tensor in the dot product, must be 1D.
- Keyword args:
- .. note:: out (Tensor, optional): the output tensor.
- Example::
- >>> torch.vdot(torch.tensor([2, 3]), torch.tensor([2, 1]))
- tensor(7)
- >>> a = torch.tensor((1 +2j, 3 - 1j))
- >>> b = torch.tensor((2 +1j, 4 - 0j))
- >>> torch.vdot(a, b)
- tensor([16.+1.j])
- >>> torch.vdot(b, a)
- tensor([16.-1.j])
- """
- def view_as_complex(input: Tensor) -> Tensor:
- r"""
- view_as_complex(input) -> Tensor
- Returns a view of :attr:`input` as a complex tensor. For an input complex
- tensor of :attr:`size` :math:`m1, m2, \dots, mi, 2`, this function returns a
- new complex tensor of :attr:`size` :math:`m1, m2, \dots, mi` where the last
- dimension of the input tensor is expected to represent the real and imaginary
- components of complex numbers.
- .. warning::
- :func:`view_as_complex` is only supported for tensors with
- :class:`torch.dtype` ``torch.float64`` and ``torch.float32``. The input is
- expected to have the last dimension of :attr:`size` 2. In addition, the
- tensor must have a `stride` of 1 for its last dimension. The strides of all
- other dimensions must be even numbers.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> x=torch.randn(4, 2)
- >>> x
- tensor([[ 1.6116, -0.5772],
- [-1.4606, -0.9120],
- [ 0.0786, -1.7497],
- [-0.6561, -1.6623]])
- >>> torch.view_as_complex(x)
- tensor([(1.6116-0.5772j), (-1.4606-0.9120j), (0.0786-1.7497j), (-0.6561-1.6623j)])
- """
- def view_as_complex_copy(
- input: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.view_as_complex`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- def view_as_real(input: Tensor) -> Tensor:
- r"""
- view_as_real(input) -> Tensor
- Returns a view of :attr:`input` as a real tensor. For an input complex tensor of
- :attr:`size` :math:`m1, m2, \dots, mi`, this function returns a new
- real tensor of size :math:`m1, m2, \dots, mi, 2`, where the last dimension of size 2
- represents the real and imaginary components of complex numbers.
- .. warning::
- :func:`view_as_real` is only supported for tensors with ``complex dtypes``.
- Args:
- input (Tensor): the input tensor.
- Example::
- >>> x=torch.randn(4, dtype=torch.cfloat)
- >>> x
- tensor([(0.4737-0.3839j), (-0.2098-0.6699j), (0.3470-0.9451j), (-0.5174-1.3136j)])
- >>> torch.view_as_real(x)
- tensor([[ 0.4737, -0.3839],
- [-0.2098, -0.6699],
- [ 0.3470, -0.9451],
- [-0.5174, -1.3136]])
- """
- def view_as_real_copy(
- input: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.view_as_real`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- @overload
- def view_copy(
- input: Tensor,
- dtype: _dtype,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.view`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- @overload
- def view_copy(
- input: Tensor,
- size: Sequence[_int | SymInt],
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- Performs the same operation as :func:`torch.view`, but all output tensors
- are freshly created instead of aliasing the input.
- """
- @overload
- def vsplit(input: Tensor, sections: _int) -> tuple[Tensor, ...]:
- r"""
- vsplit(input, indices_or_sections) -> List of Tensors
- Splits :attr:`input`, a tensor with two or more dimensions, into multiple tensors
- vertically according to :attr:`indices_or_sections`. Each split is a view of
- :attr:`input`.
- This is equivalent to calling torch.tensor_split(input, indices_or_sections, dim=0)
- (the split dimension is 0), except that if :attr:`indices_or_sections` is an integer
- it must evenly divide the split dimension or a runtime error will be thrown.
- This function is based on NumPy's :func:`numpy.vsplit`.
- Args:
- input (Tensor): tensor to split.
- indices_or_sections (int or list or tuple of ints): See argument in :func:`torch.tensor_split`.
- Example::
- >>> t = torch.arange(16.0).reshape(4,4)
- >>> t
- tensor([[ 0., 1., 2., 3.],
- [ 4., 5., 6., 7.],
- [ 8., 9., 10., 11.],
- [12., 13., 14., 15.]])
- >>> torch.vsplit(t, 2)
- (tensor([[0., 1., 2., 3.],
- [4., 5., 6., 7.]]),
- tensor([[ 8., 9., 10., 11.],
- [12., 13., 14., 15.]]))
- >>> torch.vsplit(t, [3, 6])
- (tensor([[ 0., 1., 2., 3.],
- [ 4., 5., 6., 7.],
- [ 8., 9., 10., 11.]]),
- tensor([[12., 13., 14., 15.]]),
- tensor([], size=(0, 4)))
- """
- @overload
- def vsplit(input: Tensor, indices: _size) -> tuple[Tensor, ...]:
- r"""
- vsplit(input, indices_or_sections) -> List of Tensors
- Splits :attr:`input`, a tensor with two or more dimensions, into multiple tensors
- vertically according to :attr:`indices_or_sections`. Each split is a view of
- :attr:`input`.
- This is equivalent to calling torch.tensor_split(input, indices_or_sections, dim=0)
- (the split dimension is 0), except that if :attr:`indices_or_sections` is an integer
- it must evenly divide the split dimension or a runtime error will be thrown.
- This function is based on NumPy's :func:`numpy.vsplit`.
- Args:
- input (Tensor): tensor to split.
- indices_or_sections (int or list or tuple of ints): See argument in :func:`torch.tensor_split`.
- Example::
- >>> t = torch.arange(16.0).reshape(4,4)
- >>> t
- tensor([[ 0., 1., 2., 3.],
- [ 4., 5., 6., 7.],
- [ 8., 9., 10., 11.],
- [12., 13., 14., 15.]])
- >>> torch.vsplit(t, 2)
- (tensor([[0., 1., 2., 3.],
- [4., 5., 6., 7.]]),
- tensor([[ 8., 9., 10., 11.],
- [12., 13., 14., 15.]]))
- >>> torch.vsplit(t, [3, 6])
- (tensor([[ 0., 1., 2., 3.],
- [ 4., 5., 6., 7.],
- [ 8., 9., 10., 11.]]),
- tensor([[12., 13., 14., 15.]]),
- tensor([], size=(0, 4)))
- """
- def vstack(
- tensors: tuple[Tensor, ...] | list[Tensor] | None,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- vstack(tensors, *, out=None) -> Tensor
- Stack tensors in sequence vertically (row wise).
- This is equivalent to concatenation along the first axis after all 1-D tensors have been reshaped by :func:`torch.atleast_2d`.
- Args:
- tensors (sequence of Tensors): sequence of tensors to concatenate
- Keyword args:
- out (Tensor, optional): the output tensor.
- Example::
- >>> a = torch.tensor([1, 2, 3])
- >>> b = torch.tensor([4, 5, 6])
- >>> torch.vstack((a,b))
- tensor([[1, 2, 3],
- [4, 5, 6]])
- >>> a = torch.tensor([[1],[2],[3]])
- >>> b = torch.tensor([[4],[5],[6]])
- >>> torch.vstack((a,b))
- tensor([[1],
- [2],
- [3],
- [4],
- [5],
- [6]])
- """
- @overload
- def where(condition: Tensor) -> tuple[Tensor, ...]:
- r"""
- where(condition, input, other, *, out=None) -> Tensor
- Return a tensor of elements selected from either :attr:`input` or :attr:`other`, depending on :attr:`condition`.
- The operation is defined as:
- .. math::
- \text{out}_i = \begin{cases}
- \text{input}_i & \text{if } \text{condition}_i \\
- \text{other}_i & \text{otherwise} \\
- \end{cases}
- .. note::
- The tensors :attr:`condition`, :attr:`input`, :attr:`other` must be :ref:`broadcastable <broadcasting-semantics>`.
- Arguments:
- condition (BoolTensor): When True (nonzero), yield input, otherwise yield other
- input (Tensor or Scalar): value (if :attr:`input` is a scalar) or values selected at indices
- where :attr:`condition` is ``True``
- other (Tensor or Scalar): value (if :attr:`other` is a scalar) or values selected at indices
- where :attr:`condition` is ``False``
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- Tensor: A tensor of shape equal to the broadcasted shape of :attr:`condition`, :attr:`input`, :attr:`other`
- Example::
- >>> x = torch.randn(3, 2)
- >>> y = torch.ones(3, 2)
- >>> x
- tensor([[-0.4620, 0.3139],
- [ 0.3898, -0.7197],
- [ 0.0478, -0.1657]])
- >>> torch.where(x > 0, 1.0, 0.0)
- tensor([[0., 1.],
- [1., 0.],
- [1., 0.]])
- >>> torch.where(x > 0, x, y)
- tensor([[ 1.0000, 0.3139],
- [ 0.3898, 1.0000],
- [ 0.0478, 1.0000]])
- >>> x = torch.randn(2, 2, dtype=torch.double)
- >>> x
- tensor([[ 1.0779, 0.0383],
- [-0.8785, -1.1089]], dtype=torch.float64)
- >>> torch.where(x > 0, x, 0.)
- tensor([[1.0779, 0.0383],
- [0.0000, 0.0000]], dtype=torch.float64)
- .. function:: where(condition) -> tuple of LongTensor
- :noindex:
- ``torch.where(condition)`` is identical to
- ``torch.nonzero(condition, as_tuple=True)``.
- .. note::
- See also :func:`torch.nonzero`.
- """
- @overload
- def where(
- condition: Tensor,
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- where(condition, input, other, *, out=None) -> Tensor
- Return a tensor of elements selected from either :attr:`input` or :attr:`other`, depending on :attr:`condition`.
- The operation is defined as:
- .. math::
- \text{out}_i = \begin{cases}
- \text{input}_i & \text{if } \text{condition}_i \\
- \text{other}_i & \text{otherwise} \\
- \end{cases}
- .. note::
- The tensors :attr:`condition`, :attr:`input`, :attr:`other` must be :ref:`broadcastable <broadcasting-semantics>`.
- Arguments:
- condition (BoolTensor): When True (nonzero), yield input, otherwise yield other
- input (Tensor or Scalar): value (if :attr:`input` is a scalar) or values selected at indices
- where :attr:`condition` is ``True``
- other (Tensor or Scalar): value (if :attr:`other` is a scalar) or values selected at indices
- where :attr:`condition` is ``False``
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- Tensor: A tensor of shape equal to the broadcasted shape of :attr:`condition`, :attr:`input`, :attr:`other`
- Example::
- >>> x = torch.randn(3, 2)
- >>> y = torch.ones(3, 2)
- >>> x
- tensor([[-0.4620, 0.3139],
- [ 0.3898, -0.7197],
- [ 0.0478, -0.1657]])
- >>> torch.where(x > 0, 1.0, 0.0)
- tensor([[0., 1.],
- [1., 0.],
- [1., 0.]])
- >>> torch.where(x > 0, x, y)
- tensor([[ 1.0000, 0.3139],
- [ 0.3898, 1.0000],
- [ 0.0478, 1.0000]])
- >>> x = torch.randn(2, 2, dtype=torch.double)
- >>> x
- tensor([[ 1.0779, 0.0383],
- [-0.8785, -1.1089]], dtype=torch.float64)
- >>> torch.where(x > 0, x, 0.)
- tensor([[1.0779, 0.0383],
- [0.0000, 0.0000]], dtype=torch.float64)
- .. function:: where(condition) -> tuple of LongTensor
- :noindex:
- ``torch.where(condition)`` is identical to
- ``torch.nonzero(condition, as_tuple=True)``.
- .. note::
- See also :func:`torch.nonzero`.
- """
- @overload
- def where(
- condition: Tensor,
- self: Number | _complex,
- other: Tensor,
- ) -> Tensor:
- r"""
- where(condition, input, other, *, out=None) -> Tensor
- Return a tensor of elements selected from either :attr:`input` or :attr:`other`, depending on :attr:`condition`.
- The operation is defined as:
- .. math::
- \text{out}_i = \begin{cases}
- \text{input}_i & \text{if } \text{condition}_i \\
- \text{other}_i & \text{otherwise} \\
- \end{cases}
- .. note::
- The tensors :attr:`condition`, :attr:`input`, :attr:`other` must be :ref:`broadcastable <broadcasting-semantics>`.
- Arguments:
- condition (BoolTensor): When True (nonzero), yield input, otherwise yield other
- input (Tensor or Scalar): value (if :attr:`input` is a scalar) or values selected at indices
- where :attr:`condition` is ``True``
- other (Tensor or Scalar): value (if :attr:`other` is a scalar) or values selected at indices
- where :attr:`condition` is ``False``
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- Tensor: A tensor of shape equal to the broadcasted shape of :attr:`condition`, :attr:`input`, :attr:`other`
- Example::
- >>> x = torch.randn(3, 2)
- >>> y = torch.ones(3, 2)
- >>> x
- tensor([[-0.4620, 0.3139],
- [ 0.3898, -0.7197],
- [ 0.0478, -0.1657]])
- >>> torch.where(x > 0, 1.0, 0.0)
- tensor([[0., 1.],
- [1., 0.],
- [1., 0.]])
- >>> torch.where(x > 0, x, y)
- tensor([[ 1.0000, 0.3139],
- [ 0.3898, 1.0000],
- [ 0.0478, 1.0000]])
- >>> x = torch.randn(2, 2, dtype=torch.double)
- >>> x
- tensor([[ 1.0779, 0.0383],
- [-0.8785, -1.1089]], dtype=torch.float64)
- >>> torch.where(x > 0, x, 0.)
- tensor([[1.0779, 0.0383],
- [0.0000, 0.0000]], dtype=torch.float64)
- .. function:: where(condition) -> tuple of LongTensor
- :noindex:
- ``torch.where(condition)`` is identical to
- ``torch.nonzero(condition, as_tuple=True)``.
- .. note::
- See also :func:`torch.nonzero`.
- """
- @overload
- def where(
- condition: Tensor,
- input: Tensor,
- other: Number | _complex,
- ) -> Tensor:
- r"""
- where(condition, input, other, *, out=None) -> Tensor
- Return a tensor of elements selected from either :attr:`input` or :attr:`other`, depending on :attr:`condition`.
- The operation is defined as:
- .. math::
- \text{out}_i = \begin{cases}
- \text{input}_i & \text{if } \text{condition}_i \\
- \text{other}_i & \text{otherwise} \\
- \end{cases}
- .. note::
- The tensors :attr:`condition`, :attr:`input`, :attr:`other` must be :ref:`broadcastable <broadcasting-semantics>`.
- Arguments:
- condition (BoolTensor): When True (nonzero), yield input, otherwise yield other
- input (Tensor or Scalar): value (if :attr:`input` is a scalar) or values selected at indices
- where :attr:`condition` is ``True``
- other (Tensor or Scalar): value (if :attr:`other` is a scalar) or values selected at indices
- where :attr:`condition` is ``False``
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- Tensor: A tensor of shape equal to the broadcasted shape of :attr:`condition`, :attr:`input`, :attr:`other`
- Example::
- >>> x = torch.randn(3, 2)
- >>> y = torch.ones(3, 2)
- >>> x
- tensor([[-0.4620, 0.3139],
- [ 0.3898, -0.7197],
- [ 0.0478, -0.1657]])
- >>> torch.where(x > 0, 1.0, 0.0)
- tensor([[0., 1.],
- [1., 0.],
- [1., 0.]])
- >>> torch.where(x > 0, x, y)
- tensor([[ 1.0000, 0.3139],
- [ 0.3898, 1.0000],
- [ 0.0478, 1.0000]])
- >>> x = torch.randn(2, 2, dtype=torch.double)
- >>> x
- tensor([[ 1.0779, 0.0383],
- [-0.8785, -1.1089]], dtype=torch.float64)
- >>> torch.where(x > 0, x, 0.)
- tensor([[1.0779, 0.0383],
- [0.0000, 0.0000]], dtype=torch.float64)
- .. function:: where(condition) -> tuple of LongTensor
- :noindex:
- ``torch.where(condition)`` is identical to
- ``torch.nonzero(condition, as_tuple=True)``.
- .. note::
- See also :func:`torch.nonzero`.
- """
- @overload
- def where(
- condition: Tensor,
- self: Number | _complex,
- other: Number | _complex,
- ) -> Tensor:
- r"""
- where(condition, input, other, *, out=None) -> Tensor
- Return a tensor of elements selected from either :attr:`input` or :attr:`other`, depending on :attr:`condition`.
- The operation is defined as:
- .. math::
- \text{out}_i = \begin{cases}
- \text{input}_i & \text{if } \text{condition}_i \\
- \text{other}_i & \text{otherwise} \\
- \end{cases}
- .. note::
- The tensors :attr:`condition`, :attr:`input`, :attr:`other` must be :ref:`broadcastable <broadcasting-semantics>`.
- Arguments:
- condition (BoolTensor): When True (nonzero), yield input, otherwise yield other
- input (Tensor or Scalar): value (if :attr:`input` is a scalar) or values selected at indices
- where :attr:`condition` is ``True``
- other (Tensor or Scalar): value (if :attr:`other` is a scalar) or values selected at indices
- where :attr:`condition` is ``False``
- Keyword args:
- out (Tensor, optional): the output tensor.
- Returns:
- Tensor: A tensor of shape equal to the broadcasted shape of :attr:`condition`, :attr:`input`, :attr:`other`
- Example::
- >>> x = torch.randn(3, 2)
- >>> y = torch.ones(3, 2)
- >>> x
- tensor([[-0.4620, 0.3139],
- [ 0.3898, -0.7197],
- [ 0.0478, -0.1657]])
- >>> torch.where(x > 0, 1.0, 0.0)
- tensor([[0., 1.],
- [1., 0.],
- [1., 0.]])
- >>> torch.where(x > 0, x, y)
- tensor([[ 1.0000, 0.3139],
- [ 0.3898, 1.0000],
- [ 0.0478, 1.0000]])
- >>> x = torch.randn(2, 2, dtype=torch.double)
- >>> x
- tensor([[ 1.0779, 0.0383],
- [-0.8785, -1.1089]], dtype=torch.float64)
- >>> torch.where(x > 0, x, 0.)
- tensor([[1.0779, 0.0383],
- [0.0000, 0.0000]], dtype=torch.float64)
- .. function:: where(condition) -> tuple of LongTensor
- :noindex:
- ``torch.where(condition)`` is identical to
- ``torch.nonzero(condition, as_tuple=True)``.
- .. note::
- See also :func:`torch.nonzero`.
- """
- @overload
- def xlogy(
- input: Tensor,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- xlogy(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.special.xlogy`.
- """
- @overload
- def xlogy(
- self: Number | _complex,
- other: Tensor,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- xlogy(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.special.xlogy`.
- """
- @overload
- def xlogy(
- input: Tensor,
- other: Number | _complex,
- *,
- out: Tensor | None = None,
- ) -> Tensor:
- r"""
- xlogy(input, other, *, out=None) -> Tensor
- Alias for :func:`torch.special.xlogy`.
- """
- @overload
- def xlogy_(input: Tensor, other: Tensor) -> Tensor: ...
- @overload
- def xlogy_(input: Tensor, other: Number | _complex) -> Tensor: ...
- def zero_(input: Tensor) -> Tensor: ...
- @overload
- def zeros(
- size: Sequence[_int | SymInt],
- *,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- zeros(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with the scalar value `0`, with the shape defined
- by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.zeros(2, 3)
- tensor([[ 0., 0., 0.],
- [ 0., 0., 0.]])
- >>> torch.zeros(5)
- tensor([ 0., 0., 0., 0., 0.])
- """
- @overload
- def zeros(
- *size: _int | SymInt,
- out: Tensor | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- zeros(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with the scalar value `0`, with the shape defined
- by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.zeros(2, 3)
- tensor([[ 0., 0., 0.],
- [ 0., 0., 0.]])
- >>> torch.zeros(5)
- tensor([ 0., 0., 0., 0., 0.])
- """
- @overload
- def zeros(
- size: _size,
- *,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- zeros(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with the scalar value `0`, with the shape defined
- by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.zeros(2, 3)
- tensor([[ 0., 0., 0.],
- [ 0., 0., 0.]])
- >>> torch.zeros(5)
- tensor([ 0., 0., 0., 0., 0.])
- """
- @overload
- def zeros(
- *size: _int,
- names: Sequence[str | EllipsisType | None] | None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- zeros(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
- Returns a tensor filled with the scalar value `0`, with the shape defined
- by the variable argument :attr:`size`.
- Args:
- size (int...): a sequence of integers defining the shape of the output tensor.
- Can be a variable number of arguments or a collection like a list or tuple.
- Keyword args:
- out (Tensor, optional): the output tensor.
- dtype (:class:`torch.dtype`, optional): the desired data type of returned tensor.
- Default: if ``None``, uses a global default (see :func:`torch.set_default_dtype`).
- layout (:class:`torch.layout`, optional): the desired layout of returned Tensor.
- Default: ``torch.strided``.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, uses the current device for the default tensor type
- (see :func:`torch.set_default_device`). :attr:`device` will be the CPU
- for CPU tensor types and the current CUDA device for CUDA tensor types.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- Example::
- >>> torch.zeros(2, 3)
- tensor([[ 0., 0., 0.],
- [ 0., 0., 0.]])
- >>> torch.zeros(5)
- tensor([ 0., 0., 0., 0., 0.])
- """
- def zeros_like(
- input: Tensor,
- *,
- memory_format: memory_format | None = None,
- dtype: _dtype | None = None,
- layout: _layout | None = None,
- device: DeviceLikeType | None = None,
- pin_memory: _bool | None = False,
- requires_grad: _bool | None = False,
- ) -> Tensor:
- r"""
- zeros_like(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) -> Tensor
- Returns a tensor filled with the scalar value `0`, with the same size as
- :attr:`input`. ``torch.zeros_like(input)`` is equivalent to
- ``torch.zeros(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)``.
- .. warning::
- As of 0.4, this function does not support an :attr:`out` keyword. As an alternative,
- the old ``torch.zeros_like(input, out=output)`` is equivalent to
- ``torch.zeros(input.size(), out=output)``.
- Args:
- input (Tensor): the size of :attr:`input` will determine size of the output tensor.
- Keyword args:
- dtype (:class:`torch.dtype`, optional): the desired data type of returned Tensor.
- Default: if ``None``, defaults to the dtype of :attr:`input`.
- layout (:class:`torch.layout`, optional): the desired layout of returned tensor.
- Default: if ``None``, defaults to the layout of :attr:`input`.
- device (:class:`torch.device`, optional): the desired device of returned tensor.
- Default: if ``None``, defaults to the device of :attr:`input`.
- requires_grad (bool, optional): If autograd should record operations on the
- returned tensor. Default: ``False``.
- memory_format (:class:`torch.memory_format`, optional): the desired memory format of
- returned Tensor. Default: ``torch.preserve_format``.
- Example::
- >>> input = torch.empty(2, 3)
- >>> torch.zeros_like(input)
- tensor([[ 0., 0., 0.],
- [ 0., 0., 0.]])
- """
|