[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-triple-yolo-recall-with-adaptive-post-processing-summary":3,"summaries-facets-categories":89,"summary-related-triple-yolo-recall-with-adaptive-post-processing-summary":4386},{"id":4,"title":5,"ai":6,"body":13,"categories":49,"created_at":51,"date_modified":51,"description":43,"extension":52,"faq":51,"featured":53,"kicker_label":51,"meta":54,"navigation":71,"path":72,"published_at":73,"question":51,"scraped_at":74,"seo":75,"sitemap":76,"source_id":77,"source_name":78,"source_type":79,"source_url":80,"stem":81,"tags":82,"thumbnail_url":51,"tldr":86,"unknown_tags":87,"__hash__":88},"summaries\u002Fsummaries\u002Ftriple-yolo-recall-with-adaptive-post-processing-summary.md","Triple YOLO Recall with Adaptive Post-Processing",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","x-ai\u002Fgrok-4.1-fast",5637,1521,18506,0.00138105,{"type":14,"value":15,"toc":42},"minimark",[16,21,25,28,32,35,39],[17,18,20],"h2",{"id":19},"adaptive-thresholds-unlock-small-object-detections","Adaptive Thresholds Unlock Small-Object Detections",[22,23,24],"p",{},"Fixed confidence thresholds (default 0.25-0.50) drop distant people in crowded scenes because small boxes (e.g., 4% frame height vs. 30% for close subjects) yield low scores like 0.08, even if person-shaped. Solution: Run YOLO permissively at 0.05 to capture all candidates, then compute a frame-level baseline from the score distribution's low percentile—frames with mostly high scores raise the bar, low-score frames lower it. Scale this threshold inversely by relative box height: tiny boxes need only ~half the confidence of large ones via linear scaling. This alone triples recall from 10-12 to 30+ out of 40 students in a classroom by giving small detections a fair shot without uniform conservatism.",[22,26,27],{},"Trade-off: Lower thresholds increase false positives, so compensate with evidence-based validation instead of data-driven retraining or heavy models like SAHI.",[17,29,31],{"id":30},"keypoint-rescue-validates-borderline-boxes","Keypoint Rescue Validates Borderline Boxes",[22,33,34],{},"For candidates failing the adaptive threshold, check pose keypoints from models like yolov8n-pose: if nose, left shoulder, and right shoulder exceed high confidence (e.g., model-default levels), rescue the box. Bags or chairs lack reliable shoulders; real people show them consistently. Follow with standard NMS to dedupe overlaps. This leverages the model's full output—keypoints were predicted all along but discarded—turning 'uncertain' boxes into reliable detections. In practice, back-row skeletons 'light up' stably, enabling accurate tracking IDs.",[17,36,38],{"id":37},"scene-specific-limits-and-extensions","Scene-Specific Limits and Extensions",[22,40,41],{},"Precision benchmarks like COCO mAP favor conservative thresholds, penalizing false positives more than misses, so defaults stay high. This works best in fixed-camera setups (classrooms) assuming most candidates are real, but fails in chaotic scenes like streets. Pose dependency limits to keypoint models. Broader: Treat outputs as multi-signal conversation—add temporal consistency (lenient if tracked 3 frames), spatial priors (row-based penalties), or auxiliary classifiers. Avoids technical debt vs. retraining (3-6 months) for quick 3x gains.",{"title":43,"searchDepth":44,"depth":44,"links":45},"",2,[46,47,48],{"id":19,"depth":44,"text":20},{"id":30,"depth":44,"text":31},{"id":37,"depth":44,"text":38},[50],"Data Science & Visualization",null,"md",false,{"content_references":55,"triage":66},[56,60,63],{"type":57,"title":58,"context":59},"tool","SAHI (Slicing Aided Hyper Inference)","mentioned",{"type":61,"title":62,"context":59},"dataset","COCO",{"type":64,"title":65,"context":59},"other","yolov8n-pose",{"relevance":67,"novelty":67,"quality":68,"actionability":67,"composite":69,"reasoning":70},3,4,3.25,"Category: AI & LLMs. The article discusses a practical method for improving object detection using YOLO, which is relevant to AI engineering. It provides a specific technique for enhancing recall in crowded scenes, addressing a common pain point in AI applications, but lacks a broader context on implementation in product development.",true,"\u002Fsummaries\u002Ftriple-yolo-recall-with-adaptive-post-processing-summary","2026-05-07 04:26:37","2026-05-07 11:23:53",{"title":5,"description":43},{"loc":72},"1772ede214d531cd","Towards AI","article","https:\u002F\u002Fpub.towardsai.net\u002Fi-tripled-my-yolo-detection-without-retraining-08c6a17f51e7?source=rss----98111c9905da---4","summaries\u002Ftriple-yolo-recall-with-adaptive-post-processing-summary",[83,84,85],"machine-learning","deep-learning","coding","In crowded scenes, set YOLO confidence to 0.05, then filter dynamically by frame score distribution, box size (lower threshold for \u003C5% height boxes), and pose keypoints (nose + shoulders) to detect 3x more people without retraining.",[],"7JLJ4NUjk-9xTiJ97JtRBZfbxKwMYvrCNokmxOdbuk4",[90,93,95,98,100,103,106,109,112,114,116,118,120,122,124,127,129,131,133,135,137,139,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,443,445,447,449,451,453,455,457,459,461,463,465,467,469,471,473,475,477,479,481,483,485,487,489,491,493,495,497,499,501,503,505,507,509,511,513,515,517,519,521,523,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,990,992,994,996,998,1000,1002,1004,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024,1026,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214,1216,1218,1220,1222,1224,1226,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510,1512,1514,1516,1518,1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544,1546,1548,1550,1552,1554,1556,1558,1560,1562,1564,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598,1600,1602,1604,1606,1608,1610,1612,1614,1616,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1638,1640,1642,1644,1646,1648,1650,1652,1654,1656,1658,1660,1662,1664,1666,1668,1670,1672,1674,1676,1678,1680,1682,1684,1686,1688,1690,1692,1694,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810,1812,1814,1816,1818,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854,1856,1858,1860,1862,1864,1866,1868,1870,1872,1874,1876,1878,1880,1882,1884,1886,1888,1890,1892,1894,1896,1898,1900,1902,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1948,1950,1952,1954,1956,1958,1960,1962,1964,1966,1968,1970,1972,1974,1976,1978,1980,1982,1984,1986,1988,1990,1992,1994,1996,1998,2000,2002,2004,2006,2008,2010,2012,2014,2016,2018,2020,2022,2024,2026,2028,2030,2032,2034,2036,2038,2040,2042,2044,2046,2048,2050,2052,2054,2056,2058,2060,2062,2064,2066,2068,2070,2072,2074,2076,2078,2080,2082,2084,2086,2088,2090,2092,2094,2096,2098,2100,2102,2104,2106,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2128,2130,2132,2134,2136,2138,2140,2142,2144,2146,2148,2150,2152,2154,2156,2158,2160,2162,2164,2166,2168,2170,2172,2174,2176,2178,2180,2182,2184,2186,2188,2190,2192,2194,2196,2198,2200,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222,2224,2226,2228,2230,2232,2234,2236,2238,2240,2242,2244,2246,2248,2250,2252,2254,2256,2258,2260,2262,2264,2266,2268,2270,2272,2274,2276,2278,2280,2282,2284,2286,2288,2290,2292,2294,2296,2298,2300,2302,2304,2306,2308,2310,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2338,2340,2342,2344,2346,2348,2350,2352,2354,2356,2358,2360,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380,2382,2384,2386,2388,2390,2392,2394,2396,2398,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420,2422,2424,2426,2428,2430,2432,2434,2436,2438,2440,2442,2444,2446,2448,2450,2452,2454,2456,2458,2460,2462,2464,2466,2468,2470,2472,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492,2494,2496,2498,2500,2502,2504,2506,2508,2510,2512,2514,2516,2518,2520,2522,2524,2526,2528,2530,2532,2534,2536,2538,2540,2542,2544,2546,2548,2550,2552,2554,2556,2558,2560,2562,2564,2566,2568,2570,2572,2574,2576,2578,2580,2582,2584,2586,2588,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610,2612,2614,2616,2618,2620,2622,2624,2626,2628,2630,2632,2634,2636,2638,2640,2642,2644,2646,2648,2650,2652,2654,2656,2658,2660,2662,2664,2666,2668,2670,2672,2674,2676,2678,2680,2682,2684,2686,2688,2690,2692,2694,2696,2698,2700,2702,2704,2706,2708,2710,2712,2714,2716,2718,2720,2722,2724,2726,2728,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766,2768,2770,2772,2774,2776,2778,2780,2782,2784,2786,2788,2790,2792,2794,2796,2798,2800,2802,2804,2806,2808,2810,2812,2814,2816,2818,2820,2822,2824,2826,2828,2830,2832,2834,2836,2838,2840,2842,2844,2846,2848,2850,2852,2854,2856,2858,2860,2862,2864,2866,2868,2870,2872,2874,2876,2878,2880,2882,2884,2886,2888,2890,2892,2894,2896,2898,2900,2902,2904,2906,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944,2946,2948,2950,2952,2954,2956,2958,2960,2962,2964,2966,2968,2970,2972,2974,2976,2978,2980,2982,2984,2986,2988,2990,2992,2994,2996,2998,3000,3002,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028,3030,3032,3034,3036,3038,3040,3042,3044,3046,3048,3050,3052,3054,3056,3058,3060,3062,3064,3066,3068,3070,3072,3074,3076,3078,3080,3082,3084,3086,3088,3090,3092,3094,3096,3098,3100,3102,3104,3106,3108,3110,3112,3114,3116,3118,3120,3122,3124,3126,3128,3130,3132,3134,3136,3138,3140,3142,3144,3146,3148,3150,3152,3154,3156,3158,3160,3162,3164,3166,3168,3170,3172,3174,3176,3178,3180,3182,3184,3186,3188,3190,3192,3194,3196,3198,3200,3202,3204,3206,3208,3210,3212,3214,3216,3218,3220,3222,3224,3226,3228,3230,3232,3234,3236,3238,3240,3242,3244,3246,3248,3250,3252,3254,3256,3258,3260,3262,3264,3266,3268,3270,3272,3274,3276,3278,3280,3282,3284,3286,3288,3290,3292,3294,3296,3298,3300,3302,3304,3306,3308,3310,3312,3314,3316,3318,3320,3322,3324,3326,3328,3330,3332,3334,3336,3338,3340,3342,3344,3346,3348,3350,3352,3354,3356,3358,3360,3362,3364,3366,3368,3370,3372,3374,3376,3378,3380,3382,3384,3386,3388,3390,3392,3394,3396,3398,3400,3402,3404,3406,3408,3410,3412,3414,3416,3418,3420,3422,3424,3426,3428,3430,3432,3434,3436,3438,3440,3442,3444,3446,3448,3450,3452,3454,3456,3458,3460,3462,3464,3466,3468,3470,3472,3474,3476,3478,3480,3482,3484,3486,3488,3490,3492,3494,3496,3498,3500,3502,3504,3506,3508,3510,3512,3514,3516,3518,3520,3522,3524,3526,3528,3530,3532,3534,3536,3538,3540,3542,3544,3546,3548,3550,3552,3554,3556,3558,3560,3562,3564,3566,3568,3570,3572,3574,3576,3578,3580,3582,3584,3586,3588,3590,3592,3594,3596,3598,3600,3602,3604,3606,3608,3610,3612,3614,3616,3618,3620,3622,3624,3626,3628,3630,3632,3634,3636,3638,3640,3642,3644,3646,3648,3650,3652,3654,3656,3658,3660,3662,3664,3666,3668,3670,3672,3674,3676,3678,3680,3682,3684,3686,3688,3690,3692,3694,3696,3698,3700,3702,3704,3706,3708,3710,3712,3714,3716,3718,3720,3722,3724,3726,3728,3730,3732,3734,3736,3738,3740,3742,3744,3746,3748,3750,3752,3754,3756,3758,3760,3762,3764,3766,3768,3770,3772,3774,3776,3778,3780,3782,3784,3786,3788,3790,3792,3794,3796,3798,3800,3802,3804,3806,3808,3810,3812,3814,3816,3818,3820,3822,3824,3826,3828,3830,3832,3834,3836,3838,3840,3842,3844,3846,3848,3850,3852,3854,3856,3858,3860,3862,3864,3866,3868,3870,3872,3874,3876,3878,3880,3882,3884,3886,3888,3890,3892,3894,3896,3898,3900,3902,3904,3906,3908,3910,3912,3914,3916,3918,3920,3922,3924,3926,3928,3930,3932,3934,3936,3938,3940,3942,3944,3946,3948,3950,3952,3954,3956,3958,3960,3962,3964,3966,3968,3970,3972,3974,3976,3978,3980,3982,3984,3986,3988,3990,3992,3994,3996,3998,4000,4002,4004,4006,4008,4010,4012,4014,4016,4018,4020,4022,4024,4026,4028,4030,4032,4034,4036,4038,4040,4042,4044,4046,4048,4050,4052,4054,4056,4058,4060,4062,4064,4066,4068,4070,4072,4074,4076,4078,4080,4082,4084,4086,4088,4090,4092,4094,4096,4098,4100,4102,4104,4106,4108,4110,4112,4114,4116,4118,4120,4122,4124,4126,4128,4130,4132,4134,4136,4138,4140,4142,4144,4146,4148,4150,4152,4154,4156,4158,4160,4162,4164,4166,4168,4170,4172,4174,4176,4178,4180,4182,4184,4186,4188,4190,4192,4194,4196,4198,4200,4202,4204,4206,4208,4210,4212,4214,4216,4218,4220,4222,4224,4226,4228,4230,4232,4234,4236,4238,4240,4242,4244,4246,4248,4250,4252,4254,4256,4258,4260,4262,4264,4266,4268,4270,4272,4274,4276,4278,4280,4282,4284,4286,4288,4290,4292,4294,4296,4298,4300,4302,4304,4306,4308,4310,4312,4314,4316,4318,4320,4322,4324,4326,4328,4330,4332,4334,4336,4338,4340,4342,4344,4346,4348,4350,4352,4354,4356,4358,4360,4362,4364,4366,4368,4370,4372,4374,4376,4378,4380,4382,4384],{"categories":91},[92],"Business & SaaS",{"categories":94},[92],{"categories":96},[97],"AI News & Trends",{"categories":99},[],{"categories":101},[102],"AI Automation",{"categories":104},[105],"Marketing & Growth",{"categories":107},[108],"Design & Frontend",{"categories":110},[111],"Software Engineering",{"categories":113},[],{"categories":115},[108],{"categories":117},[108],{"categories":119},[102],{"categories":121},[108],{"categories":123},[108],{"categories":125},[126],"AI & LLMs",{"categories":128},[108],{"categories":130},[108],{"categories":132},[],{"categories":134},[108],{"categories":136},[108],{"categories":138},[126],{"categories":140},[141],"Developer Productivity",{"categories":143},[126],{"categories":145},[126],{"categories":147},[126],{"categories":149},[97],{"categories":151},[126],{"categories":153},[102],{"categories":155},[92],{"categories":157},[97],{"categories":159},[105],{"categories":161},[],{"categories":163},[],{"categories":165},[102],{"categories":167},[105],{"categories":169},[126],{"categories":171},[141],{"categories":173},[97],{"categories":175},[],{"categories":177},[],{"categories":179},[],{"categories":181},[50],{"categories":183},[],{"categories":185},[102],{"categories":187},[111],{"categories":189},[102],{"categories":191},[102],{"categories":193},[126],{"categories":195},[105],{"categories":197},[102],{"categories":199},[],{"categories":201},[],{"categories":203},[],{"categories":205},[108],{"categories":207},[108],{"categories":209},[102],{"categories":211},[105],{"categories":213},[141],{"categories":215},[108],{"categories":217},[126],{"categories":219},[111],{"categories":221},[126],{"categories":223},[],{"categories":225},[102],{"categories":227},[126],{"categories":229},[141],{"categories":231},[141],{"categories":233},[],{"categories":235},[105],{"categories":237},[92],{"categories":239},[126],{"categories":241},[92],{"categories":243},[92],{"categories":245},[102],{"categories":247},[105],{"categories":249},[102],{"categories":251},[92],{"categories":253},[102],{"categories":255},[108],{"categories":257},[126],{"categories":259},[108],{"categories":261},[126],{"categories":263},[92],{"categories":265},[126],{"categories":267},[105],{"categories":269},[],{"categories":271},[126],{"categories":273},[92],{"categories":275},[],{"categories":277},[97],{"categories":279},[111],{"categories":281},[],{"categories":283},[126],{"categories":285},[108],{"categories":287},[126],{"categories":289},[108],{"categories":291},[],{"categories":293},[102],{"categories":295},[],{"categories":297},[],{"categories":299},[],{"categories":301},[126],{"categories":303},[],{"categories":305},[126],{"categories":307},[126],{"categories":309},[108],{"categories":311},[126],{"categories":313},[141],{"categories":315},[102],{"categories":317},[105],{"categories":319},[141],{"categories":321},[141],{"categories":323},[141],{"categories":325},[105],{"categories":327},[105],{"categories":329},[126],{"categories":331},[126],{"categories":333},[92],{"categories":335},[108],{"categories":337},[111],{"categories":339},[92],{"categories":341},[92],{"categories":343},[92],{"categories":345},[108],{"categories":347},[],{"categories":349},[],{"categories":351},[126],{"categories":353},[126],{"categories":355},[111],{"categories":357},[126],{"categories":359},[126],{"categories":361},[],{"categories":363},[126],{"categories":365},[126],{"categories":367},[],{"categories":369},[126],{"categories":371},[97],{"categories":373},[97],{"categories":375},[],{"categories":377},[],{"categories":379},[105],{"categories":381},[105],{"categories":383},[111],{"categories":385},[126],{"categories":387},[],{"categories":389},[],{"categories":391},[102],{"categories":393},[126],{"categories":395},[126],{"categories":397},[],{"categories":399},[126,92],{"categories":401},[126],{"categories":403},[],{"categories":405},[126],{"categories":407},[126],{"categories":409},[],{"categories":411},[],{"categories":413},[102],{"categories":415},[126],{"categories":417},[126],{"categories":419},[102],{"categories":421},[126],{"categories":423},[],{"categories":425},[],{"categories":427},[126],{"categories":429},[],{"categories":431},[126],{"categories":433},[126],{"categories":435},[],{"categories":437},[102],{"categories":439},[],{"categories":441},[102,442],"DevOps & Cloud",{"categories":444},[126],{"categories":446},[102],{"categories":448},[126],{"categories":450},[],{"categories":452},[],{"categories":454},[],{"categories":456},[],{"categories":458},[126],{"categories":460},[102],{"categories":462},[],{"categories":464},[102],{"categories":466},[],{"categories":468},[126],{"categories":470},[],{"categories":472},[],{"categories":474},[],{"categories":476},[],{"categories":478},[102],{"categories":480},[126],{"categories":482},[105],{"categories":484},[97],{"categories":486},[92],{"categories":488},[141],{"categories":490},[],{"categories":492},[102],{"categories":494},[102],{"categories":496},[126],{"categories":498},[],{"categories":500},[],{"categories":502},[102],{"categories":504},[],{"categories":506},[102],{"categories":508},[102],{"categories":510},[97],{"categories":512},[102],{"categories":514},[126],{"categories":516},[],{"categories":518},[126],{"categories":520},[],{"categories":522},[97],{"categories":524},[102,525],"Product Strategy",{"categories":527},[111],{"categories":529},[525],{"categories":531},[126],{"categories":533},[102],{"categories":535},[],{"categories":537},[97],{"categories":539},[97],{"categories":541},[102],{"categories":543},[],{"categories":545},[102],{"categories":547},[126],{"categories":549},[126],{"categories":551},[141],{"categories":553},[126],{"categories":555},[],{"categories":557},[126,111],{"categories":559},[97],{"categories":561},[126],{"categories":563},[97],{"categories":565},[102],{"categories":567},[97],{"categories":569},[],{"categories":571},[111],{"categories":573},[92],{"categories":575},[],{"categories":577},[102],{"categories":579},[102],{"categories":581},[102],{"categories":583},[102],{"categories":585},[92],{"categories":587},[108],{"categories":589},[105],{"categories":591},[],{"categories":593},[102],{"categories":595},[],{"categories":597},[97],{"categories":599},[97],{"categories":601},[97],{"categories":603},[97],{"categories":605},[126],{"categories":607},[141],{"categories":609},[126],{"categories":611},[111],{"categories":613},[126,141],{"categories":615},[141],{"categories":617},[141],{"categories":619},[141],{"categories":621},[141],{"categories":623},[126],{"categories":625},[],{"categories":627},[],{"categories":629},[105],{"categories":631},[126],{"categories":633},[141],{"categories":635},[126],{"categories":637},[108],{"categories":639},[111],{"categories":641},[],{"categories":643},[126],{"categories":645},[141],{"categories":647},[105],{"categories":649},[97],{"categories":651},[111],{"categories":653},[126],{"categories":655},[],{"categories":657},[111],{"categories":659},[108],{"categories":661},[92],{"categories":663},[92],{"categories":665},[],{"categories":667},[108],{"categories":669},[97],{"categories":671},[141],{"categories":673},[102],{"categories":675},[102],{"categories":677},[126],{"categories":679},[126],{"categories":681},[97],{"categories":683},[97],{"categories":685},[141],{"categories":687},[97],{"categories":689},[],{"categories":691},[525],{"categories":693},[102],{"categories":695},[97],{"categories":697},[97],{"categories":699},[97],{"categories":701},[126],{"categories":703},[102],{"categories":705},[102],{"categories":707},[92],{"categories":709},[92],{"categories":711},[126],{"categories":713},[97],{"categories":715},[],{"categories":717},[126],{"categories":719},[92],{"categories":721},[102],{"categories":723},[102],{"categories":725},[102],{"categories":727},[108],{"categories":729},[102],{"categories":731},[141],{"categories":733},[97],{"categories":735},[97],{"categories":737},[97],{"categories":739},[97],{"categories":741},[97],{"categories":743},[],{"categories":745},[],{"categories":747},[141],{"categories":749},[97],{"categories":751},[97],{"categories":753},[97],{"categories":755},[],{"categories":757},[126],{"categories":759},[],{"categories":761},[],{"categories":763},[108],{"categories":765},[92],{"categories":767},[],{"categories":769},[97],{"categories":771},[102],{"categories":773},[102],{"categories":775},[102],{"categories":777},[105],{"categories":779},[102],{"categories":781},[],{"categories":783},[97],{"categories":785},[97],{"categories":787},[],{"categories":789},[105],{"categories":791},[105],{"categories":793},[126],{"categories":795},[97],{"categories":797},[92],{"categories":799},[111],{"categories":801},[126],{"categories":803},[],{"categories":805},[126],{"categories":807},[126],{"categories":809},[111],{"categories":811},[126],{"categories":813},[126],{"categories":815},[126],{"categories":817},[105],{"categories":819},[97],{"categories":821},[126],{"categories":823},[126],{"categories":825},[97],{"categories":827},[102],{"categories":829},[141],{"categories":831},[92],{"categories":833},[126],{"categories":835},[141],{"categories":837},[141],{"categories":839},[],{"categories":841},[97],{"categories":843},[97],{"categories":845},[141],{"categories":847},[102],{"categories":849},[102],{"categories":851},[102],{"categories":853},[102],{"categories":855},[108],{"categories":857},[126],{"categories":859},[126],{"categories":861},[525],{"categories":863},[126],{"categories":865},[126],{"categories":867},[102],{"categories":869},[92],{"categories":871},[105],{"categories":873},[],{"categories":875},[92],{"categories":877},[92],{"categories":879},[],{"categories":881},[108],{"categories":883},[126],{"categories":885},[],{"categories":887},[],{"categories":889},[97],{"categories":891},[97],{"categories":893},[97],{"categories":895},[97],{"categories":897},[],{"categories":899},[97],{"categories":901},[126],{"categories":903},[],{"categories":905},[97],{"categories":907},[97],{"categories":909},[92],{"categories":911},[126],{"categories":913},[],{"categories":915},[],{"categories":917},[97],{"categories":919},[97],{"categories":921},[126],{"categories":923},[97],{"categories":925},[97],{"categories":927},[97],{"categories":929},[97],{"categories":931},[97],{"categories":933},[],{"categories":935},[102],{"categories":937},[126],{"categories":939},[105],{"categories":941},[92],{"categories":943},[102],{"categories":945},[126],{"categories":947},[],{"categories":949},[105],{"categories":951},[97],{"categories":953},[97],{"categories":955},[97],{"categories":957},[97],{"categories":959},[141],{"categories":961},[111],{"categories":963},[],{"categories":965},[126],{"categories":967},[102],{"categories":969},[102],{"categories":971},[102],{"categories":973},[442],{"categories":975},[102],{"categories":977},[126],{"categories":979},[126],{"categories":981},[111],{"categories":983},[442],{"categories":985},[50],{"categories":987},[126],{"categories":989},[50],{"categories":991},[],{"categories":993},[105],{"categories":995},[105],{"categories":997},[108],{"categories":999},[442],{"categories":1001},[102],{"categories":1003},[126],{"categories":1005},[126],{"categories":1007},[102],{"categories":1009},[102],{"categories":1011},[102],{"categories":1013},[141],{"categories":1015},[141],{"categories":1017},[102],{"categories":1019},[102],{"categories":1021},[],{"categories":1023},[102],{"categories":1025},[102],{"categories":1027},[126],{"categories":1029},[50],{"categories":1031},[102],{"categories":1033},[102],{"categories":1035},[102],{"categories":1037},[102],{"categories":1039},[92],{"categories":1041},[108],{"categories":1043},[97],{"categories":1045},[111],{"categories":1047},[442],{"categories":1049},[111],{"categories":1051},[50],{"categories":1053},[],{"categories":1055},[111],{"categories":1057},[],{"categories":1059},[],{"categories":1061},[111],{"categories":1063},[126],{"categories":1065},[],{"categories":1067},[],{"categories":1069},[],{"categories":1071},[92],{"categories":1073},[],{"categories":1075},[],{"categories":1077},[50],{"categories":1079},[126],{"categories":1081},[442],{"categories":1083},[126],{"categories":1085},[],{"categories":1087},[102],{"categories":1089},[141],{"categories":1091},[141],{"categories":1093},[105],{"categories":1095},[105],{"categories":1097},[105],{"categories":1099},[442],{"categories":1101},[111],{"categories":1103},[102],{"categories":1105},[92],{"categories":1107},[92],{"categories":1109},[111],{"categories":1111},[108],{"categories":1113},[50],{"categories":1115},[108],{"categories":1117},[],{"categories":1119},[126],{"categories":1121},[102],{"categories":1123},[102],{"categories":1125},[141],{"categories":1127},[102],{"categories":1129},[102],{"categories":1131},[108],{"categories":1133},[108],{"categories":1135},[102],{"categories":1137},[442],{"categories":1139},[126],{"categories":1141},[],{"categories":1143},[105],{"categories":1145},[102],{"categories":1147},[92],{"categories":1149},[102],{"categories":1151},[102],{"categories":1153},[],{"categories":1155},[126],{"categories":1157},[102],{"categories":1159},[102],{"categories":1161},[141],{"categories":1163},[102],{"categories":1165},[126],{"categories":1167},[],{"categories":1169},[102],{"categories":1171},[],{"categories":1173},[108],{"categories":1175},[141],{"categories":1177},[126],{"categories":1179},[111],{"categories":1181},[108],{"categories":1183},[141],{"categories":1185},[50],{"categories":1187},[141],{"categories":1189},[],{"categories":1191},[126],{"categories":1193},[126],{"categories":1195},[525],{"categories":1197},[111],{"categories":1199},[126,102],{"categories":1201},[102],{"categories":1203},[126],{"categories":1205},[102],{"categories":1207},[102,111],{"categories":1209},[102],{"categories":1211},[126],{"categories":1213},[],{"categories":1215},[141],{"categories":1217},[126],{"categories":1219},[102],{"categories":1221},[126],{"categories":1223},[],{"categories":1225},[111],{"categories":1227},[102],{"categories":1229},[],{"categories":1231},[50],{"categories":1233},[111],{"categories":1235},[102],{"categories":1237},[111],{"categories":1239},[],{"categories":1241},[102],{"categories":1243},[],{"categories":1245},[102],{"categories":1247},[],{"categories":1249},[],{"categories":1251},[108],{"categories":1253},[141],{"categories":1255},[126],{"categories":1257},[],{"categories":1259},[102],{"categories":1261},[111],{"categories":1263},[126],{"categories":1265},[126],{"categories":1267},[141],{"categories":1269},[92],{"categories":1271},[],{"categories":1273},[126],{"categories":1275},[126],{"categories":1277},[126],{"categories":1279},[102],{"categories":1281},[126],{"categories":1283},[],{"categories":1285},[108],{"categories":1287},[126],{"categories":1289},[102],{"categories":1291},[],{"categories":1293},[126],{"categories":1295},[],{"categories":1297},[126],{"categories":1299},[],{"categories":1301},[],{"categories":1303},[],{"categories":1305},[126],{"categories":1307},[126],{"categories":1309},[126],{"categories":1311},[],{"categories":1313},[126],{"categories":1315},[126],{"categories":1317},[126],{"categories":1319},[],{"categories":1321},[126],{"categories":1323},[],{"categories":1325},[105],{"categories":1327},[126],{"categories":1329},[],{"categories":1331},[],{"categories":1333},[],{"categories":1335},[126],{"categories":1337},[97],{"categories":1339},[97],{"categories":1341},[],{"categories":1343},[102],{"categories":1345},[126],{"categories":1347},[],{"categories":1349},[126],{"categories":1351},[126],{"categories":1353},[97],{"categories":1355},[],{"categories":1357},[126],{"categories":1359},[97],{"categories":1361},[102],{"categories":1363},[126],{"categories":1365},[],{"categories":1367},[],{"categories":1369},[],{"categories":1371},[102],{"categories":1373},[102],{"categories":1375},[102],{"categories":1377},[102],{"categories":1379},[126],{"categories":1381},[108],{"categories":1383},[108],{"categories":1385},[102],{"categories":1387},[102],{"categories":1389},[141],{"categories":1391},[525],{"categories":1393},[141],{"categories":1395},[141],{"categories":1397},[126],{"categories":1399},[102],{"categories":1401},[126],{"categories":1403},[141],{"categories":1405},[126],{"categories":1407},[102],{"categories":1409},[102],{"categories":1411},[102],{"categories":1413},[102],{"categories":1415},[102],{"categories":1417},[126],{"categories":1419},[141],{"categories":1421},[141],{"categories":1423},[105],{"categories":1425},[102],{"categories":1427},[],{"categories":1429},[102],{"categories":1431},[],{"categories":1433},[97],{"categories":1435},[126],{"categories":1437},[],{"categories":1439},[92],{"categories":1441},[108],{"categories":1443},[108],{"categories":1445},[102],{"categories":1447},[102],{"categories":1449},[126],{"categories":1451},[126],{"categories":1453},[97],{"categories":1455},[97],{"categories":1457},[442],{"categories":1459},[102],{"categories":1461},[97],{"categories":1463},[],{"categories":1465},[126],{"categories":1467},[102],{"categories":1469},[102],{"categories":1471},[102],{"categories":1473},[102],{"categories":1475},[126],{"categories":1477},[126],{"categories":1479},[126],{"categories":1481},[126],{"categories":1483},[102],{"categories":1485},[102],{"categories":1487},[102],{"categories":1489},[102],{"categories":1491},[],{"categories":1493},[108],{"categories":1495},[126],{"categories":1497},[126],{"categories":1499},[126],{"categories":1501},[],{"categories":1503},[105],{"categories":1505},[],{"categories":1507},[141],{"categories":1509},[],{"categories":1511},[102],{"categories":1513},[141],{"categories":1515},[108],{"categories":1517},[141],{"categories":1519},[],{"categories":1521},[141],{"categories":1523},[141],{"categories":1525},[],{"categories":1527},[108],{"categories":1529},[102],{"categories":1531},[102],{"categories":1533},[141],{"categories":1535},[126],{"categories":1537},[126],{"categories":1539},[],{"categories":1541},[97],{"categories":1543},[],{"categories":1545},[105],{"categories":1547},[],{"categories":1549},[108],{"categories":1551},[97],{"categories":1553},[108],{"categories":1555},[108],{"categories":1557},[108],{"categories":1559},[108],{"categories":1561},[108],{"categories":1563},[108],{"categories":1565},[108],{"categories":1567},[108],{"categories":1569},[108],{"categories":1571},[108],{"categories":1573},[],{"categories":1575},[102],{"categories":1577},[108],{"categories":1579},[126],{"categories":1581},[126],{"categories":1583},[108],{"categories":1585},[108],{"categories":1587},[108],{"categories":1589},[108],{"categories":1591},[108],{"categories":1593},[108],{"categories":1595},[108],{"categories":1597},[126,108],{"categories":1599},[108],{"categories":1601},[108],{"categories":1603},[108],{"categories":1605},[108],{"categories":1607},[],{"categories":1609},[108],{"categories":1611},[108],{"categories":1613},[108],{"categories":1615},[108],{"categories":1617},[108],{"categories":1619},[108],{"categories":1621},[108],{"categories":1623},[108],{"categories":1625},[108],{"categories":1627},[108,126],{"categories":1629},[108],{"categories":1631},[108],{"categories":1633},[],{"categories":1635},[97],{"categories":1637},[],{"categories":1639},[126],{"categories":1641},[],{"categories":1643},[102],{"categories":1645},[442],{"categories":1647},[525],{"categories":1649},[102],{"categories":1651},[102],{"categories":1653},[],{"categories":1655},[102],{"categories":1657},[],{"categories":1659},[102],{"categories":1661},[],{"categories":1663},[],{"categories":1665},[126],{"categories":1667},[126],{"categories":1669},[126],{"categories":1671},[97],{"categories":1673},[97],{"categories":1675},[97],{"categories":1677},[97],{"categories":1679},[],{"categories":1681},[97],{"categories":1683},[],{"categories":1685},[97],{"categories":1687},[126],{"categories":1689},[97],{"categories":1691},[97],{"categories":1693},[97],{"categories":1695},[97],{"categories":1697},[126],{"categories":1699},[97],{"categories":1701},[102],{"categories":1703},[],{"categories":1705},[102],{"categories":1707},[97],{"categories":1709},[126],{"categories":1711},[97],{"categories":1713},[97],{"categories":1715},[97],{"categories":1717},[126],{"categories":1719},[126],{"categories":1721},[126],{"categories":1723},[],{"categories":1725},[],{"categories":1727},[126],{"categories":1729},[97],{"categories":1731},[],{"categories":1733},[126],{"categories":1735},[102],{"categories":1737},[126],{"categories":1739},[102],{"categories":1741},[102],{"categories":1743},[126],{"categories":1745},[],{"categories":1747},[],{"categories":1749},[102],{"categories":1751},[102],{"categories":1753},[102],{"categories":1755},[102],{"categories":1757},[102],{"categories":1759},[102],{"categories":1761},[102],{"categories":1763},[102],{"categories":1765},[],{"categories":1767},[102],{"categories":1769},[102],{"categories":1771},[102],{"categories":1773},[126],{"categories":1775},[126],{"categories":1777},[126],{"categories":1779},[97],{"categories":1781},[126],{"categories":1783},[126],{"categories":1785},[126],{"categories":1787},[102],{"categories":1789},[105],{"categories":1791},[105],{"categories":1793},[105],{"categories":1795},[102],{"categories":1797},[],{"categories":1799},[126],{"categories":1801},[],{"categories":1803},[],{"categories":1805},[126],{"categories":1807},[],{"categories":1809},[102],{"categories":1811},[108],{"categories":1813},[141],{"categories":1815},[50],{"categories":1817},[126],{"categories":1819},[102],{"categories":1821},[108],{"categories":1823},[102],{"categories":1825},[105,92],{"categories":1827},[102],{"categories":1829},[102],{"categories":1831},[442],{"categories":1833},[111],{"categories":1835},[105],{"categories":1837},[141],{"categories":1839},[126],{"categories":1841},[],{"categories":1843},[126],{"categories":1845},[],{"categories":1847},[126],{"categories":1849},[126],{"categories":1851},[102],{"categories":1853},[],{"categories":1855},[126],{"categories":1857},[126],{"categories":1859},[141],{"categories":1861},[102],{"categories":1863},[126],{"categories":1865},[126,141],{"categories":1867},[141],{"categories":1869},[],{"categories":1871},[126],{"categories":1873},[126],{"categories":1875},[126],{"categories":1877},[],{"categories":1879},[],{"categories":1881},[102],{"categories":1883},[105],{"categories":1885},[97],{"categories":1887},[102],{"categories":1889},[126],{"categories":1891},[97],{"categories":1893},[],{"categories":1895},[141],{"categories":1897},[97],{"categories":1899},[],{"categories":1901},[50],{"categories":1903},[105],{"categories":1905},[92],{"categories":1907},[97],{"categories":1909},[126],{"categories":1911},[102],{"categories":1913},[126],{"categories":1915},[102],{"categories":1917},[102],{"categories":1919},[97],{"categories":1921},[141],{"categories":1923},[92],{"categories":1925},[126],{"categories":1927},[126],{"categories":1929},[],{"categories":1931},[],{"categories":1933},[126],{"categories":1935},[],{"categories":1937},[126],{"categories":1939},[97],{"categories":1941},[],{"categories":1943},[102],{"categories":1945},[141],{"categories":1947},[97],{"categories":1949},[141],{"categories":1951},[102],{"categories":1953},[126],{"categories":1955},[],{"categories":1957},[102],{"categories":1959},[108],{"categories":1961},[102],{"categories":1963},[108],{"categories":1965},[102],{"categories":1967},[102],{"categories":1969},[108],{"categories":1971},[],{"categories":1973},[],{"categories":1975},[108],{"categories":1977},[108],{"categories":1979},[108],{"categories":1981},[111],{"categories":1983},[141],{"categories":1985},[141],{"categories":1987},[102],{"categories":1989},[97],{"categories":1991},[141],{"categories":1993},[141],{"categories":1995},[105],{"categories":1997},[108],{"categories":1999},[102],{"categories":2001},[102],{"categories":2003},[126],{"categories":2005},[141],{"categories":2007},[126],{"categories":2009},[442],{"categories":2011},[525],{"categories":2013},[],{"categories":2015},[],{"categories":2017},[102],{"categories":2019},[97],{"categories":2021},[105],{"categories":2023},[105],{"categories":2025},[50],{"categories":2027},[50],{"categories":2029},[50],{"categories":2031},[102],{"categories":2033},[],{"categories":2035},[],{"categories":2037},[50],{"categories":2039},[111],{"categories":2041},[126],{"categories":2043},[111],{"categories":2045},[50],{"categories":2047},[111],{"categories":2049},[50],{"categories":2051},[111],{"categories":2053},[141],{"categories":2055},[126],{"categories":2057},[],{"categories":2059},[50],{"categories":2061},[442],{"categories":2063},[],{"categories":2065},[126],{"categories":2067},[126],{"categories":2069},[],{"categories":2071},[],{"categories":2073},[126],{"categories":2075},[126],{"categories":2077},[97],{"categories":2079},[126],{"categories":2081},[97],{"categories":2083},[],{"categories":2085},[],{"categories":2087},[97],{"categories":2089},[97],{"categories":2091},[126],{"categories":2093},[126],{"categories":2095},[126],{"categories":2097},[126],{"categories":2099},[126],{"categories":2101},[126],{"categories":2103},[105],{"categories":2105},[],{"categories":2107},[126],{"categories":2109},[],{"categories":2111},[],{"categories":2113},[102],{"categories":2115},[141],{"categories":2117},[],{"categories":2119},[442],{"categories":2121},[126,442],{"categories":2123},[126],{"categories":2125},[108],{"categories":2127},[108],{"categories":2129},[108],{"categories":2131},[108],{"categories":2133},[],{"categories":2135},[],{"categories":2137},[],{"categories":2139},[111],{"categories":2141},[102],{"categories":2143},[92],{"categories":2145},[111],{"categories":2147},[141],{"categories":2149},[108],{"categories":2151},[],{"categories":2153},[105],{"categories":2155},[525],{"categories":2157},[50],{"categories":2159},[50],{"categories":2161},[50],{"categories":2163},[141],{"categories":2165},[525],{"categories":2167},[141],{"categories":2169},[],{"categories":2171},[92],{"categories":2173},[111],{"categories":2175},[126],{"categories":2177},[105],{"categories":2179},[111],{"categories":2181},[105],{"categories":2183},[126],{"categories":2185},[108],{"categories":2187},[111],{"categories":2189},[442],{"categories":2191},[126],{"categories":2193},[97],{"categories":2195},[111],{"categories":2197},[],{"categories":2199},[126],{"categories":2201},[111],{"categories":2203},[111],{"categories":2205},[102],{"categories":2207},[],{"categories":2209},[105],{"categories":2211},[105],{"categories":2213},[105],{"categories":2215},[102],{"categories":2217},[126],{"categories":2219},[],{"categories":2221},[92],{"categories":2223},[141],{"categories":2225},[141],{"categories":2227},[50],{"categories":2229},[92],{"categories":2231},[97],{"categories":2233},[50],{"categories":2235},[],{"categories":2237},[97],{"categories":2239},[97],{"categories":2241},[97],{"categories":2243},[126],{"categories":2245},[92],{"categories":2247},[126],{"categories":2249},[],{"categories":2251},[],{"categories":2253},[],{"categories":2255},[111],{"categories":2257},[102],{"categories":2259},[],{"categories":2261},[141],{"categories":2263},[108],{"categories":2265},[],{"categories":2267},[105],{"categories":2269},[],{"categories":2271},[108],{"categories":2273},[126],{"categories":2275},[141],{"categories":2277},[92],{"categories":2279},[],{"categories":2281},[108],{"categories":2283},[108],{"categories":2285},[126],{"categories":2287},[],{"categories":2289},[],{"categories":2291},[111],{"categories":2293},[126],{"categories":2295},[],{"categories":2297},[102],{"categories":2299},[126],{"categories":2301},[],{"categories":2303},[111],{"categories":2305},[102],{"categories":2307},[126],{"categories":2309},[50],{"categories":2311},[126],{"categories":2313},[],{"categories":2315},[50],{"categories":2317},[126],{"categories":2319},[111],{"categories":2321},[126],{"categories":2323},[50],{"categories":2325},[102],{"categories":2327},[126],{"categories":2329},[126],{"categories":2331},[126,102],{"categories":2333},[102],{"categories":2335},[102],{"categories":2337},[102],{"categories":2339},[108],{"categories":2341},[141],{"categories":2343},[126],{"categories":2345},[141],{"categories":2347},[108],{"categories":2349},[126],{"categories":2351},[],{"categories":2353},[],{"categories":2355},[126],{"categories":2357},[126],{"categories":2359},[126],{"categories":2361},[102],{"categories":2363},[],{"categories":2365},[126],{"categories":2367},[126],{"categories":2369},[102],{"categories":2371},[102],{"categories":2373},[126],{"categories":2375},[126],{"categories":2377},[],{"categories":2379},[126],{"categories":2381},[],{"categories":2383},[126],{"categories":2385},[126],{"categories":2387},[126],{"categories":2389},[126],{"categories":2391},[126],{"categories":2393},[126],{"categories":2395},[126],{"categories":2397},[],{"categories":2399},[126],{"categories":2401},[97],{"categories":2403},[97],{"categories":2405},[],{"categories":2407},[],{"categories":2409},[126],{"categories":2411},[],{"categories":2413},[126],{"categories":2415},[126,442],{"categories":2417},[],{"categories":2419},[97],{"categories":2421},[],{"categories":2423},[126],{"categories":2425},[],{"categories":2427},[],{"categories":2429},[],{"categories":2431},[126],{"categories":2433},[],{"categories":2435},[126],{"categories":2437},[],{"categories":2439},[126],{"categories":2441},[126],{"categories":2443},[],{"categories":2445},[],{"categories":2447},[126,442],{"categories":2449},[442,126],{"categories":2451},[97],{"categories":2453},[],{"categories":2455},[126],{"categories":2457},[],{"categories":2459},[126],{"categories":2461},[126],{"categories":2463},[],{"categories":2465},[97],{"categories":2467},[126,92],{"categories":2469},[97],{"categories":2471},[111],{"categories":2473},[],{"categories":2475},[102],{"categories":2477},[126],{"categories":2479},[105],{"categories":2481},[126],{"categories":2483},[141],{"categories":2485},[141],{"categories":2487},[442],{"categories":2489},[97],{"categories":2491},[126],{"categories":2493},[442],{"categories":2495},[111],{"categories":2497},[126],{"categories":2499},[141],{"categories":2501},[],{"categories":2503},[126],{"categories":2505},[],{"categories":2507},[],{"categories":2509},[126],{"categories":2511},[],{"categories":2513},[126],{"categories":2515},[111],{"categories":2517},[92],{"categories":2519},[141],{"categories":2521},[105],{"categories":2523},[102],{"categories":2525},[141],{"categories":2527},[],{"categories":2529},[105],{"categories":2531},[],{"categories":2533},[],{"categories":2535},[126],{"categories":2537},[97],{"categories":2539},[105],{"categories":2541},[],{"categories":2543},[126],{"categories":2545},[97],{"categories":2547},[97],{"categories":2549},[105],{"categories":2551},[97],{"categories":2553},[126],{"categories":2555},[97],{"categories":2557},[126],{"categories":2559},[],{"categories":2561},[126],{"categories":2563},[126],{"categories":2565},[126],{"categories":2567},[97],{"categories":2569},[],{"categories":2571},[],{"categories":2573},[108],{"categories":2575},[97],{"categories":2577},[],{"categories":2579},[126],{"categories":2581},[126],{"categories":2583},[126],{"categories":2585},[126],{"categories":2587},[126],{"categories":2589},[126],{"categories":2591},[126],{"categories":2593},[126],{"categories":2595},[126],{"categories":2597},[105],{"categories":2599},[126,108],{"categories":2601},[97],{"categories":2603},[126],{"categories":2605},[111],{"categories":2607},[50],{"categories":2609},[126],{"categories":2611},[126],{"categories":2613},[],{"categories":2615},[],{"categories":2617},[126],{"categories":2619},[126],{"categories":2621},[],{"categories":2623},[108],{"categories":2625},[108],{"categories":2627},[141],{"categories":2629},[126],{"categories":2631},[141],{"categories":2633},[126],{"categories":2635},[126],{"categories":2637},[],{"categories":2639},[126],{"categories":2641},[],{"categories":2643},[],{"categories":2645},[126],{"categories":2647},[],{"categories":2649},[],{"categories":2651},[97],{"categories":2653},[],{"categories":2655},[126],{"categories":2657},[126],{"categories":2659},[126],{"categories":2661},[],{"categories":2663},[126],{"categories":2665},[97],{"categories":2667},[525],{"categories":2669},[102],{"categories":2671},[126],{"categories":2673},[],{"categories":2675},[102],{"categories":2677},[126],{"categories":2679},[],{"categories":2681},[126],{"categories":2683},[],{"categories":2685},[102],{"categories":2687},[],{"categories":2689},[],{"categories":2691},[102],{"categories":2693},[102],{"categories":2695},[102],{"categories":2697},[126],{"categories":2699},[],{"categories":2701},[102],{"categories":2703},[102],{"categories":2705},[],{"categories":2707},[],{"categories":2709},[102],{"categories":2711},[126],{"categories":2713},[97],{"categories":2715},[525],{"categories":2717},[105],{"categories":2719},[],{"categories":2721},[108],{"categories":2723},[126],{"categories":2725},[126],{"categories":2727},[92],{"categories":2729},[97],{"categories":2731},[97],{"categories":2733},[97],{"categories":2735},[97],{"categories":2737},[],{"categories":2739},[102],{"categories":2741},[102],{"categories":2743},[102],{"categories":2745},[102],{"categories":2747},[141],{"categories":2749},[126],{"categories":2751},[92],{"categories":2753},[],{"categories":2755},[141],{"categories":2757},[102],{"categories":2759},[108],{"categories":2761},[108],{"categories":2763},[108],{"categories":2765},[108],{"categories":2767},[108],{"categories":2769},[108],{"categories":2771},[126,92],{"categories":2773},[102],{"categories":2775},[92],{"categories":2777},[97],{"categories":2779},[97],{"categories":2781},[141],{"categories":2783},[],{"categories":2785},[],{"categories":2787},[105],{"categories":2789},[],{"categories":2791},[126],{"categories":2793},[105],{"categories":2795},[126],{"categories":2797},[111],{"categories":2799},[102],{"categories":2801},[92],{"categories":2803},[102],{"categories":2805},[111],{"categories":2807},[141],{"categories":2809},[102],{"categories":2811},[],{"categories":2813},[141],{"categories":2815},[],{"categories":2817},[],{"categories":2819},[102],{"categories":2821},[102],{"categories":2823},[102],{"categories":2825},[126],{"categories":2827},[126],{"categories":2829},[126],{"categories":2831},[126],{"categories":2833},[126],{"categories":2835},[],{"categories":2837},[442],{"categories":2839},[126],{"categories":2841},[],{"categories":2843},[],{"categories":2845},[],{"categories":2847},[141],{"categories":2849},[],{"categories":2851},[126],{"categories":2853},[],{"categories":2855},[97],{"categories":2857},[126],{"categories":2859},[97],{"categories":2861},[126],{"categories":2863},[102],{"categories":2865},[],{"categories":2867},[126],{"categories":2869},[126],{"categories":2871},[],{"categories":2873},[50],{"categories":2875},[50],{"categories":2877},[111],{"categories":2879},[108],{"categories":2881},[],{"categories":2883},[126],{"categories":2885},[102],{"categories":2887},[],{"categories":2889},[],{"categories":2891},[126],{"categories":2893},[111],{"categories":2895},[102],{"categories":2897},[92],{"categories":2899},[141,111],{"categories":2901},[111],{"categories":2903},[126],{"categories":2905},[102],{"categories":2907},[],{"categories":2909},[],{"categories":2911},[],{"categories":2913},[],{"categories":2915},[],{"categories":2917},[],{"categories":2919},[126],{"categories":2921},[],{"categories":2923},[],{"categories":2925},[126],{"categories":2927},[],{"categories":2929},[],{"categories":2931},[],{"categories":2933},[126],{"categories":2935},[97],{"categories":2937},[],{"categories":2939},[],{"categories":2941},[],{"categories":2943},[126],{"categories":2945},[],{"categories":2947},[126],{"categories":2949},[126],{"categories":2951},[],{"categories":2953},[126],{"categories":2955},[],{"categories":2957},[141],{"categories":2959},[141],{"categories":2961},[],{"categories":2963},[105],{"categories":2965},[],{"categories":2967},[],{"categories":2969},[],{"categories":2971},[108],{"categories":2973},[97],{"categories":2975},[102],{"categories":2977},[126],{"categories":2979},[92],{"categories":2981},[126],{"categories":2983},[],{"categories":2985},[],{"categories":2987},[105],{"categories":2989},[102],{"categories":2991},[],{"categories":2993},[442],{"categories":2995},[],{"categories":2997},[126],{"categories":2999},[126],{"categories":3001},[105],{"categories":3003},[126],{"categories":3005},[108],{"categories":3007},[102],{"categories":3009},[126],{"categories":3011},[102],{"categories":3013},[126],{"categories":3015},[102],{"categories":3017},[141],{"categories":3019},[141],{"categories":3021},[108],{"categories":3023},[],{"categories":3025},[126],{"categories":3027},[126],{"categories":3029},[105],{"categories":3031},[525],{"categories":3033},[141],{"categories":3035},[97],{"categories":3037},[126],{"categories":3039},[97],{"categories":3041},[126],{"categories":3043},[126],{"categories":3045},[],{"categories":3047},[126],{"categories":3049},[],{"categories":3051},[126],{"categories":3053},[105],{"categories":3055},[126],{"categories":3057},[126],{"categories":3059},[126],{"categories":3061},[],{"categories":3063},[126],{"categories":3065},[126],{"categories":3067},[525],{"categories":3069},[],{"categories":3071},[97],{"categories":3073},[442],{"categories":3075},[111],{"categories":3077},[],{"categories":3079},[50],{"categories":3081},[],{"categories":3083},[],{"categories":3085},[97],{"categories":3087},[126],{"categories":3089},[],{"categories":3091},[126],{"categories":3093},[126],{"categories":3095},[102],{"categories":3097},[126],{"categories":3099},[97],{"categories":3101},[97],{"categories":3103},[108],{"categories":3105},[108],{"categories":3107},[108],{"categories":3109},[126],{"categories":3111},[50],{"categories":3113},[97],{"categories":3115},[141],{"categories":3117},[],{"categories":3119},[108],{"categories":3121},[442],{"categories":3123},[108],{"categories":3125},[108],{"categories":3127},[97],{"categories":3129},[442],{"categories":3131},[126],{"categories":3133},[126],{"categories":3135},[126],{"categories":3137},[126],{"categories":3139},[],{"categories":3141},[102],{"categories":3143},[126],{"categories":3145},[108],{"categories":3147},[],{"categories":3149},[],{"categories":3151},[97],{"categories":3153},[],{"categories":3155},[102],{"categories":3157},[102],{"categories":3159},[102],{"categories":3161},[102],{"categories":3163},[102],{"categories":3165},[102],{"categories":3167},[102],{"categories":3169},[102],{"categories":3171},[],{"categories":3173},[],{"categories":3175},[126],{"categories":3177},[],{"categories":3179},[141],{"categories":3181},[141],{"categories":3183},[50],{"categories":3185},[],{"categories":3187},[],{"categories":3189},[],{"categories":3191},[108],{"categories":3193},[126],{"categories":3195},[],{"categories":3197},[92],{"categories":3199},[92],{"categories":3201},[108],{"categories":3203},[141],{"categories":3205},[50],{"categories":3207},[108],{"categories":3209},[108],{"categories":3211},[],{"categories":3213},[102],{"categories":3215},[92],{"categories":3217},[92],{"categories":3219},[126],{"categories":3221},[102],{"categories":3223},[111],{"categories":3225},[108],{"categories":3227},[],{"categories":3229},[105],{"categories":3231},[50],{"categories":3233},[97],{"categories":3235},[97],{"categories":3237},[97],{"categories":3239},[442],{"categories":3241},[],{"categories":3243},[102],{"categories":3245},[],{"categories":3247},[102],{"categories":3249},[102],{"categories":3251},[126],{"categories":3253},[126],{"categories":3255},[111],{"categories":3257},[102],{"categories":3259},[111],{"categories":3261},[],{"categories":3263},[102],{"categories":3265},[108],{"categories":3267},[108],{"categories":3269},[108],{"categories":3271},[126],{"categories":3273},[102],{"categories":3275},[126],{"categories":3277},[92],{"categories":3279},[97],{"categories":3281},[108],{"categories":3283},[97],{"categories":3285},[126],{"categories":3287},[],{"categories":3289},[97],{"categories":3291},[102],{"categories":3293},[97],{"categories":3295},[97],{"categories":3297},[97],{"categories":3299},[],{"categories":3301},[],{"categories":3303},[97],{"categories":3305},[97],{"categories":3307},[],{"categories":3309},[97],{"categories":3311},[126],{"categories":3313},[126],{"categories":3315},[97],{"categories":3317},[97],{"categories":3319},[126],{"categories":3321},[],{"categories":3323},[126],{"categories":3325},[102],{"categories":3327},[126],{"categories":3329},[126],{"categories":3331},[],{"categories":3333},[126],{"categories":3335},[126],{"categories":3337},[126],{"categories":3339},[97],{"categories":3341},[],{"categories":3343},[],{"categories":3345},[],{"categories":3347},[],{"categories":3349},[126],{"categories":3351},[126],{"categories":3353},[105],{"categories":3355},[97],{"categories":3357},[],{"categories":3359},[],{"categories":3361},[],{"categories":3363},[],{"categories":3365},[],{"categories":3367},[126],{"categories":3369},[],{"categories":3371},[],{"categories":3373},[126],{"categories":3375},[],{"categories":3377},[102],{"categories":3379},[102],{"categories":3381},[102],{"categories":3383},[92],{"categories":3385},[],{"categories":3387},[105],{"categories":3389},[111],{"categories":3391},[111],{"categories":3393},[442],{"categories":3395},[97],{"categories":3397},[],{"categories":3399},[126],{"categories":3401},[126],{"categories":3403},[92],{"categories":3405},[],{"categories":3407},[92],{"categories":3409},[],{"categories":3411},[],{"categories":3413},[],{"categories":3415},[111],{"categories":3417},[102],{"categories":3419},[102],{"categories":3421},[102],{"categories":3423},[102],{"categories":3425},[102],{"categories":3427},[],{"categories":3429},[97],{"categories":3431},[126],{"categories":3433},[126],{"categories":3435},[126],{"categories":3437},[],{"categories":3439},[92],{"categories":3441},[],{"categories":3443},[108],{"categories":3445},[50],{"categories":3447},[108],{"categories":3449},[],{"categories":3451},[],{"categories":3453},[126],{"categories":3455},[102],{"categories":3457},[],{"categories":3459},[126],{"categories":3461},[126],{"categories":3463},[126],{"categories":3465},[102],{"categories":3467},[102],{"categories":3469},[126],{"categories":3471},[50],{"categories":3473},[102],{"categories":3475},[],{"categories":3477},[126],{"categories":3479},[],{"categories":3481},[525],{"categories":3483},[111],{"categories":3485},[50],{"categories":3487},[111],{"categories":3489},[442],{"categories":3491},[126],{"categories":3493},[111],{"categories":3495},[442],{"categories":3497},[111],{"categories":3499},[108],{"categories":3501},[108],{"categories":3503},[],{"categories":3505},[111],{"categories":3507},[],{"categories":3509},[141],{"categories":3511},[111],{"categories":3513},[],{"categories":3515},[50],{"categories":3517},[50],{"categories":3519},[525],{"categories":3521},[],{"categories":3523},[126],{"categories":3525},[111],{"categories":3527},[442],{"categories":3529},[102],{"categories":3531},[50],{"categories":3533},[126],{"categories":3535},[141],{"categories":3537},[126],{"categories":3539},[],{"categories":3541},[],{"categories":3543},[],{"categories":3545},[105],{"categories":3547},[126],{"categories":3549},[108],{"categories":3551},[111],{"categories":3553},[111],{"categories":3555},[126],{"categories":3557},[105],{"categories":3559},[141],{"categories":3561},[126],{"categories":3563},[111],{"categories":3565},[126],{"categories":3567},[111],{"categories":3569},[141],{"categories":3571},[141],{"categories":3573},[102],{"categories":3575},[141],{"categories":3577},[111],{"categories":3579},[92],{"categories":3581},[111],{"categories":3583},[111],{"categories":3585},[111],{"categories":3587},[111],{"categories":3589},[],{"categories":3591},[97],{"categories":3593},[],{"categories":3595},[50],{"categories":3597},[126],{"categories":3599},[126],{"categories":3601},[],{"categories":3603},[],{"categories":3605},[],{"categories":3607},[126],{"categories":3609},[97],{"categories":3611},[126],{"categories":3613},[126],{"categories":3615},[],{"categories":3617},[126],{"categories":3619},[108],{"categories":3621},[126],{"categories":3623},[126],{"categories":3625},[126],{"categories":3627},[],{"categories":3629},[],{"categories":3631},[],{"categories":3633},[442],{"categories":3635},[442],{"categories":3637},[92],{"categories":3639},[102],{"categories":3641},[92,105],{"categories":3643},[126],{"categories":3645},[97],{"categories":3647},[],{"categories":3649},[108],{"categories":3651},[50],{"categories":3653},[126],{"categories":3655},[111],{"categories":3657},[126],{"categories":3659},[],{"categories":3661},[50],{"categories":3663},[442],{"categories":3665},[102],{"categories":3667},[92],{"categories":3669},[442],{"categories":3671},[102],{"categories":3673},[141],{"categories":3675},[102],{"categories":3677},[141],{"categories":3679},[126],{"categories":3681},[141],{"categories":3683},[141],{"categories":3685},[111],{"categories":3687},[50],{"categories":3689},[126],{"categories":3691},[105],{"categories":3693},[],{"categories":3695},[126],{"categories":3697},[108],{"categories":3699},[50],{"categories":3701},[92],{"categories":3703},[126],{"categories":3705},[50],{"categories":3707},[141],{"categories":3709},[126],{"categories":3711},[126],{"categories":3713},[50],{"categories":3715},[126],{"categories":3717},[141],{"categories":3719},[126],{"categories":3721},[],{"categories":3723},[126],{"categories":3725},[126],{"categories":3727},[126],{"categories":3729},[126],{"categories":3731},[],{"categories":3733},[102],{"categories":3735},[442],{"categories":3737},[],{"categories":3739},[],{"categories":3741},[126],{"categories":3743},[92],{"categories":3745},[105],{"categories":3747},[92],{"categories":3749},[],{"categories":3751},[126],{"categories":3753},[97],{"categories":3755},[126],{"categories":3757},[126],{"categories":3759},[],{"categories":3761},[102],{"categories":3763},[97],{"categories":3765},[126,442],{"categories":3767},[102,442],{"categories":3769},[442],{"categories":3771},[126],{"categories":3773},[102],{"categories":3775},[102],{"categories":3777},[111],{"categories":3779},[111],{"categories":3781},[111],{"categories":3783},[126],{"categories":3785},[108],{"categories":3787},[102],{"categories":3789},[],{"categories":3791},[442],{"categories":3793},[],{"categories":3795},[442],{"categories":3797},[442],{"categories":3799},[92],{"categories":3801},[102],{"categories":3803},[],{"categories":3805},[442],{"categories":3807},[126],{"categories":3809},[97],{"categories":3811},[126],{"categories":3813},[108],{"categories":3815},[111],{"categories":3817},[111],{"categories":3819},[111],{"categories":3821},[442],{"categories":3823},[],{"categories":3825},[],{"categories":3827},[],{"categories":3829},[126],{"categories":3831},[111],{"categories":3833},[126],{"categories":3835},[111],{"categories":3837},[442],{"categories":3839},[442],{"categories":3841},[126],{"categories":3843},[102],{"categories":3845},[],{"categories":3847},[126],{"categories":3849},[126],{"categories":3851},[126],{"categories":3853},[],{"categories":3855},[],{"categories":3857},[442],{"categories":3859},[442],{"categories":3861},[126,442],{"categories":3863},[102],{"categories":3865},[102],{"categories":3867},[102],{"categories":3869},[102],{"categories":3871},[102],{"categories":3873},[],{"categories":3875},[111],{"categories":3877},[126],{"categories":3879},[111],{"categories":3881},[105],{"categories":3883},[126],{"categories":3885},[525],{"categories":3887},[525],{"categories":3889},[102],{"categories":3891},[111],{"categories":3893},[],{"categories":3895},[102],{"categories":3897},[126],{"categories":3899},[],{"categories":3901},[108],{"categories":3903},[],{"categories":3905},[126],{"categories":3907},[102],{"categories":3909},[97],{"categories":3911},[126],{"categories":3913},[],{"categories":3915},[],{"categories":3917},[108],{"categories":3919},[108],{"categories":3921},[141],{"categories":3923},[108],{"categories":3925},[102],{"categories":3927},[],{"categories":3929},[102],{"categories":3931},[97],{"categories":3933},[126],{"categories":3935},[126],{"categories":3937},[],{"categories":3939},[126],{"categories":3941},[141],{"categories":3943},[126],{"categories":3945},[],{"categories":3947},[50],{"categories":3949},[111],{"categories":3951},[111],{"categories":3953},[92],{"categories":3955},[92],{"categories":3957},[92],{"categories":3959},[102],{"categories":3961},[92],{"categories":3963},[102],{"categories":3965},[442],{"categories":3967},[525],{"categories":3969},[97],{"categories":3971},[97],{"categories":3973},[97],{"categories":3975},[442],{"categories":3977},[97,92],{"categories":3979},[50],{"categories":3981},[102],{"categories":3983},[],{"categories":3985},[126],{"categories":3987},[],{"categories":3989},[111],{"categories":3991},[50],{"categories":3993},[108],{"categories":3995},[111],{"categories":3997},[141],{"categories":3999},[],{"categories":4001},[],{"categories":4003},[525],{"categories":4005},[],{"categories":4007},[108],{"categories":4009},[108],{"categories":4011},[50],{"categories":4013},[],{"categories":4015},[126],{"categories":4017},[50],{"categories":4019},[],{"categories":4021},[126],{"categories":4023},[126],{"categories":4025},[],{"categories":4027},[141],{"categories":4029},[126],{"categories":4031},[],{"categories":4033},[126],{"categories":4035},[],{"categories":4037},[],{"categories":4039},[102],{"categories":4041},[102],{"categories":4043},[],{"categories":4045},[111],{"categories":4047},[111],{"categories":4049},[111],{"categories":4051},[126,102],{"categories":4053},[102],{"categories":4055},[102],{"categories":4057},[102],{"categories":4059},[50],{"categories":4061},[50],{"categories":4063},[],{"categories":4065},[97],{"categories":4067},[126],{"categories":4069},[50],{"categories":4071},[50],{"categories":4073},[97],{"categories":4075},[92],{"categories":4077},[102],{"categories":4079},[111],{"categories":4081},[126],{"categories":4083},[126],{"categories":4085},[102],{"categories":4087},[111],{"categories":4089},[102],{"categories":4091},[126],{"categories":4093},[105],{"categories":4095},[],{"categories":4097},[126],{"categories":4099},[126],{"categories":4101},[126],{"categories":4103},[111],{"categories":4105},[],{"categories":4107},[50],{"categories":4109},[126],{"categories":4111},[102],{"categories":4113},[102],{"categories":4115},[111],{"categories":4117},[141],{"categories":4119},[141],{"categories":4121},[97],{"categories":4123},[102],{"categories":4125},[],{"categories":4127},[102],{"categories":4129},[126],{"categories":4131},[97],{"categories":4133},[126],{"categories":4135},[126],{"categories":4137},[126],{"categories":4139},[102],{"categories":4141},[50],{"categories":4143},[126],{"categories":4145},[108],{"categories":4147},[126],{"categories":4149},[126],{"categories":4151},[126],{"categories":4153},[126],{"categories":4155},[],{"categories":4157},[126],{"categories":4159},[50],{"categories":4161},[108],{"categories":4163},[126],{"categories":4165},[108],{"categories":4167},[],{"categories":4169},[],{"categories":4171},[],{"categories":4173},[126],{"categories":4175},[],{"categories":4177},[],{"categories":4179},[],{"categories":4181},[],{"categories":4183},[102],{"categories":4185},[141],{"categories":4187},[102],{"categories":4189},[102],{"categories":4191},[111],{"categories":4193},[92],{"categories":4195},[126],{"categories":4197},[126],{"categories":4199},[126],{"categories":4201},[92],{"categories":4203},[141],{"categories":4205},[],{"categories":4207},[50],{"categories":4209},[105],{"categories":4211},[108],{"categories":4213},[141],{"categories":4215},[141],{"categories":4217},[525],{"categories":4219},[102],{"categories":4221},[126],{"categories":4223},[126],{"categories":4225},[141],{"categories":4227},[126],{"categories":4229},[],{"categories":4231},[],{"categories":4233},[442],{"categories":4235},[108],{"categories":4237},[141],{"categories":4239},[126],{"categories":4241},[97],{"categories":4243},[141],{"categories":4245},[92],{"categories":4247},[102],{"categories":4249},[102],{"categories":4251},[97],{"categories":4253},[126],{"categories":4255},[],{"categories":4257},[],{"categories":4259},[],{"categories":4261},[126],{"categories":4263},[],{"categories":4265},[97],{"categories":4267},[],{"categories":4269},[126],{"categories":4271},[],{"categories":4273},[97],{"categories":4275},[102],{"categories":4277},[126],{"categories":4279},[442],{"categories":4281},[126],{"categories":4283},[141],{"categories":4285},[126],{"categories":4287},[141],{"categories":4289},[],{"categories":4291},[],{"categories":4293},[141],{"categories":4295},[141],{"categories":4297},[141],{"categories":4299},[],{"categories":4301},[141],{"categories":4303},[102],{"categories":4305},[],{"categories":4307},[126],{"categories":4309},[105],{"categories":4311},[50],{"categories":4313},[126],{"categories":4315},[],{"categories":4317},[141],{"categories":4319},[126],{"categories":4321},[525],{"categories":4323},[141],{"categories":4325},[141],{"categories":4327},[105],{"categories":4329},[111],{"categories":4331},[111],{"categories":4333},[],{"categories":4335},[111],{"categories":4337},[126],{"categories":4339},[],{"categories":4341},[],{"categories":4343},[102],{"categories":4345},[],{"categories":4347},[102],{"categories":4349},[102],{"categories":4351},[97],{"categories":4353},[126],{"categories":4355},[97],{"categories":4357},[141],{"categories":4359},[97],{"categories":4361},[111],{"categories":4363},[111],{"categories":4365},[111],{"categories":4367},[97],{"categories":4369},[126],{"categories":4371},[102],{"categories":4373},[442],{"categories":4375},[92],{"categories":4377},[442],{"categories":4379},[442],{"categories":4381},[111],{"categories":4383},[442],{"categories":4385},[442],[4387,4638,4705,4802],{"id":4388,"title":4389,"ai":4390,"body":4395,"categories":4624,"created_at":51,"date_modified":51,"description":43,"extension":52,"faq":51,"featured":53,"kicker_label":51,"meta":4625,"navigation":71,"path":4626,"published_at":4627,"question":51,"scraped_at":51,"seo":4628,"sitemap":4629,"source_id":4630,"source_name":4631,"source_type":79,"source_url":4632,"stem":4633,"tags":4634,"thumbnail_url":51,"tldr":4635,"unknown_tags":4636,"__hash__":4637},"summaries\u002Fsummaries\u002Fbatch-gemms-for-fast-lstm-in-torch-summary.md","Batch GEMMs for Fast LSTM in Torch",{"provider":7,"model":8,"input_tokens":4391,"output_tokens":4392,"processing_time_ms":4393,"cost_usd":4394},4084,1694,14015,0.00164115,{"type":14,"value":4396,"toc":4619},[4397,4401,4404,4416,4420,4423,4468,4471,4604,4608,4615],[17,4398,4400],{"id":4399},"batch-gemms-to-cut-lstm-overhead","Batch GEMMs to Cut LSTM Overhead",[22,4402,4403],{},"Standard Torch LSTMs compute input (i2h) and hidden (h2h) projections separately, doubling GEMM calls and kernel launch overhead. This gist fuses them: compute i2h + h2h in one 4x wider GEMM (gates i,f,o,c), then slice for sigmoid\u002Ftanh. Result: single GEMM pass per timestep, 2-3x faster on GPU for char-level models (as in Karpathy's Python LSTM gist). Trade-off: fixed rnn_size, no peepholes, Lua-only (Torch7).",[22,4405,4406,4407,4411,4412,4415],{},"Usage: ",[4408,4409,4410],"code",{},"m = LSTM.fast_lstm(input_size, rnn_size)"," returns gModule({x, prev_c, prev_h}, {next_c, next_h}). Feed sequences by unrolling: ",[4408,4413,4414],{},"for t=1,T do h,c = m:forward({x[t], c, h}) end",".",[17,4417,4419],{"id":4418},"gate-computation-graph","Gate Computation Graph",[22,4421,4422],{},"Builds nn.gModule with:",[4424,4425,4426,4441,4448,4455,4462],"ul",{},[4427,4428,4429,4432,4433,4436,4437,4440],"li",{},[4408,4430,4431],{},"i2h = nn.Linear(input_size, 4*rnn_size)(x)"," + ",[4408,4434,4435],{},"h2h = nn.Linear(rnn_size, 4*rnn_size)(prev_h)"," → ",[4408,4438,4439],{},"all_input_sums = nn.CAddTable()({i2h, h2h})"," (batched gates).",[4427,4442,4443,4444,4447],{},"Sigmoid chunk: ",[4408,4445,4446],{},"nn.Narrow(2,1,3*rnn_size)(all_input_sums)"," → gates i,f,o.",[4427,4449,4450,4451,4454],{},"Input transform: ",[4408,4452,4453],{},"nn.Narrow(2,3*rnn_size+1,rnn_size)(all_input_sums)"," → tanh(c~).",[4427,4456,4457,4458,4461],{},"Cell: ",[4408,4459,4460],{},"next_c = forget_gate ⊙ prev_c + in_gate ⊙ c~"," (CMulTable + CAddTable).",[4427,4463,4464,4465,4415],{},"Hidden: ",[4408,4466,4467],{},"next_h = out_gate ⊙ tanh(next_c)",[22,4469,4470],{},"Full code:",[4472,4473,4477],"pre",{"className":4474,"code":4475,"language":4476,"meta":43,"style":43},"language-lua shiki shiki-themes github-light github-dark","function LSTM.fast_lstm(input_size, rnn_size)\n  local x = nn.Identity()()\n  local prev_c = nn.Identity()()\n  local prev_h = nn.Identity()()\n  local i2h = nn.Linear(input_size, 4 * rnn_size)(x)\n  local h2h = nn.Linear(rnn_size, 4 * rnn_size)(prev_h)\n  local all_input_sums = nn.CAddTable()({i2h, h2h})\n  local sigmoid_chunk = nn.Narrow(2, 1, 3 * rnn_size)(all_input_sums)\n  sigmoid_chunk = nn.Sigmoid()(sigmoid_chunk)\n  local in_gate = nn.Narrow(2, 1, rnn_size)(sigmoid_chunk)\n  local forget_gate = nn.Narrow(2, rnn_size + 1, rnn_size)(sigmoid_chunk)\n  local out_gate = nn.Narrow(2, 2 * rnn_size + 1, rnn_size)(sigmoid_chunk)\n  local in_transform = nn.Narrow(2, 3 * rnn_size + 1, rnn_size)(all_input_sums)\n  in_transform = nn.Tanh()(in_transform)\n  local next_c = nn.CAddTable()({\n    nn.CMulTable()({forget_gate, prev_c}),\n    nn.CMulTable()({in_gate, in_transform})\n  })\n  local next_h = nn.CMulTable()({out_gate, nn.Tanh()(next_c)})\n  return nn.gModule({x, prev_c, prev_h}, {next_c, next_h})\nend\n","lua",[4408,4478,4479,4487,4492,4497,4502,4508,4514,4520,4526,4532,4538,4544,4550,4556,4562,4568,4574,4580,4586,4592,4598],{"__ignoreMap":43},[4480,4481,4484],"span",{"class":4482,"line":4483},"line",1,[4480,4485,4486],{},"function LSTM.fast_lstm(input_size, rnn_size)\n",[4480,4488,4489],{"class":4482,"line":44},[4480,4490,4491],{},"  local x = nn.Identity()()\n",[4480,4493,4494],{"class":4482,"line":67},[4480,4495,4496],{},"  local prev_c = nn.Identity()()\n",[4480,4498,4499],{"class":4482,"line":68},[4480,4500,4501],{},"  local prev_h = nn.Identity()()\n",[4480,4503,4505],{"class":4482,"line":4504},5,[4480,4506,4507],{},"  local i2h = nn.Linear(input_size, 4 * rnn_size)(x)\n",[4480,4509,4511],{"class":4482,"line":4510},6,[4480,4512,4513],{},"  local h2h = nn.Linear(rnn_size, 4 * rnn_size)(prev_h)\n",[4480,4515,4517],{"class":4482,"line":4516},7,[4480,4518,4519],{},"  local all_input_sums = nn.CAddTable()({i2h, h2h})\n",[4480,4521,4523],{"class":4482,"line":4522},8,[4480,4524,4525],{},"  local sigmoid_chunk = nn.Narrow(2, 1, 3 * rnn_size)(all_input_sums)\n",[4480,4527,4529],{"class":4482,"line":4528},9,[4480,4530,4531],{},"  sigmoid_chunk = nn.Sigmoid()(sigmoid_chunk)\n",[4480,4533,4535],{"class":4482,"line":4534},10,[4480,4536,4537],{},"  local in_gate = nn.Narrow(2, 1, rnn_size)(sigmoid_chunk)\n",[4480,4539,4541],{"class":4482,"line":4540},11,[4480,4542,4543],{},"  local forget_gate = nn.Narrow(2, rnn_size + 1, rnn_size)(sigmoid_chunk)\n",[4480,4545,4547],{"class":4482,"line":4546},12,[4480,4548,4549],{},"  local out_gate = nn.Narrow(2, 2 * rnn_size + 1, rnn_size)(sigmoid_chunk)\n",[4480,4551,4553],{"class":4482,"line":4552},13,[4480,4554,4555],{},"  local in_transform = nn.Narrow(2, 3 * rnn_size + 1, rnn_size)(all_input_sums)\n",[4480,4557,4559],{"class":4482,"line":4558},14,[4480,4560,4561],{},"  in_transform = nn.Tanh()(in_transform)\n",[4480,4563,4565],{"class":4482,"line":4564},15,[4480,4566,4567],{},"  local next_c = nn.CAddTable()({\n",[4480,4569,4571],{"class":4482,"line":4570},16,[4480,4572,4573],{},"    nn.CMulTable()({forget_gate, prev_c}),\n",[4480,4575,4577],{"class":4482,"line":4576},17,[4480,4578,4579],{},"    nn.CMulTable()({in_gate, in_transform})\n",[4480,4581,4583],{"class":4482,"line":4582},18,[4480,4584,4585],{},"  })\n",[4480,4587,4589],{"class":4482,"line":4588},19,[4480,4590,4591],{},"  local next_h = nn.CMulTable()({out_gate, nn.Tanh()(next_c)})\n",[4480,4593,4595],{"class":4482,"line":4594},20,[4480,4596,4597],{},"  return nn.gModule({x, prev_c, prev_h}, {next_c, next_h})\n",[4480,4599,4601],{"class":4482,"line":4600},21,[4480,4602,4603],{},"end\n",[17,4605,4607],{"id":4606},"production-notes","Production Notes",[22,4609,4610,4611,4614],{},"From Karpathy (2015): Powers char-rnn models. Justin Johnson's tweaks batch everything. Scales to seq len 1000s on GTX 580-era GPUs. Modern PyTorch equiv: torch.nn.LSTM with ",[4408,4612,4613],{},"bias=False"," + fused CUDA kernels (faster still). Port to Flux.jl or JAX for today, but graph fusion principle endures for custom RNNs.",[4616,4617,4618],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":43,"searchDepth":44,"depth":44,"links":4620},[4621,4622,4623],{"id":4399,"depth":44,"text":4400},{"id":4418,"depth":44,"text":4419},{"id":4606,"depth":44,"text":4607},[111],{},"\u002Fsummaries\u002Fbatch-gemms-for-fast-lstm-in-torch-summary","2026-04-08 21:21:20",{"title":4389,"description":43},{"loc":4626},"787da8618ae52246","Andrej Karpathy Gists","https:\u002F\u002Funknown","summaries\u002Fbatch-gemms-for-fast-lstm-in-torch-summary",[83,84,85],"Fuse LSTM operations into nngraph module to batch 4 GEMMs, slashing overhead vs standard nn.LSTM (optimized by @jcjohnson).",[],"9zClbpcR_uItA945rlx_EpypY5P2kvqlIz2eTl2xOUs",{"id":4639,"title":4640,"ai":4641,"body":4646,"categories":4675,"created_at":51,"date_modified":51,"description":43,"extension":52,"faq":51,"featured":53,"kicker_label":51,"meta":4676,"navigation":71,"path":4693,"published_at":4694,"question":51,"scraped_at":4695,"seo":4696,"sitemap":4697,"source_id":4698,"source_name":78,"source_type":79,"source_url":4699,"stem":4700,"tags":4701,"thumbnail_url":51,"tldr":4702,"unknown_tags":4703,"__hash__":4704},"summaries\u002Fsummaries\u002Fgpu-bandwidth-limits-llm-speed-not-flops-summary.md","GPU Bandwidth Limits LLM Speed, Not FLOPS",{"provider":7,"model":8,"input_tokens":4642,"output_tokens":4643,"processing_time_ms":4644,"cost_usd":4645},8371,1988,22871,0.00264555,{"type":14,"value":4647,"toc":4671},[4648,4652,4655,4658,4661,4665,4668],[17,4649,4651],{"id":4650},"throughput-design-hides-latency-with-massive-parallelism","Throughput Design Hides Latency with Massive Parallelism",[22,4653,4654],{},"GPUs prioritize throughput over single-thread latency by allocating transistors to thousands of execution units and a large register file rather than branch predictors or deep caches. A single GPU thread is slower than a CPU core (~1ns instruction), but 20,000+ run concurrently. Off-chip HBM access takes 700+ cycles on H100, so GPUs hide this by keeping enough independent warps ready—switching when one stalls. This requires high occupancy: ratio of resident warps to max (64 per H100 SM). Low occupancy from high register use (e.g., 128 regs\u002Fthread limits to 512 threads\u002FSM or 16 warps, 25% occupancy) starves the scheduler, collapsing throughput despite saturated Tensor Cores.",[22,4656,4657],{},"Threads group into 32-thread warps as the scheduling unit under SIMT: hardware issues one instruction across the warp while tracking per-thread PCs and registers for independent appearance. Pre-Volta lockstep caused deadlocks on intra-warp sync; Volta+ Independent Thread Scheduling (ITS) dynamically regroups converging threads, enabling mutexes without divergence penalties (though divergence still serializes paths, doubling time on 50\u002F50 if\u002Felse). H100 SMs (132 total) divide into 4 quadrants, each with warp scheduler, 16k registers, 32 FP32\u002F16 INT32 cores, 1 Tensor Core, and L0 instr cache. Blocks (CTAs) run on one SM for shared mem sync; Hopper clusters co-schedule blocks across GPCs for DSMEM (7x faster than global mem).",[22,4659,4660],{},"Warp divergence hurts irregular data (e.g., padding branches); fix via specialization—e.g., FlashAttention-3 assigns producer warps for loads, consumers for math, zero divergence, overlapping mem\u002Fcompute. Little’s Law quantifies: in-flight warps = throughput × latency. For 400-cycle HBM loads at 1 instr\u002Fcycle, need 400+ warps to sustain SM utilization; fewer drops throughput to 25%.",[17,4662,4664],{"id":4663},"six-tier-memory-hierarchy-sets-bandwidth-bounds","Six-Tier Memory Hierarchy Sets Bandwidth Bounds",[22,4666,4667],{},"Data tiers trade capacity\u002Fbandwidth\u002Flatency: registers (256KB\u002FSM, 65k 32-bit, 1-cycle) > shared\u002FL1 (228KB shared max, 30-40 cycles) > L2 (50MB, 258-743 cycles) > HBM3 (80GB, 3.35TB\u002Fs, 700+ cycles) > NVLink (900GB\u002Fs\u002FGPU, µs) > NVMe. Keep working set close: high regs\u002Fthread (>255) spills to HBM local mem, killing loops. Shared mem tiles inputs for reuse (GEMM loads slab once, computes multiple times). L1 coalesces warp loads (base+i patterns >> strided). L2 absorbs weight re-reads; >50MB spills to HBM.",[22,4669,4670],{},"LLM decode exemplifies: 70B FP16 model needs 140GB\u002Ftoken read (42ms at 3.35TB\u002Fs pre-compute), one FLOP\u002Fbyte. Bandwidth binds because arithmetic intensity (FLOPs\u002Fbyte) is ~1; roofline (part 2) shows compute underutilized without high reuse. HBM holds weights\u002FKV\u002Factivations; misses from upper tiers thrash it. NVLink shards large models (e.g., tensor parallel syncs partials), but frequent comm bottlenecks vs. pipeline parallel (activations\u002Flayer).",{"title":43,"searchDepth":44,"depth":44,"links":4672},[4673,4674],{"id":4650,"depth":44,"text":4651},{"id":4663,"depth":44,"text":4664},[126],{"content_references":4677,"triage":4690},[4678,4683,4687],{"type":4679,"title":4680,"author":4681,"context":4682},"paper","FlashAttention-3","Shah et al.","cited",{"type":4679,"title":4684,"author":4685,"publisher":4686,"context":4682},"Microbenchmarks of the Hopper architecture","Luo et al.","2025",{"type":64,"title":4688,"author":4689,"context":59},"NVIDIA’s Hopper architecture documentation","NVIDIA",{"relevance":67,"novelty":67,"quality":68,"actionability":44,"composite":4691,"reasoning":4692},3.05,"Category: AI & LLMs. The article discusses GPU architecture and its implications for LLM performance, which is relevant to AI product builders. However, while it provides insights into GPU memory bandwidth, it lacks concrete actionable steps for implementing this knowledge in product development.","\u002Fsummaries\u002Fgpu-bandwidth-limits-llm-speed-not-flops-summary","2026-05-06 02:50:10","2026-05-06 16:13:45",{"title":4640,"description":43},{"loc":4693},"0d1957d00ad6e7e2","https:\u002F\u002Fpub.towardsai.net\u002Fwarps-memory-hierarchy-and-why-bandwidth-beats-flops-how-gpus-actually-work-part-1-06170834ad33?source=rss----98111c9905da---4","summaries\u002Fgpu-bandwidth-limits-llm-speed-not-flops-summary",[83,84],"Generating one token from a 70B model on H100 needs 140GB weight reads—one op per byte—making memory bandwidth the inference bottleneck, not compute throughput.",[],"FbTEVU_a_VMoTcV7GGtjWlaCb0mfyka68oQkaR2aIqg",{"id":4706,"title":4707,"ai":4708,"body":4713,"categories":4790,"created_at":51,"date_modified":51,"description":43,"extension":52,"faq":51,"featured":53,"kicker_label":51,"meta":4791,"navigation":71,"path":4792,"published_at":4793,"question":51,"scraped_at":51,"seo":4794,"sitemap":4795,"source_id":4796,"source_name":78,"source_type":79,"source_url":4632,"stem":4797,"tags":4798,"thumbnail_url":51,"tldr":4799,"unknown_tags":4800,"__hash__":4801},"summaries\u002Fsummaries\u002Fword2vec-turning-word-neighborhoods-into-embedding-summary.md","Word2Vec: Turning Word Neighborhoods into Embeddings",{"provider":7,"model":8,"input_tokens":4709,"output_tokens":4710,"processing_time_ms":4711,"cost_usd":4712},8588,1873,21956,0.0026316,{"type":14,"value":4714,"toc":4784},[4715,4719,4734,4737,4741,4748,4751,4761,4765,4768,4771,4774,4778,4781],[17,4716,4718],{"id":4717},"shift-from-isolated-ids-to-relational-embeddings","Shift from Isolated IDs to Relational Embeddings",[22,4720,4721,4722,4725,4726,4729,4730,4733],{},"Before Word2Vec, words were treated as unique IDs or one-hot vectors (e.g., cat → ",[4480,4723,4724],{},"1,0,0,0,0","), preserving identity but ignoring relationships like 'cat' closer to 'dog' than 'engine'. Word2Vec flips this by learning dense vectors where meaning emerges from context: a word's vector is shaped by its repeated local neighborhoods in text. For a tiny corpus ('the cat drinks milk', 'the dog drinks water'), 'cat' appears near 'the', 'drinks', 'milk', 'chases', 'mouse', while 'dog' shares 'the', 'drinks', 'chases' but differs on 'water', 'ball'. Similar contexts deliver matching gradient signals during training, pulling vectors like cat ",[4480,4727,4728],{},"0.82, 0.21, -0.05"," and dog ",[4480,4731,4732],{},"0.79, 0.25, -0.03"," into nearby regions, enabling geometric analogies like king - man + woman ≈ queen.",[22,4735,4736],{},"This relational view—words as positions in a space preserving structure—outperforms sparse representations because similar training pressures from neighborhoods create clustered embeddings without explicit semantic rules.",[17,4738,4740],{"id":4739},"cbow-vs-skip-gram-dual-paths-to-context-prediction","CBOW vs Skip-gram: Dual Paths to Context Prediction",[22,4742,4743,4744,4747],{},"Word2Vec optimizes dense vectors (e.g., size 3 for vocab of 9) via a simple network: one-hot input (size 9) → hidden layer (size 3) → output scores (size 9). The hidden weights form the embedding table, where each word's row (e.g., initial cat ",[4480,4745,4746],{},"0.11, -0.08, 0.05",") gets refined.",[22,4749,4750],{},"CBOW predicts center from context (input: 'the', 'drinks' → target: 'cat'), treating surroundings as clues that constrain word identity, like recovering a word from its situational fit. Skip-gram reverses it (input: 'cat' → targets: 'the', 'drinks'), capturing a word's relational footprint—what neighbors it generates. With window size 1, Skip-gram generates pairs like cat → the, cat → drinks; CBOW inverts them.",[22,4752,4753,4754,4757,4758,4415],{},"Both unify around mutual definition: context shapes word (CBOW), word shapes context (Skip-gram). Skip-gram excels for rare words by amplifying their signal; CBOW smooths frequent ones. Together, they force embeddings to encode predictive utility, yielding a map where milk ",[4480,4755,4756],{},"0.10, 0.88, -0.12"," clusters near water ",[4480,4759,4760],{},"0.07, 0.84, -0.10",[17,4762,4764],{"id":4763},"training-mechanics-gradients-sculpt-the-space","Training Mechanics: Gradients Sculpt the Space",[22,4766,4767],{},"Training slides a window over text, generating examples (e.g., center 'cat' with contexts 'the', 'drinks'). For Skip-gram on cat → the: retrieve cat's vector, compute output scores (e.g., the: 0.12 → softmax prob 0.20), measure error against target, backpropagate to nudge weights—pulling cat closer to 'the', pushing from negatives like 'engine'.",[22,4769,4770],{},"Negative sampling scales this: for cat → drinks, attract to true pair, repel 3-5 random fakes (e.g., 'banana', 'cloud'), forming geometry via affinity (pet\u002Faction contexts) and boundaries (unrelated ones). Repeated across corpus, similar contexts yield parallel updates: cat and dog, both near 'the\u002Fdrinks\u002Fchases', converge without semantic labels.",[22,4772,4773],{},"Outcome: random initials become relational map. Training builds it via 'enormous tiny corrections'; full process turns prediction errors into stable positions.",[17,4775,4777],{"id":4776},"inference-and-limitations-in-modern-context","Inference and Limitations in Modern Context",[22,4779,4780],{},"Post-training, discard the predictor; use the embedding matrix for lookups (cat's vector), similarity (cosine distance clusters cat\u002Fdog over cat\u002Fengine), averaging for sentences ('the cat drinks milk' → mean vector), or downstream tasks like classification.",[22,4782,4783],{},"Word2Vec revolutionized NLP by proving prediction yields emergent semantics, replacing hand-engineered features with learned geometry. Yet static vectors fail polysemy ('bank' as river\u002Ffinance gets one embedding), spurring contextual models like BERT. Legacy: modern LLMs inherit context-driven, relational meaning—embeddings as vectors first, structure second.",{"title":43,"searchDepth":44,"depth":44,"links":4785},[4786,4787,4788,4789],{"id":4717,"depth":44,"text":4718},{"id":4739,"depth":44,"text":4740},{"id":4763,"depth":44,"text":4764},{"id":4776,"depth":44,"text":4777},[],{},"\u002Fsummaries\u002Fword2vec-turning-word-neighborhoods-into-embedding-summary","2026-04-08 21:21:21",{"title":4707,"description":43},{"loc":4792},"2165d09f4254bef0","summaries\u002Fword2vec-turning-word-neighborhoods-into-embedding-summary",[83,84],"Word2Vec learns dense word vectors by predicting local contexts with CBOW or Skip-gram, clustering similar words like 'cat' and 'dog' via repeated gradient updates from shared neighborhoods.",[],"btwIiiRnhnbfe43oUSpKbWH7zxiwKw4n4dJZ1ACM7ZI",{"id":4803,"title":4804,"ai":4805,"body":4810,"categories":4914,"created_at":51,"date_modified":51,"description":43,"extension":52,"faq":51,"featured":53,"kicker_label":51,"meta":4915,"navigation":71,"path":4916,"published_at":4627,"question":51,"scraped_at":51,"seo":4917,"sitemap":4918,"source_id":4919,"source_name":4631,"source_type":79,"source_url":4632,"stem":4920,"tags":4921,"thumbnail_url":51,"tldr":4922,"unknown_tags":4923,"__hash__":4924},"summaries\u002Fsummaries\u002Fbatched-l2-norm-layer-for-torch-neural-nets-summary.md","Batched L2 Norm Layer for Torch Neural Nets",{"provider":7,"model":8,"input_tokens":4806,"output_tokens":4807,"processing_time_ms":4808,"cost_usd":4809},4617,1235,10447,0.0015184,{"type":14,"value":4811,"toc":4909},[4812,4816,4823,4838,4842,4849,4887,4891],[17,4813,4815],{"id":4814},"core-layer-design","Core Layer Design",[22,4817,4818,4819,4822],{},"This nn.L2Normalize module processes 2D tensors (batch size n x vector dim d), normalizing each row vector to unit L2 norm (||x||_2 = 1). Use it in Torch neural nets for tasks like embedding normalization, where direction matters more than magnitude. Instantiate via ",[4408,4820,4821],{},"local layer = nn.L2Normalize()",", then integrate into models like Sequential for end-to-end differentiability.",[22,4824,4825,4826,4829,4830,4833,4834,4837],{},"Forward pass (",[4408,4827,4828],{},"updateOutput","): Computes per-row L2 norms squared via elementwise square and sum over dim 2 (",[4408,4831,4832],{},"input:cmul(input):sum(2)","), takes sqrt, then elementwise divides input by expanded norms (",[4408,4835,4836],{},"input:cdiv(buffer:expandAs(input))","). Avoids loops for batch efficiency; buffers reuse across calls.",[17,4839,4841],{"id":4840},"gradient-computation","Gradient Computation",[22,4843,4844,4845,4848],{},"Backward pass (",[4408,4846,4847],{},"updateGradInput",") derives local Jacobian of L2 transform for chain rule. Key steps:",[4424,4850,4851,4858,4864,4870,4876],{},[4427,4852,4853,4854,4857],{},"Forms identity tensor repeated over batch (",[4408,4855,4856],{},"torch.eye(d):repeatTensor(n,1):view(n,d,d)",").",[4427,4859,4860,4861,4857],{},"Scales diagonal by norm squared (",[4408,4862,4863],{},"cmul(eye, normSquared:view(n,1,1):expand(n,d,d))",[4427,4865,4866,4867,4857],{},"Subtracts outer products (",[4408,4868,4869],{},"-torch.bmm(input:view(n,d,1), input:view(n,1,d))",[4427,4871,4872,4873,4857],{},"Divides by cubed norms (",[4408,4874,4875],{},"cdiv(pow(buffer,3):expand(n,d,d))",[4427,4877,4878,4879,4882,4883,4886],{},"Applies via batched matmul: ",[4408,4880,4881],{},"bmm(diag, gradOutput:view(n,d,1)):resize(n,d)"," (fixed with ",[4408,4884,4885],{},":squeeze()"," post-line 31).\nThis ensures correct gradients during backprop, critical for training stability in nets with normalization layers.",[17,4888,4890],{"id":4889},"implementation-notes-and-fixes","Implementation Notes and Fixes",[22,4892,4893,4894,4897,4898,4901,4902,4904,4905,4908],{},"Code uses lazy buffer init (",[4408,4895,4896],{},"self.buffer = self.buffer or input.new()",") for memory efficiency. Assumes mini-batch inputs only (errors on non-2D). Community feedback: Could swap manual norm for ",[4408,4899,4900],{},"torch.norm()"," in forward for simplicity; Karpathy confirmed feasibility. Atcold noted dimension mismatch in gradInput without ",[4408,4903,4885],{}," after bmm resize—fixed by author. Soumith (Torch maintainer) provided additional pointers (unspecified). Thin gist from 2015; modern PyTorch has ",[4408,4906,4907],{},"torch.nn.functional.normalize(p=2, dim=1)"," as built-in alternative.",{"title":43,"searchDepth":44,"depth":44,"links":4910},[4911,4912,4913],{"id":4814,"depth":44,"text":4815},{"id":4840,"depth":44,"text":4841},{"id":4889,"depth":44,"text":4890},[111],{},"\u002Fsummaries\u002Fbatched-l2-norm-layer-for-torch-neural-nets-summary",{"title":4804,"description":43},{"loc":4916},"07bd9d1a251cebe3","summaries\u002Fbatched-l2-norm-layer-for-torch-neural-nets-summary",[84,83],"Custom Torch nn.Module normalizes each row of n x d input tensor to unit L2 norm, with efficient batched forward\u002Fbackward passes for training.",[],"oXfJR2GiD8hRoQl_XaDDAtYx2Y23MZK8rEuo7QlYoH4"]