UNPKG

33 kBSource Map (JSON)View Raw
1{"version":3,"file":"conv2d_transpose_test.js","sourceRoot":"","sources":["../../src/ops/conv2d_transpose_test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAC,QAAQ,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAG/C,iBAAiB,CAAC,iBAAiB,EAAE,QAAQ,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,cAAc,GAAG,CAAC,CAAC;QACzB,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,MAAM,UAAU,GAA6B,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAE/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,iBAAiB,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,cAAc,GAAG,CAAC,CAAC;QACzB,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,MAAM,UAAU,GACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,MAAM,CAAC;QACvB,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACjB;YACE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YACrE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACrB,EACD,UAAU,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACjB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACtE,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE5E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,iBAAiB,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,cAAc,GAAG,CAAC,CAAC;QACzB,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,MAAM,UAAU,GACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,iBAAiB,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,sCAAsC;IACtC,EAAE;IACF,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,EAAE;IACF,8BAA8B;IAC9B,EAAE;IACF,8BAA8B;IAC9B,oDAAoD;IACpD,qDAAqD;IACrD,kDAAkD;IAClD,0BAA0B;IAC1B,gCAAgC;IAChC,sEAAsE;IACtE,mEAAmE;IACnE,yBAAyB;IACzB,EAAE;IACF,+BAA+B;IAC/B,eAAe;IACf,kBAAkB;IAClB,iEAAiE;IACjE,aAAa;IACb,iDAAiD;IACjD,EAAE;IACF,gCAAgC;IAChC,sCAAsC;IACtC,MAAM;IACN,EAAE,CAAC,oEAAoE,EACpE,KAAK,IAAI,EAAE;QACT,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,MAAM,WAAW,GAAG,CAAC,CAAC;QACtB,MAAM,UAAU,GACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,CAAC,CAAC;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC;QAEpB,MAAM,WAAW,GACb,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACjB,CAAC;gBACC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC7C,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;aAC5C,CAAC,EACF,UAAU,CAAC,CAAC;QAChB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CACpB;YACE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;SAC7D,EACD,WAAW,CAAC,CAAC;QAEjB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAClB,CAAC,CAAc,EAAE,MAAmB,EAAE,EAAE,CACpC,EAAE,CAAC,eAAe,CACZ,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EACzD,GAAG,CAAC;aACL,KAAK,EAAE,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/C,MAAM,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACtE,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,gBAAgB,GAClB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,iBAAiB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEN,sCAAsC;IACtC,EAAE;IACF,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,EAAE;IACF,8BAA8B;IAC9B,EAAE;IACF,6BAA6B;IAC7B,qEAAqE;IACrE,yBAAyB;IACzB,gCAAgC;IAChC,sEAAsE;IACtE,sEAAsE;IACtE,yBAAyB;IACzB,EAAE;IACF,+BAA+B;IAC/B,eAAe;IACf,kBAAkB;IAClB,6EAA6E;IAC7E,iBAAiB;IACjB,iDAAiD;IACjD,EAAE;IACF,iCAAiC;IACjC,uCAAuC;IACvC,MAAM;IACN,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,MAAM,WAAW,GAAG,CAAC,CAAC;QACtB,MAAM,UAAU,GAAqC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,MAAM,MAAM,GAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,OAAO,CAAC;QAEpB,MAAM,WAAW,GACb,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACjB,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAChE,UAAU,CAAC,CAAC;QAChB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CACpB;YACE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;SAChE,EACD,WAAW,CAAC,CAAC;QAEjB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAClB,CAAC,CAAc,EAAE,MAAmB,EAAE,EAAE,CACpC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5E,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/C,MAAM,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,gBAAgB,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3E,iBAAiB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,sCAAsC;IACtC,EAAE;IACF,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,EAAE;IACF,8BAA8B;IAC9B,EAAE;IACF,8BAA8B;IAC9B,oDAAoD;IACpD,mDAAmD;IACnD,kDAAkD;IAClD,0BAA0B;IAC1B,gCAAgC;IAChC,qEAAqE;IACrE,qEAAqE;IACrE,yBAAyB;IACzB,EAAE;IACF,+BAA+B;IAC/B,eAAe;IACf,kBAAkB;IAClB,2CAA2C;IAC3C,+DAA+D;IAC/D,iDAAiD;IACjD,EAAE;IACF,gCAAgC;IAChC,sCAAsC;IACtC,MAAM;IACN,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,MAAM,WAAW,GAAG,CAAC,CAAC;QACtB,MAAM,UAAU,GAAqC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,MAAM,MAAM,GAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,CAAC;QAEnB,MAAM,WAAW,GACb,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACjB,CAAC;gBACC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC5C,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;aAC5C,CAAC,EACF,UAAU,CAAC,CAAC;QAChB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CACpB;YACE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;SAC/D,EACD,WAAW,CAAC,CAAC;QAEjB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAClB,CAAC,CAAc,EAAE,MAAmB,EAAE,EAAE,CACpC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5E,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/C,iBAAiB,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;gBACpB,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC3C,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC3C,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;aAC5C,CAAC,CAAC,CAAC;QACtB,iBAAiB,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,EAAE;YACxC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sCAAsC;IACtC,EAAE;IACF,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,EAAE;IACF,8BAA8B;IAC9B,EAAE;IACF,8BAA8B;IAC9B,mEAAmE;IACnE,0BAA0B;IAC1B,gCAAgC;IAChC,qEAAqE;IACrE,qEAAqE;IACrE,yBAAyB;IACzB,EAAE;IACF,+BAA+B;IAC/B,eAAe;IACf,kBAAkB;IAClB,2CAA2C;IAC3C,+DAA+D;IAC/D,mBAAmB;IACnB,iDAAiD;IACjD,EAAE;IACF,gCAAgC;IAChC,sCAAsC;IACtC,MAAM;IACN,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,MAAM,WAAW,GAAG,CAAC,CAAC;QACtB,MAAM,UAAU,GAAqC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,MAAM,MAAM,GAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,CAAC;QAEnB,MAAM,WAAW,GACb,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACjB,CAAC;gBACC,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;aACxD,CAAC,EACF,UAAU,CAAC,CAAC;QAChB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CACpB;YACE;gBACE,CAAC,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;gBACtD,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;aACvD;YACD;gBACE,CAAC,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;aACtD;SACF,EACD,WAAW,CAAC,CAAC;QAEjB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAClB,CAAC,CAAc,EAAE,MAAmB,EAAE,EAAE,CACpC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5E,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/C,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE;YACpC,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU;YACzE,UAAU,EAAE,CAAC,UAAU;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,iBAAiB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE;YACvC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU;YACzE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU;YACzE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU;SACjD,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,cAAc,GAAG,CAAC,CAAC;QACzB,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,kCAAkC;QAClC,MAAM,CAAC,GAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;QAEnE,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;aACjE,YAAY,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,cAAc,GAAG,CAAC,CAAC;QACzB,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,MAAM,UAAU,GAA6B,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACvC,kCAAkC;QAClC,MAAM,CAAC,GAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;QAEzE,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;aACjE,YAAY,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,cAAc,GAAG,CAAC,CAAC;QACzB,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,MAAM,oBAAoB,GAAG,CAAC,CAAC;QAC/B,MAAM,UAAU,GAA6B,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CACrB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAE1D,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;aACjE,YAAY,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,cAAc,GAAG,CAAC,CAAC;QACzB,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;QAEnE,MAAM,CACF,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,CACpB,EAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;aACzD,YAAY,CACT,2DAA2D,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,MAAM,UAAU,GAA6B,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAEvC,MAAM,CACF,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,CACpB,CAAC,EAAE,EAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;aACzD,YAAY,CACT,gEAAgE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA2B,QAAQ;QACrD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,UAAU;QAEvD,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAE/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,iBAAiB,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../index';\nimport {ALL_ENVS, describeWithFlags} from '../jasmine_util';\nimport {expectArraysClose} from '../test_util';\nimport {Rank} from '../types';\n\ndescribeWithFlags('conv2dTranspose', ALL_ENVS, () => {\n it('input=2x2x1,d2=1,f=2,s=1,p=0', async () => {\n const origInputDepth = 1;\n const origOutputDepth = 1;\n const inputShape: [number, number, number] = [1, 1, origOutputDepth];\n const fSize = 2;\n const origPad = 0;\n const origStride = 1;\n\n const x = tf.tensor3d([2], inputShape);\n const w = tf.tensor4d(\n [3, 1, 5, 0], [fSize, fSize, origInputDepth, origOutputDepth]);\n\n const result = tf.conv2dTranspose(x, w, [2, 2, 1], origStride, origPad);\n const expected = [6, 2, 10, 0];\n\n expect(result.shape).toEqual([2, 2, 1]);\n expectArraysClose(await result.data(), expected);\n });\n\n it('input=3x3x1,d2=1,f=3,s=2,p=0', async () => {\n const origInputDepth = 1;\n const origOutputDepth = 4;\n const inputShape: [number, number, number, number] =\n [1, 2, 2, origOutputDepth];\n const fSize = 2;\n const origPad = 'same';\n const origStride = 2;\n\n const x = tf.tensor4d(\n [\n 1.24, 1.66, 0.9, 1.39, 0.16, 0.27, 0.42, 0.61, 0.04, 0.17, 0.34, 0.28,\n 0., 0.06, 0.14, 0.24\n ],\n inputShape);\n const w = tf.tensor4d(\n [0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., 15.],\n [fSize, fSize, origInputDepth, origOutputDepth]);\n\n const result = tf.conv2dTranspose(x, w, [1, 3, 3, 1], origStride, origPad);\n const expected = [7.63, 28.39, 2.94, 49.15, 69.91, 14.62, 1.69, 5.01, 1.06];\n\n expect(result.shape).toEqual([1, 3, 3, 1]);\n expectArraysClose(await result.data(), expected);\n });\n\n it('input=2x2x1,d2=1,f=2,s=1,p=0, batch=2', async () => {\n const origInputDepth = 1;\n const origOutputDepth = 1;\n const inputShape: [number, number, number, number] =\n [2, 1, 1, origOutputDepth];\n const fSize = 2;\n const origPad = 0;\n const origStride = 1;\n\n const x = tf.tensor4d([2, 3], inputShape);\n const w = tf.tensor4d(\n [3, 1, 5, 0], [fSize, fSize, origInputDepth, origOutputDepth]);\n\n const result = tf.conv2dTranspose(x, w, [2, 2, 2, 1], origStride, origPad);\n const expected = [6, 2, 10, 0, 9, 3, 15, 0];\n\n expect(result.shape).toEqual([2, 2, 2, 1]);\n expectArraysClose(await result.data(), expected);\n });\n\n // Reference (Python) TensorFlow code:\n //\n // ```py\n // import numpy as np\n // import tensorflow as tf\n //\n // tf.enable_eager_execution()\n //\n // x = tf.constant(np.array([[\n // [[-0.14656299], [0.32942239], [-1.90302866]],\n // [[-0.06487813], [-2.02637842], [-1.83669377]],\n // [[0.82650784], [-0.89249092], [0.01207666]]\n // ]]).astype(np.float32))\n // filt = tf.constant(np.array([\n // [[[-0.48280062], [1.26770487]], [[-0.83083738], [0.54341856]]],\n // [[[-0.274904], [0.73111374]], [[2.01885189], [-2.68975237]]]\n // ]).astype(np.float32))\n //\n // with tf.GradientTape() as g:\n // g.watch(x)\n // g.watch(filt)\n // y = tf.keras.backend.conv2d_transpose(x, filt, [1, 4, 4, 2])\n // print(y)\n // (x_grad, filt_grad) = g.gradient(y, [x, filt])\n //\n // print(\"x_grad = %s\" % x_grad)\n // print(\"filt_grad = %s\" % filt_grad)\n // ```\n it('gradient with clones input=[1,3,3,1] f=[2,2,2,1] s=1 padding=valid',\n async () => {\n const inputDepth = 1;\n const outputDepth = 2;\n const inputShape: [number, number, number, number] =\n [1, 3, 3, inputDepth];\n const filterSize = 2;\n const stride = 1;\n const pad = 'valid';\n\n const filterShape: [number, number, number, number] =\n [filterSize, filterSize, outputDepth, inputDepth];\n\n const x = tf.tensor4d(\n [[\n [[-0.14656299], [0.32942239], [-1.90302866]],\n [[-0.06487813], [-2.02637842], [-1.83669377]],\n [[0.82650784], [-0.89249092], [0.01207666]]\n ]],\n inputShape);\n const filt = tf.tensor4d(\n [\n [[[-0.48280062], [1.26770487]], [[-0.83083738], [0.54341856]]],\n [[[-0.274904], [0.73111374]], [[2.01885189], [-2.68975237]]]\n ],\n filterShape);\n\n const grads = tf.grads(\n (x: tf.Tensor4D, filter: tf.Tensor4D) =>\n tf.conv2dTranspose(\n x.clone(), filter.clone(), [1, 4, 4, outputDepth], stride,\n pad)\n .clone());\n const dy = tf.ones([1, 4, 4, outputDepth]);\n const [xGrad, filtGrad] = grads([x, filt], dy);\n\n const expectedXGrad = tf.ones([1, 3, 3, 1]).mul(tf.scalar(0.2827947));\n expectArraysClose(await xGrad.data(), await expectedXGrad.data());\n const expectedFiltGrad =\n tf.ones([2, 2, 2, 1]).mul(tf.scalar(-5.70202599));\n expectArraysClose(await filtGrad.data(), await expectedFiltGrad.data());\n });\n\n // Reference (Python) TensorFlow code:\n //\n // ```py\n // import numpy as np\n // import tensorflow as tf\n //\n // tf.enable_eager_execution()\n //\n // x = tf.constant(np.array([\n // [[[-0.36541713], [-0.53973116]], [[0.01731674], [0.90227772]]]\n // ]).astype(np.float32))\n // filt = tf.constant(np.array([\n // [[[-0.01423461], [-1.00267384]], [[1.61163029], [0.66302646]]],\n // [[[-0.46900087], [-0.78649444]], [[0.87780536], [-0.84551637]]]\n // ]).astype(np.float32))\n //\n // with tf.GradientTape() as g:\n // g.watch(x)\n // g.watch(filt)\n // y = tf.keras.backend.conv2d_transpose(x, filt, [1, 4, 4, 2], strides=(2,\n // 2)) print(y)\n // (x_grad, filt_grad) = g.gradient(y, [x, filt])\n //\n // print(\"x_grad = %s\" % -x_grad)\n // print(\"filt_grad = %s\" % -filt_grad)\n // ```\n it('gradient input=[1,2,2,1] f=[2,2,2,1] s=[2,2] padding=valid', async () => {\n const inputDepth = 1;\n const outputDepth = 2;\n const inputShape: [number, number, number, number] = [1, 2, 2, inputDepth];\n const filterSize = 2;\n const stride: [number, number] = [2, 2];\n const pad = 'valid';\n\n const filterShape: [number, number, number, number] =\n [filterSize, filterSize, outputDepth, inputDepth];\n\n const x = tf.tensor4d(\n [[[[-0.36541713], [-0.53973116]], [[0.01731674], [0.90227772]]]],\n inputShape);\n const filt = tf.tensor4d(\n [\n [[[-0.01423461], [-1.00267384]], [[1.61163029], [0.66302646]]],\n [[[-0.46900087], [-0.78649444]], [[0.87780536], [-0.84551637]]]\n ],\n filterShape);\n\n const grads = tf.grads(\n (x: tf.Tensor4D, filter: tf.Tensor4D) =>\n tf.conv2dTranspose(x, filter, [1, 4, 4, outputDepth], stride, pad));\n const dy = tf.ones([1, 4, 4, outputDepth]).mul(tf.scalar(-1));\n const [xGrad, filtGrad] = grads([x, filt], dy);\n\n const expectedXGrad = tf.ones([1, 2, 2, 1]).mul(tf.scalar(-0.03454196));\n expectArraysClose(await xGrad.data(), await expectedXGrad.data());\n expect(xGrad.shape).toEqual([1, 2, 2, 1]);\n\n const expectedFiltGrad = tf.ones([2, 2, 2, 1]).mul(tf.scalar(-0.01444618));\n expectArraysClose(await filtGrad.data(), await expectedFiltGrad.data());\n expect(filtGrad.shape).toEqual([2, 2, 2, 1]);\n });\n\n // Reference (Python) TensorFlow code:\n //\n // ```py\n // import numpy as np\n // import tensorflow as tf\n //\n // tf.enable_eager_execution()\n //\n // x = tf.constant(np.array([[\n // [[1.52433065], [-0.77053435], [-0.64562341]],\n // [[0.77962889], [1.58413887], [-0.25581856]],\n // [[-0.58966221], [0.05411662], [0.70749138]]\n // ]]).astype(np.float32))\n // filt = tf.constant(np.array([\n // [[[0.11178388], [-0.96654977]], [[1.21021296], [0.84121729]]],\n // [[[0.34968338], [-0.42306114]], [[1.27395733], [-1.09014535]]]\n // ]).astype(np.float32))\n //\n // with tf.GradientTape() as g:\n // g.watch(x)\n // g.watch(filt)\n // y = tf.keras.backend.conv2d_transpose(\n // x, filt, [1, 3, 3, 2], strides=(1, 1), padding='same')\n // (x_grad, filt_grad) = g.gradient(y, [x, filt])\n //\n // print(\"x_grad = %s\" % x_grad)\n // print(\"filt_grad = %s\" % filt_grad)\n // ```\n it('gradient input=[1,3,3,1] f=[2,2,2,1] s=[1,1] padding=same', async () => {\n const inputDepth = 1;\n const outputDepth = 2;\n const inputShape: [number, number, number, number] = [1, 3, 3, inputDepth];\n const filterSize = 2;\n const stride: [number, number] = [1, 1];\n const pad = 'same';\n\n const filterShape: [number, number, number, number] =\n [filterSize, filterSize, outputDepth, inputDepth];\n\n const x = tf.tensor4d(\n [[\n [[1.52433065], [-0.77053435], [-0.64562341]],\n [[0.77962889], [1.58413887], [-0.25581856]],\n [[-0.58966221], [0.05411662], [0.70749138]]\n ]],\n inputShape);\n const filt = tf.tensor4d(\n [\n [[[0.11178388], [-0.96654977]], [[1.21021296], [0.84121729]]],\n [[[0.34968338], [-0.42306114]], [[1.27395733], [-1.09014535]]]\n ],\n filterShape);\n\n const grads = tf.grads(\n (x: tf.Tensor4D, filter: tf.Tensor4D) =>\n tf.conv2dTranspose(x, filter, [1, 3, 3, outputDepth], stride, pad));\n const dy = tf.ones([1, 3, 3, outputDepth]);\n const [xGrad, filtGrad] = grads([x, filt], dy);\n\n expectArraysClose(await xGrad.array(), [[\n [[1.30709858], [1.30709858], [-0.92814366]],\n [[1.30709858], [1.30709858], [-0.92814366]],\n [[1.19666437], [1.19666437], [-0.85476589]]\n ]]);\n expectArraysClose(await filtGrad.array(), [\n [[[2.38806788], [2.38806788]], [[2.58201847], [2.58201847]]],\n [[[2.2161221], [2.2161221]], [[3.11756406], [3.11756406]]]\n ]);\n });\n\n // Reference (Python) TensorFlow code:\n //\n // ```py\n // import numpy as np\n // import tensorflow as tf\n //\n // tf.enable_eager_execution()\n //\n // x = tf.constant(np.array([[\n // [[1.52433065], [-0.77053435]], [[0.77962889], [1.58413887]],\n // ]]).astype(np.float32))\n // filt = tf.constant(np.array([\n // [[[0.11178388], [-0.96654977]], [[1.21021296], [0.84121729]]],\n // [[[0.34968338], [-0.42306114]], [[1.27395733], [-1.09014535]]]\n // ]).astype(np.float32))\n //\n // with tf.GradientTape() as g:\n // g.watch(x)\n // g.watch(filt)\n // y = tf.keras.backend.conv2d_transpose(\n // x, filt, [1, 3, 3, 2], strides=(2, 2), padding='same')\n // print(y.shape)\n // (x_grad, filt_grad) = g.gradient(y, [x, filt])\n //\n // print(\"x_grad = %s\" % x_grad)\n // print(\"filt_grad = %s\" % filt_grad)\n // ```\n it('gradient input=[1,2,2,2] f=[2,2,2,1] s=[2,2] padding=same', async () => {\n const inputDepth = 2;\n const outputDepth = 2;\n const inputShape: [number, number, number, number] = [1, 2, 2, inputDepth];\n const filterSize = 2;\n const stride: [number, number] = [2, 2];\n const pad = 'same';\n\n const filterShape: [number, number, number, number] =\n [filterSize, filterSize, outputDepth, inputDepth];\n\n const x = tf.tensor4d(\n [[\n [[-1.81506593, 1.00900095], [-0.05199118, 0.26311377]],\n [[-1.18469792, -0.34780521], [2.04971242, -0.65154692]]\n ]],\n inputShape);\n const filt = tf.tensor4d(\n [\n [\n [[0.19529686, -0.79594708], [0.70314057, -0.06081263]],\n [[0.28724744, 0.88522715], [-0.51824096, -0.97120989]]\n ],\n [\n [[0.51872197, -1.17569193], [1.28316791, -0.81225092]],\n [[-0.44221532, 0.70058174], [-0.4849217, 0.03806348]]\n ]\n ],\n filterShape);\n\n const grads = tf.grads(\n (x: tf.Tensor4D, filter: tf.Tensor4D) =>\n tf.conv2dTranspose(x, filter, [1, 3, 3, outputDepth], stride, pad));\n const dy = tf.ones([1, 3, 3, outputDepth]);\n const [xGrad, filtGrad] = grads([x, filt], dy);\n\n expectArraysClose(await xGrad.data(), [\n 1.54219678, -2.19204008, 2.70032732, -2.84470257, 0.66744391, -0.94274245,\n 0.89843743, -0.85675972\n ]);\n expect(xGrad.shape).toEqual([1, 2, 2, 2]);\n expectArraysClose(await filtGrad.data(), [\n -1.00204261, 0.27276259, -1.00204261, 0.27276259, -2.99976385, 0.66119574,\n -2.99976385, 0.66119574, -1.86705711, 1.27211472, -1.86705711, 1.27211472,\n -1.81506593, 1.00900095, -1.81506593, 1.00900095\n ]);\n expect(filtGrad.shape).toEqual([2, 2, 2, 2]);\n });\n\n it('throws when x is not rank 3', () => {\n const origInputDepth = 1;\n const origOutputDepth = 1;\n const fSize = 2;\n const origPad = 0;\n const origStride = 1;\n\n // tslint:disable-next-line:no-any\n const x: any = tf.tensor2d([2, 2], [2, 1]);\n const w = tf.tensor4d(\n [3, 1, 5, 0], [fSize, fSize, origInputDepth, origOutputDepth]);\n\n expect(() => tf.conv2dTranspose(x, w, [2, 2, 1], origStride, origPad))\n .toThrowError();\n });\n\n it('throws when weights is not rank 4', () => {\n const origInputDepth = 1;\n const origOutputDepth = 1;\n const inputShape: [number, number, number] = [1, 1, origOutputDepth];\n const fSize = 2;\n const origPad = 0;\n const origStride = 1;\n\n const x = tf.tensor3d([2], inputShape);\n // tslint:disable-next-line:no-any\n const w: any = tf.tensor3d([3, 1, 5, 0], [fSize, fSize, origInputDepth]);\n\n expect(() => tf.conv2dTranspose(x, w, [2, 2, 1], origStride, origPad))\n .toThrowError();\n });\n\n it('throws when x depth does not match weights original output depth', () => {\n const origInputDepth = 1;\n const origOutputDepth = 2;\n const wrongOrigOutputDepth = 3;\n const inputShape: [number, number, number] = [1, 1, origOutputDepth];\n const fSize = 2;\n const origPad = 0;\n const origStride = 1;\n\n const x = tf.tensor3d([2, 2], inputShape);\n const w = tf.randomNormal<Rank.R4>(\n [fSize, fSize, origInputDepth, wrongOrigOutputDepth]);\n\n expect(() => tf.conv2dTranspose(x, w, [2, 2, 2], origStride, origPad))\n .toThrowError();\n });\n\n it('throws when passed x as a non-tensor', () => {\n const origInputDepth = 1;\n const origOutputDepth = 1;\n const fSize = 2;\n const origPad = 0;\n const origStride = 1;\n\n const w = tf.tensor4d(\n [3, 1, 5, 0], [fSize, fSize, origInputDepth, origOutputDepth]);\n\n expect(\n () => tf.conv2dTranspose(\n {} as tf.Tensor3D, w, [2, 2, 1], origStride, origPad))\n .toThrowError(\n /Argument 'x' passed to 'conv2dTranspose' must be a Tensor/);\n });\n\n it('throws when passed filter as a non-tensor', () => {\n const origOutputDepth = 1;\n const inputShape: [number, number, number] = [1, 1, origOutputDepth];\n const origPad = 0;\n const origStride = 1;\n\n const x = tf.tensor3d([2], inputShape);\n\n expect(\n () => tf.conv2dTranspose(\n x, {} as tf.Tensor4D, [2, 2, 1], origStride, origPad))\n .toThrowError(\n /Argument 'filter' passed to 'conv2dTranspose' must be a Tensor/);\n });\n\n it('accepts a tensor-like object', async () => {\n const origPad = 0;\n const origStride = 1;\n\n const x = [[[2]]]; // 1x1x1\n const w = [[[[3]], [[1]]], [[[5]], [[0]]]]; // 2x2x1x1\n\n const result = tf.conv2dTranspose(x, w, [2, 2, 1], origStride, origPad);\n const expected = [6, 2, 10, 0];\n\n expect(result.shape).toEqual([2, 2, 1]);\n expectArraysClose(await result.data(), expected);\n });\n});\n"]}
\No newline at end of file