-
Notifications
You must be signed in to change notification settings - Fork 1
pooling backward 동작 확인 코드
Jaehwan edited this page Jul 14, 2020
·
1 revision
우선 backward로 들어가는 dout을 Pooling_dout이라고 놓고 형상을 맞춰 만듭니다.
그 다음 첫번째 줄을 실행합니다.
>>> import numpy as np >>> Pooling_dout =np.arange(432000).reshape(12, 12, 30, 100) >>> pooling_backward_dout = Pooling_dout.transpose(0, 2, 3, 1) >>> pooling_backward_dout array([[[[ 0, 3000, 6000, ..., 27000, 30000, 33000], [ 1, 3001, 6001, ..., 27001, 30001, 33001], [ 2, 3002, 6002, ..., 27002, 30002, 33002], ..., [ 97, 3097, 6097, ..., 27097, 30097, 33097], [ 98, 3098, 6098, ..., 27098, 30098, 33098], [ 99, 3099, 6099, ..., 27099, 30099, 33099]], [[ 100, 3100, 6100, ..., 27100, 30100, 33100], [ 101, 3101, 6101, ..., 27101, 30101, 33101], [ 102, 3102, 6102, ..., 27102, 30102, 33102], ..., [ 197, 3197, 6197, ..., 27197, 30197, 33197], [ 198, 3198, 6198, ..., 27198, 30198, 33198], [ 199, 3199, 6199, ..., 27199, 30199, 33199]], [[ 200, 3200, 6200, ..., 27200, 30200, 33200], [ 201, 3201, 6201, ..., 27201, 30201, 33201], [ 202, 3202, 6202, ..., 27202, 30202, 33202], ..., [ 297, 3297, 6297, ..., 27297, 30297, 33297], [ 298, 3298, 6298, ..., 27298, 30298, 33298], [ 299, 3299, 6299, ..., 27299, 30299, 33299]], ..., [[ 2700, 5700, 8700, ..., 29700, 32700, 35700], [ 2701, 5701, 8701, ..., 29701, 32701, 35701], [ 2702, 5702, 8702, ..., 29702, 32702, 35702], ..., [ 2797, 5797, 8797, ..., 29797, 32797, 35797], [ 2798, 5798, 8798, ..., 29798, 32798, 35798], [ 2799, 5799, 8799, ..., 29799, 32799, 35799]], [[ 2800, 5800, 8800, ..., 29800, 32800, 35800], [ 2801, 5801, 8801, ..., 29801, 32801, 35801], [ 2802, 5802, 8802, ..., 29802, 32802, 35802], ..., [ 2897, 5897, 8897, ..., 29897, 32897, 35897], [ 2898, 5898, 8898, ..., 29898, 32898, 35898], [ 2899, 5899, 8899, ..., 29899, 32899, 35899]], [[ 2900, 5900, 8900, ..., 29900, 32900, 35900], [ 2901, 5901, 8901, ..., 29901, 32901, 35901], [ 2902, 5902, 8902, ..., 29902, 32902, 35902], ..., [ 2997, 5997, 8997, ..., 29997, 32997, 35997], [ 2998, 5998, 8998, ..., 29998, 32998, 35998], [ 2999, 5999, 8999, ..., 29999, 32999, 35999]]], [[[ 36000, 39000, 42000, ..., 63000, 66000, 69000], [ 36001, 39001, 42001, ..., 63001, 66001, 69001], [ 36002, 39002, 42002, ..., 63002, 66002, 69002], ..., [ 36097, 39097, 42097, ..., 63097, 66097, 69097], [ 36098, 39098, 42098, ..., 63098, 66098, 69098], [ 36099, 39099, 42099, ..., 63099, 66099, 69099]], [[ 36100, 39100, 42100, ..., 63100, 66100, 69100], [ 36101, 39101, 42101, ..., 63101, 66101, 69101], [ 36102, 39102, 42102, ..., 63102, 66102, 69102], ..., [ 36197, 39197, 42197, ..., 63197, 66197, 69197], [ 36198, 39198, 42198, ..., 63198, 66198, 69198], [ 36199, 39199, 42199, ..., 63199, 66199, 69199]], [[ 36200, 39200, 42200, ..., 63200, 66200, 69200], [ 36201, 39201, 42201, ..., 63201, 66201, 69201], [ 36202, 39202, 42202, ..., 63202, 66202, 69202], ..., [ 36297, 39297, 42297, ..., 63297, 66297, 69297], [ 36298, 39298, 42298, ..., 63298, 66298, 69298], [ 36299, 39299, 42299, ..., 63299, 66299, 69299]], ..., [[ 38700, 41700, 44700, ..., 65700, 68700, 71700], [ 38701, 41701, 44701, ..., 65701, 68701, 71701], [ 38702, 41702, 44702, ..., 65702, 68702, 71702], ..., [ 38797, 41797, 44797, ..., 65797, 68797, 71797], [ 38798, 41798, 44798, ..., 65798, 68798, 71798], [ 38799, 41799, 44799, ..., 65799, 68799, 71799]], [[ 38800, 41800, 44800, ..., 65800, 68800, 71800], [ 38801, 41801, 44801, ..., 65801, 68801, 71801], [ 38802, 41802, 44802, ..., 65802, 68802, 71802], ..., [ 38897, 41897, 44897, ..., 65897, 68897, 71897], [ 38898, 41898, 44898, ..., 65898, 68898, 71898], [ 38899, 41899, 44899, ..., 65899, 68899, 71899]], [[ 38900, 41900, 44900, ..., 65900, 68900, 71900], [ 38901, 41901, 44901, ..., 65901, 68901, 71901], [ 38902, 41902, 44902, ..., 65902, 68902, 71902], ..., [ 38997, 41997, 44997, ..., 65997, 68997, 71997], [ 38998, 41998, 44998, ..., 65998, 68998, 71998], [ 38999, 41999, 44999, ..., 65999, 68999, 71999]]], [[[ 72000, 75000, 78000, ..., 99000, 102000, 105000], [ 72001, 75001, 78001, ..., 99001, 102001, 105001], [ 72002, 75002, 78002, ..., 99002, 102002, 105002], ..., [ 72097, 75097, 78097, ..., 99097, 102097, 105097], [ 72098, 75098, 78098, ..., 99098, 102098, 105098], [ 72099, 75099, 78099, ..., 99099, 102099, 105099]], [[ 72100, 75100, 78100, ..., 99100, 102100, 105100], [ 72101, 75101, 78101, ..., 99101, 102101, 105101], [ 72102, 75102, 78102, ..., 99102, 102102, 105102], ..., [ 72197, 75197, 78197, ..., 99197, 102197, 105197], [ 72198, 75198, 78198, ..., 99198, 102198, 105198], [ 72199, 75199, 78199, ..., 99199, 102199, 105199]], [[ 72200, 75200, 78200, ..., 99200, 102200, 105200], [ 72201, 75201, 78201, ..., 99201, 102201, 105201], [ 72202, 75202, 78202, ..., 99202, 102202, 105202], ..., [ 72297, 75297, 78297, ..., 99297, 102297, 105297], [ 72298, 75298, 78298, ..., 99298, 102298, 105298], [ 72299, 75299, 78299, ..., 99299, 102299, 105299]], ..., [[ 74700, 77700, 80700, ..., 101700, 104700, 107700], [ 74701, 77701, 80701, ..., 101701, 104701, 107701], [ 74702, 77702, 80702, ..., 101702, 104702, 107702], ..., [ 74797, 77797, 80797, ..., 101797, 104797, 107797], [ 74798, 77798, 80798, ..., 101798, 104798, 107798], [ 74799, 77799, 80799, ..., 101799, 104799, 107799]], [[ 74800, 77800, 80800, ..., 101800, 104800, 107800], [ 74801, 77801, 80801, ..., 101801, 104801, 107801], [ 74802, 77802, 80802, ..., 101802, 104802, 107802], ..., [ 74897, 77897, 80897, ..., 101897, 104897, 107897], [ 74898, 77898, 80898, ..., 101898, 104898, 107898], [ 74899, 77899, 80899, ..., 101899, 104899, 107899]], [[ 74900, 77900, 80900, ..., 101900, 104900, 107900], [ 74901, 77901, 80901, ..., 101901, 104901, 107901], [ 74902, 77902, 80902, ..., 101902, 104902, 107902], ..., [ 74997, 77997, 80997, ..., 101997, 104997, 107997], [ 74998, 77998, 80998, ..., 101998, 104998, 107998], [ 74999, 77999, 80999, ..., 101999, 104999, 107999]]], ..., [[[324000, 327000, 330000, ..., 351000, 354000, 357000], [324001, 327001, 330001, ..., 351001, 354001, 357001], [324002, 327002, 330002, ..., 351002, 354002, 357002], ..., [324097, 327097, 330097, ..., 351097, 354097, 357097], [324098, 327098, 330098, ..., 351098, 354098, 357098], [324099, 327099, 330099, ..., 351099, 354099, 357099]], [[324100, 327100, 330100, ..., 351100, 354100, 357100], [324101, 327101, 330101, ..., 351101, 354101, 357101], [324102, 327102, 330102, ..., 351102, 354102, 357102], ..., [324197, 327197, 330197, ..., 351197, 354197, 357197], [324198, 327198, 330198, ..., 351198, 354198, 357198], [324199, 327199, 330199, ..., 351199, 354199, 357199]], [[324200, 327200, 330200, ..., 351200, 354200, 357200], [324201, 327201, 330201, ..., 351201, 354201, 357201], [324202, 327202, 330202, ..., 351202, 354202, 357202], ..., [324297, 327297, 330297, ..., 351297, 354297, 357297], [324298, 327298, 330298, ..., 351298, 354298, 357298], [324299, 327299, 330299, ..., 351299, 354299, 357299]], ..., [[326700, 329700, 332700, ..., 353700, 356700, 359700], [326701, 329701, 332701, ..., 353701, 356701, 359701], [326702, 329702, 332702, ..., 353702, 356702, 359702], ..., [326797, 329797, 332797, ..., 353797, 356797, 359797], [326798, 329798, 332798, ..., 353798, 356798, 359798], [326799, 329799, 332799, ..., 353799, 356799, 359799]], [[326800, 329800, 332800, ..., 353800, 356800, 359800], [326801, 329801, 332801, ..., 353801, 356801, 359801], [326802, 329802, 332802, ..., 353802, 356802, 359802], ..., [326897, 329897, 332897, ..., 353897, 356897, 359897], [326898, 329898, 332898, ..., 353898, 356898, 359898], [326899, 329899, 332899, ..., 353899, 356899, 359899]], [[326900, 329900, 332900, ..., 353900, 356900, 359900], [326901, 329901, 332901, ..., 353901, 356901, 359901], [326902, 329902, 332902, ..., 353902, 356902, 359902], ..., [326997, 329997, 332997, ..., 353997, 356997, 359997], [326998, 329998, 332998, ..., 353998, 356998, 359998], [326999, 329999, 332999, ..., 353999, 356999, 359999]]], [[[360000, 363000, 366000, ..., 387000, 390000, 393000], [360001, 363001, 366001, ..., 387001, 390001, 393001], [360002, 363002, 366002, ..., 387002, 390002, 393002], ..., [360097, 363097, 366097, ..., 387097, 390097, 393097], [360098, 363098, 366098, ..., 387098, 390098, 393098], [360099, 363099, 366099, ..., 387099, 390099, 393099]], [[360100, 363100, 366100, ..., 387100, 390100, 393100], [360101, 363101, 366101, ..., 387101, 390101, 393101], [360102, 363102, 366102, ..., 387102, 390102, 393102], ..., [360197, 363197, 366197, ..., 387197, 390197, 393197], [360198, 363198, 366198, ..., 387198, 390198, 393198], [360199, 363199, 366199, ..., 387199, 390199, 393199]], [[360200, 363200, 366200, ..., 387200, 390200, 393200], [360201, 363201, 366201, ..., 387201, 390201, 393201], [360202, 363202, 366202, ..., 387202, 390202, 393202], ..., [360297, 363297, 366297, ..., 387297, 390297, 393297], [360298, 363298, 366298, ..., 387298, 390298, 393298], [360299, 363299, 366299, ..., 387299, 390299, 393299]], ..., [[362700, 365700, 368700, ..., 389700, 392700, 395700], [362701, 365701, 368701, ..., 389701, 392701, 395701], [362702, 365702, 368702, ..., 389702, 392702, 395702], ..., [362797, 365797, 368797, ..., 389797, 392797, 395797], [362798, 365798, 368798, ..., 389798, 392798, 395798], [362799, 365799, 368799, ..., 389799, 392799, 395799]], [[362800, 365800, 368800, ..., 389800, 392800, 395800], [362801, 365801, 368801, ..., 389801, 392801, 395801], [362802, 365802, 368802, ..., 389802, 392802, 395802], ..., [362897, 365897, 368897, ..., 389897, 392897, 395897], [362898, 365898, 368898, ..., 389898, 392898, 395898], [362899, 365899, 368899, ..., 389899, 392899, 395899]], [[362900, 365900, 368900, ..., 389900, 392900, 395900], [362901, 365901, 368901, ..., 389901, 392901, 395901], [362902, 365902, 368902, ..., 389902, 392902, 395902], ..., [362997, 365997, 368997, ..., 389997, 392997, 395997], [362998, 365998, 368998, ..., 389998, 392998, 395998], [362999, 365999, 368999, ..., 389999, 392999, 395999]]], [[[396000, 399000, 402000, ..., 423000, 426000, 429000], [396001, 399001, 402001, ..., 423001, 426001, 429001], [396002, 399002, 402002, ..., 423002, 426002, 429002], ..., [396097, 399097, 402097, ..., 423097, 426097, 429097], [396098, 399098, 402098, ..., 423098, 426098, 429098], [396099, 399099, 402099, ..., 423099, 426099, 429099]], [[396100, 399100, 402100, ..., 423100, 426100, 429100], [396101, 399101, 402101, ..., 423101, 426101, 429101], [396102, 399102, 402102, ..., 423102, 426102, 429102], ..., [396197, 399197, 402197, ..., 423197, 426197, 429197], [396198, 399198, 402198, ..., 423198, 426198, 429198], [396199, 399199, 402199, ..., 423199, 426199, 429199]], [[396200, 399200, 402200, ..., 423200, 426200, 429200], [396201, 399201, 402201, ..., 423201, 426201, 429201], [396202, 399202, 402202, ..., 423202, 426202, 429202], ..., [396297, 399297, 402297, ..., 423297, 426297, 429297], [396298, 399298, 402298, ..., 423298, 426298, 429298], [396299, 399299, 402299, ..., 423299, 426299, 429299]], ..., [[398700, 401700, 404700, ..., 425700, 428700, 431700], [398701, 401701, 404701, ..., 425701, 428701, 431701], [398702, 401702, 404702, ..., 425702, 428702, 431702], ..., [398797, 401797, 404797, ..., 425797, 428797, 431797], [398798, 401798, 404798, ..., 425798, 428798, 431798], [398799, 401799, 404799, ..., 425799, 428799, 431799]], [[398800, 401800, 404800, ..., 425800, 428800, 431800], [398801, 401801, 404801, ..., 425801, 428801, 431801], [398802, 401802, 404802, ..., 425802, 428802, 431802], ..., [398897, 401897, 404897, ..., 425897, 428897, 431897], [398898, 401898, 404898, ..., 425898, 428898, 431898], [398899, 401899, 404899, ..., 425899, 428899, 431899]], [[398900, 401900, 404900, ..., 425900, 428900, 431900], [398901, 401901, 404901, ..., 425901, 428901, 431901], [398902, 401902, 404902, ..., 425902, 428902, 431902], ..., [398997, 401997, 404997, ..., 425997, 428997, 431997], [398998, 401998, 404998, ..., 425998, 428998, 431998], [398999, 401999, 404999, ..., 425999, 428999, 431999]]]])
>>> pool_size = 4 >>> dmax = np.zeros((pooling_backward_dout.size, pool_size)) >>> dmax.shape (432000, 4) >>> pooling_backward_dout.flatten() array([ 0, 3000, 6000, ..., 425999, 428999, 431999]) >>>