pooling backward 동작 확인 코드 - LOPES-HUFS/DeepLearningFromForR GitHub Wiki
우선 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])
>>>