[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-a0c73df99c5b6892-on-device-vision-swift-code-for-ocr-poses-barcodes-summary":3,"summaries-facets-categories":299,"summary-related-a0c73df99c5b6892-on-device-vision-swift-code-for-ocr-poses-barcodes-summary":3868},{"id":4,"title":5,"ai":6,"body":13,"categories":268,"created_at":270,"date_modified":270,"description":31,"extension":271,"faq":270,"featured":272,"kicker_label":270,"meta":273,"navigation":282,"path":283,"published_at":270,"question":270,"scraped_at":284,"seo":285,"sitemap":286,"source_id":287,"source_name":288,"source_type":289,"source_url":290,"stem":291,"tags":292,"thumbnail_url":270,"tldr":296,"tweet":270,"unknown_tags":297,"__hash__":298},"summaries\u002Fsummaries\u002Fa0c73df99c5b6892-on-device-vision-swift-code-for-ocr-poses-barcodes-summary.md","On-Device Vision: Swift Code for OCR, Poses, Barcodes",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","x-ai\u002Fgrok-4.1-fast",10209,1747,10640,0.0028928,{"type":14,"value":15,"toc":262},"minimark",[16,21,25,67,74,78,85,132,138,144,150,153,157,160,189,192,241,244,248,258],[17,18,20],"h2",{"id":19},"reusable-pattern-for-all-vision-requests","Reusable Pattern for All Vision Requests",[22,23,24],"p",{},"Apple's Vision framework processes images offline using VNImageRequestHandler and specific request types. Start with a UIImage, convert to CGImage, then perform requests asynchronously:",[26,27,32],"pre",{"className":28,"code":29,"language":30,"meta":31,"style":31},"language-swift shiki shiki-themes github-light github-dark","func processImage(from image: UIImage, with request: VNRequest) {\n    guard let cgImage = image.cgImage else { return }\n    let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])\n    try? handler.perform([request])\n}\n","swift","",[33,34,35,43,49,55,61],"code",{"__ignoreMap":31},[36,37,40],"span",{"class":38,"line":39},"line",1,[36,41,42],{},"func processImage(from image: UIImage, with request: VNRequest) {\n",[36,44,46],{"class":38,"line":45},2,[36,47,48],{},"    guard let cgImage = image.cgImage else { return }\n",[36,50,52],{"class":38,"line":51},3,[36,53,54],{},"    let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])\n",[36,56,58],{"class":38,"line":57},4,[36,59,60],{},"    try? handler.perform([request])\n",[36,62,64],{"class":38,"line":63},5,[36,65,66],{},"}\n",[22,68,69,70,73],{},"Handle results in the request's completion block by casting to the observation type (e.g., ",[36,71,72],{},"VNRecognizedTextObservation","). This pattern supports live camera feeds for real-time detection, avoiding cloud latency.",[17,75,77],{"id":76},"text-rectangle-barcode-and-pose-detection-examples","Text, Rectangle, Barcode, and Pose Detection Examples",[22,79,80,84],{},[81,82,83],"strong",{},"Text Recognition (OCR):"," Detects printed\u002Fhandwritten text. Use VNRecognizeTextRequest; extract topCandidate.string and confidence from VNRecognizedTextObservation.",[26,86,88],{"className":28,"code":87,"language":30,"meta":31,"style":31},"let request = VNRecognizeTextRequest { request, error in\n    guard let observations = request.results as? [VNRecognizedTextObservation] else { return }\n    for observation in observations {\n        if let topCandidate = observation.topCandidates(1).first {\n            print(\"Detected text: \\(topCandidate.string)\")\n        }\n    }\n}\n",[33,89,90,95,100,105,110,115,121,127],{"__ignoreMap":31},[36,91,92],{"class":38,"line":39},[36,93,94],{},"let request = VNRecognizeTextRequest { request, error in\n",[36,96,97],{"class":38,"line":45},[36,98,99],{},"    guard let observations = request.results as? [VNRecognizedTextObservation] else { return }\n",[36,101,102],{"class":38,"line":51},[36,103,104],{},"    for observation in observations {\n",[36,106,107],{"class":38,"line":57},[36,108,109],{},"        if let topCandidate = observation.topCandidates(1).first {\n",[36,111,112],{"class":38,"line":63},[36,113,114],{},"            print(\"Detected text: \\(topCandidate.string)\")\n",[36,116,118],{"class":38,"line":117},6,[36,119,120],{},"        }\n",[36,122,124],{"class":38,"line":123},7,[36,125,126],{},"    }\n",[36,128,130],{"class":38,"line":129},8,[36,131,66],{},[22,133,134,137],{},[81,135,136],{},"Rectangle Detection:"," For document scanning. VNDetectRectanglesRequest yields VNRectangleObservation.boundingBox.",[22,139,140,143],{},[81,141,142],{},"Barcode Detection:"," Supports QR, UPC, EAN. VNDetectBarcodesRequest provides VNBarcodeObservation.payloadStringValue.",[22,145,146,149],{},[81,147,148],{},"Human Body Pose:"," Tracks 14+ joints for fitness\u002FAR. VNDetectHumanBodyPoseRequest returns VNHumanBodyPoseObservation; query points like .leftWrist.location via recognizedPoint(.leftWrist).",[22,151,152],{},"Each prints results (e.g., coordinates, strings); integrate into SwiftUI\u002FUIKit for overlays.",[17,154,156],{"id":155},"visualize-detection-confidence-with-swift-charts","Visualize Detection Confidence with Swift Charts",[22,158,159],{},"Pair Vision outputs with SwiftUI Charts for dashboards. Model data:",[26,161,163],{"className":28,"code":162,"language":30,"meta":31,"style":31},"struct TextConfidence: Identifiable {\n    let id = UUID()\n    let text: String\n    let confidence: Double\n}\n",[33,164,165,170,175,180,185],{"__ignoreMap":31},[36,166,167],{"class":38,"line":39},[36,168,169],{},"struct TextConfidence: Identifiable {\n",[36,171,172],{"class":38,"line":45},[36,173,174],{},"    let id = UUID()\n",[36,176,177],{"class":38,"line":51},[36,178,179],{},"    let text: String\n",[36,181,182],{"class":38,"line":57},[36,183,184],{},"    let confidence: Double\n",[36,186,187],{"class":38,"line":63},[36,188,66],{},[22,190,191],{},"Chart view:",[26,193,195],{"className":28,"code":194,"language":30,"meta":31,"style":31},"import Charts\nstruct ConfidenceChart: View {\n    var data: [TextConfidence]\n    var body: some View {\n        Chart(data) {\n            BarMark(x: .value(\"Text\", $0.text), y: .value(\"Confidence\", $0.confidence))\n        }.frame(height: 300).padding()\n    }\n}\n",[33,196,197,202,207,212,217,222,227,232,236],{"__ignoreMap":31},[36,198,199],{"class":38,"line":39},[36,200,201],{},"import Charts\n",[36,203,204],{"class":38,"line":45},[36,205,206],{},"struct ConfidenceChart: View {\n",[36,208,209],{"class":38,"line":51},[36,210,211],{},"    var data: [TextConfidence]\n",[36,213,214],{"class":38,"line":57},[36,215,216],{},"    var body: some View {\n",[36,218,219],{"class":38,"line":63},[36,220,221],{},"        Chart(data) {\n",[36,223,224],{"class":38,"line":117},[36,225,226],{},"            BarMark(x: .value(\"Text\", $0.text), y: .value(\"Confidence\", $0.confidence))\n",[36,228,229],{"class":38,"line":123},[36,230,231],{},"        }.frame(height: 300).padding()\n",[36,233,234],{"class":38,"line":129},[36,235,126],{},[36,237,239],{"class":38,"line":238},9,[36,240,66],{},[22,242,243],{},"Populate from OCR: append TextConfidence(text: candidate.string, confidence: candidate.confidence) for each observation. This turns raw detections into actionable, visual insights without external libraries.",[17,245,247],{"id":246},"trade-offs-favor-vision-over-cloud-apis","Trade-offs Favor Vision Over Cloud APIs",[22,249,250,251,257],{},"Vision excels in speed (no network), privacy (on-device), and cost (free) versus OpenAI\u002FGoogle Cloud Vision. Drawbacks: limited to Apple's models (extend via Core ML); iOS\u002FiPadOS only. Ideal for production apps needing reliability—no rate limits or tokens. GitHub repo at ",[252,253,254],"a",{"href":254,"rel":255},"https:\u002F\u002Fgithub.com\u002Fsanjaynela\u002FvisionApiProject.git",[256],"nofollow"," expands these into a full project.",[259,260,261],"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":31,"searchDepth":45,"depth":45,"links":263},[264,265,266,267],{"id":19,"depth":45,"text":20},{"id":76,"depth":45,"text":77},{"id":155,"depth":45,"text":156},{"id":246,"depth":45,"text":247},[269],"Software Engineering",null,"md",false,{"content_references":274,"triage":279},[275],{"type":276,"title":277,"url":254,"context":278},"tool","visionApiProject","mentioned",{"relevance":57,"novelty":51,"quality":57,"actionability":57,"composite":280,"reasoning":281},3.8,"Category: AI & LLMs. The article provides practical examples of using Apple's Vision framework for various computer vision tasks, addressing the audience's need for actionable content. It includes specific Swift code snippets that developers can implement directly, enhancing its relevance and actionability.",true,"\u002Fsummaries\u002Fa0c73df99c5b6892-on-device-vision-swift-code-for-ocr-poses-barcodes-summary","2026-04-16 02:56:09",{"title":5,"description":31},{"loc":283},"a0c73df99c5b6892","__oneoff__","article","https:\u002F\u002Fmedium.com\u002Fdata-science-collective\u002Fhow-i-taught-my-iphone-to-see-like-a-human-a-deep-dive-into-apples-vision-api-a272272f4c5e","summaries\u002Fa0c73df99c5b6892-on-device-vision-swift-code-for-ocr-poses-barcodes-summary",[293,294,295],"coding","machine-learning","data-visualization","Apple's Vision framework enables fast, private computer vision on iOS—text recognition, rectangle detection, body pose tracking, and barcode scanning—with reusable Swift request handlers and SwiftUI Charts for visualization.",[],"iibpbNNMnIKL7WoDM5DLueuv9krc8mX6fbmw2RqPo1c",[300,303,306,309,312,315,317,319,321,323,325,327,330,332,334,336,338,340,342,344,346,348,351,354,356,358,360,362,364,367,369,371,373,375,377,379,381,383,385,387,389,391,393,395,397,399,401,403,405,407,409,411,413,415,417,419,421,423,425,427,429,431,433,435,437,439,441,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,525,527,529,531,533,535,537,539,541,543,545,547,549,551,553,555,557,559,561,563,565,567,569,571,573,575,577,579,581,583,585,587,589,591,593,595,597,599,601,603,605,607,609,611,613,615,617,619,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],{"categories":301},[302],"Developer Productivity",{"categories":304},[305],"Business & SaaS",{"categories":307},[308],"AI & LLMs",{"categories":310},[311],"AI Automation",{"categories":313},[314],"Product Strategy",{"categories":316},[308],{"categories":318},[302],{"categories":320},[305],{"categories":322},[],{"categories":324},[308],{"categories":326},[],{"categories":328},[329],"AI News & Trends",{"categories":331},[311],{"categories":333},[329],{"categories":335},[311],{"categories":337},[311],{"categories":339},[308],{"categories":341},[308],{"categories":343},[329],{"categories":345},[308],{"categories":347},[],{"categories":349},[350],"Design & Frontend",{"categories":352},[353],"Data Science & Visualization",{"categories":355},[329],{"categories":357},[],{"categories":359},[269],{"categories":361},[308],{"categories":363},[311],{"categories":365},[366],"Marketing & Growth",{"categories":368},[308],{"categories":370},[311],{"categories":372},[],{"categories":374},[],{"categories":376},[350],{"categories":378},[311],{"categories":380},[302],{"categories":382},[350],{"categories":384},[308],{"categories":386},[311],{"categories":388},[329],{"categories":390},[],{"categories":392},[],{"categories":394},[311],{"categories":396},[269],{"categories":398},[],{"categories":400},[305],{"categories":402},[],{"categories":404},[],{"categories":406},[311],{"categories":408},[311],{"categories":410},[308],{"categories":412},[],{"categories":414},[269],{"categories":416},[],{"categories":418},[],{"categories":420},[],{"categories":422},[308],{"categories":424},[366],{"categories":426},[350],{"categories":428},[350],{"categories":430},[308],{"categories":432},[311],{"categories":434},[308],{"categories":436},[308],{"categories":438},[311],{"categories":440},[311],{"categories":442},[353],{"categories":444},[329],{"categories":446},[311],{"categories":448},[366],{"categories":450},[311],{"categories":452},[314],{"categories":454},[],{"categories":456},[311],{"categories":458},[],{"categories":460},[311],{"categories":462},[269],{"categories":464},[350],{"categories":466},[308],{"categories":468},[],{"categories":470},[],{"categories":472},[311],{"categories":474},[],{"categories":476},[308],{"categories":478},[],{"categories":480},[302],{"categories":482},[269],{"categories":484},[305],{"categories":486},[329],{"categories":488},[308],{"categories":490},[],{"categories":492},[308],{"categories":494},[],{"categories":496},[269],{"categories":498},[353],{"categories":500},[],{"categories":502},[308],{"categories":504},[350],{"categories":506},[],{"categories":508},[350],{"categories":510},[311],{"categories":512},[],{"categories":514},[311],{"categories":516},[329],{"categories":518},[308],{"categories":520},[],{"categories":522},[311],{"categories":524},[308],{"categories":526},[314],{"categories":528},[],{"categories":530},[308],{"categories":532},[311],{"categories":534},[311],{"categories":536},[],{"categories":538},[353],{"categories":540},[308],{"categories":542},[],{"categories":544},[302],{"categories":546},[305],{"categories":548},[308],{"categories":550},[311],{"categories":552},[269],{"categories":554},[308],{"categories":556},[],{"categories":558},[],{"categories":560},[308],{"categories":562},[],{"categories":564},[350],{"categories":566},[],{"categories":568},[308],{"categories":570},[],{"categories":572},[311],{"categories":574},[308],{"categories":576},[350],{"categories":578},[],{"categories":580},[308],{"categories":582},[308],{"categories":584},[305],{"categories":586},[311],{"categories":588},[308],{"categories":590},[350],{"categories":592},[311],{"categories":594},[],{"categories":596},[],{"categories":598},[329],{"categories":600},[],{"categories":602},[308],{"categories":604},[305,366],{"categories":606},[],{"categories":608},[308],{"categories":610},[],{"categories":612},[],{"categories":614},[308],{"categories":616},[],{"categories":618},[308],{"categories":620},[621],"DevOps & Cloud",{"categories":623},[],{"categories":625},[329],{"categories":627},[350],{"categories":629},[],{"categories":631},[329],{"categories":633},[329],{"categories":635},[308],{"categories":637},[366],{"categories":639},[],{"categories":641},[305],{"categories":643},[],{"categories":645},[308,621],{"categories":647},[308],{"categories":649},[308],{"categories":651},[311],{"categories":653},[308,269],{"categories":655},[353],{"categories":657},[308],{"categories":659},[366],{"categories":661},[311],{"categories":663},[311],{"categories":665},[],{"categories":667},[311],{"categories":669},[308,305],{"categories":671},[],{"categories":673},[350],{"categories":675},[350],{"categories":677},[],{"categories":679},[],{"categories":681},[329],{"categories":683},[],{"categories":685},[302],{"categories":687},[269],{"categories":689},[308],{"categories":691},[350],{"categories":693},[311],{"categories":695},[269],{"categories":697},[329],{"categories":699},[350],{"categories":701},[],{"categories":703},[308],{"categories":705},[308],{"categories":707},[308],{"categories":709},[329],{"categories":711},[302],{"categories":713},[308],{"categories":715},[311],{"categories":717},[621],{"categories":719},[350],{"categories":721},[311],{"categories":723},[],{"categories":725},[],{"categories":727},[350],{"categories":729},[329],{"categories":731},[353],{"categories":733},[],{"categories":735},[308],{"categories":737},[308],{"categories":739},[305],{"categories":741},[308],{"categories":743},[308],{"categories":745},[329],{"categories":747},[],{"categories":749},[311],{"categories":751},[269],{"categories":753},[],{"categories":755},[308],{"categories":757},[308],{"categories":759},[311],{"categories":761},[],{"categories":763},[],{"categories":765},[308],{"categories":767},[],{"categories":769},[305],{"categories":771},[311],{"categories":773},[],{"categories":775},[302],{"categories":777},[308],{"categories":779},[305],{"categories":781},[329],{"categories":783},[],{"categories":785},[],{"categories":787},[],{"categories":789},[329],{"categories":791},[329],{"categories":793},[],{"categories":795},[],{"categories":797},[305],{"categories":799},[],{"categories":801},[],{"categories":803},[302],{"categories":805},[],{"categories":807},[366],{"categories":809},[311],{"categories":811},[305],{"categories":813},[311],{"categories":815},[],{"categories":817},[314],{"categories":819},[350],{"categories":821},[269],{"categories":823},[308],{"categories":825},[311],{"categories":827},[305],{"categories":829},[308],{"categories":831},[],{"categories":833},[],{"categories":835},[269],{"categories":837},[353],{"categories":839},[314],{"categories":841},[311],{"categories":843},[308],{"categories":845},[],{"categories":847},[621],{"categories":849},[],{"categories":851},[311],{"categories":853},[],{"categories":855},[],{"categories":857},[308],{"categories":859},[350],{"categories":861},[366],{"categories":863},[311],{"categories":865},[],{"categories":867},[302],{"categories":869},[],{"categories":871},[329],{"categories":873},[308,621],{"categories":875},[329],{"categories":877},[308],{"categories":879},[305],{"categories":881},[308],{"categories":883},[],{"categories":885},[305],{"categories":887},[],{"categories":889},[269],{"categories":891},[350],{"categories":893},[329],{"categories":895},[353],{"categories":897},[302],{"categories":899},[308],{"categories":901},[269],{"categories":903},[],{"categories":905},[],{"categories":907},[314],{"categories":909},[],{"categories":911},[308],{"categories":913},[],{"categories":915},[350],{"categories":917},[350],{"categories":919},[350],{"categories":921},[],{"categories":923},[],{"categories":925},[329],{"categories":927},[311],{"categories":929},[308],{"categories":931},[308],{"categories":933},[308],{"categories":935},[305],{"categories":937},[308],{"categories":939},[],{"categories":941},[269],{"categories":943},[269],{"categories":945},[305],{"categories":947},[],{"categories":949},[308],{"categories":951},[308],{"categories":953},[305],{"categories":955},[329],{"categories":957},[366],{"categories":959},[311],{"categories":961},[],{"categories":963},[350],{"categories":965},[],{"categories":967},[308],{"categories":969},[],{"categories":971},[305],{"categories":973},[311],{"categories":975},[],{"categories":977},[621],{"categories":979},[353],{"categories":981},[269],{"categories":983},[366],{"categories":985},[269],{"categories":987},[311],{"categories":989},[],{"categories":991},[],{"categories":993},[311],{"categories":995},[302],{"categories":997},[311],{"categories":999},[314],{"categories":1001},[305],{"categories":1003},[],{"categories":1005},[308],{"categories":1007},[314],{"categories":1009},[308],{"categories":1011},[308],{"categories":1013},[366],{"categories":1015},[350],{"categories":1017},[311],{"categories":1019},[],{"categories":1021},[],{"categories":1023},[621],{"categories":1025},[269],{"categories":1027},[],{"categories":1029},[311],{"categories":1031},[308],{"categories":1033},[350,308],{"categories":1035},[302],{"categories":1037},[],{"categories":1039},[308],{"categories":1041},[302],{"categories":1043},[350],{"categories":1045},[311],{"categories":1047},[269],{"categories":1049},[],{"categories":1051},[308],{"categories":1053},[],{"categories":1055},[302],{"categories":1057},[],{"categories":1059},[311],{"categories":1061},[314],{"categories":1063},[308],{"categories":1065},[308],{"categories":1067},[350],{"categories":1069},[311],{"categories":1071},[621],{"categories":1073},[350],{"categories":1075},[311],{"categories":1077},[308],{"categories":1079},[308],{"categories":1081},[308],{"categories":1083},[329],{"categories":1085},[],{"categories":1087},[314],{"categories":1089},[311],{"categories":1091},[350],{"categories":1093},[311],{"categories":1095},[269],{"categories":1097},[350],{"categories":1099},[311],{"categories":1101},[329],{"categories":1103},[],{"categories":1105},[308],{"categories":1107},[350],{"categories":1109},[308],{"categories":1111},[302],{"categories":1113},[329],{"categories":1115},[308],{"categories":1117},[366],{"categories":1119},[308],{"categories":1121},[308],{"categories":1123},[311],{"categories":1125},[311],{"categories":1127},[308],{"categories":1129},[311],{"categories":1131},[350],{"categories":1133},[308],{"categories":1135},[],{"categories":1137},[],{"categories":1139},[269],{"categories":1141},[],{"categories":1143},[302],{"categories":1145},[621],{"categories":1147},[],{"categories":1149},[302],{"categories":1151},[305],{"categories":1153},[366],{"categories":1155},[],{"categories":1157},[305],{"categories":1159},[],{"categories":1161},[],{"categories":1163},[],{"categories":1165},[],{"categories":1167},[],{"categories":1169},[308],{"categories":1171},[311],{"categories":1173},[621],{"categories":1175},[302],{"categories":1177},[308],{"categories":1179},[269],{"categories":1181},[314],{"categories":1183},[308],{"categories":1185},[366],{"categories":1187},[308],{"categories":1189},[308],{"categories":1191},[308],{"categories":1193},[308,302],{"categories":1195},[269],{"categories":1197},[269],{"categories":1199},[350],{"categories":1201},[308],{"categories":1203},[],{"categories":1205},[],{"categories":1207},[],{"categories":1209},[269],{"categories":1211},[353],{"categories":1213},[329],{"categories":1215},[350],{"categories":1217},[],{"categories":1219},[308],{"categories":1221},[308],{"categories":1223},[],{"categories":1225},[],{"categories":1227},[311],{"categories":1229},[308],{"categories":1231},[305],{"categories":1233},[],{"categories":1235},[302],{"categories":1237},[308],{"categories":1239},[302],{"categories":1241},[308],{"categories":1243},[269],{"categories":1245},[366],{"categories":1247},[308,350],{"categories":1249},[329],{"categories":1251},[350],{"categories":1253},[],{"categories":1255},[621],{"categories":1257},[350],{"categories":1259},[311],{"categories":1261},[],{"categories":1263},[],{"categories":1265},[],{"categories":1267},[],{"categories":1269},[269],{"categories":1271},[311],{"categories":1273},[311],{"categories":1275},[308],{"categories":1277},[308],{"categories":1279},[],{"categories":1281},[350],{"categories":1283},[],{"categories":1285},[],{"categories":1287},[311],{"categories":1289},[],{"categories":1291},[],{"categories":1293},[366],{"categories":1295},[366],{"categories":1297},[311],{"categories":1299},[],{"categories":1301},[308],{"categories":1303},[308],{"categories":1305},[269],{"categories":1307},[350],{"categories":1309},[350],{"categories":1311},[311],{"categories":1313},[302],{"categories":1315},[308],{"categories":1317},[350],{"categories":1319},[350],{"categories":1321},[311],{"categories":1323},[311],{"categories":1325},[308],{"categories":1327},[],{"categories":1329},[],{"categories":1331},[308],{"categories":1333},[311],{"categories":1335},[329],{"categories":1337},[269],{"categories":1339},[302],{"categories":1341},[308],{"categories":1343},[],{"categories":1345},[311],{"categories":1347},[311],{"categories":1349},[],{"categories":1351},[302],{"categories":1353},[308],{"categories":1355},[302],{"categories":1357},[302],{"categories":1359},[],{"categories":1361},[],{"categories":1363},[311],{"categories":1365},[311],{"categories":1367},[308],{"categories":1369},[308],{"categories":1371},[329],{"categories":1373},[353],{"categories":1375},[314],{"categories":1377},[329],{"categories":1379},[350],{"categories":1381},[],{"categories":1383},[329],{"categories":1385},[],{"categories":1387},[],{"categories":1389},[],{"categories":1391},[],{"categories":1393},[269],{"categories":1395},[353],{"categories":1397},[],{"categories":1399},[308],{"categories":1401},[308],{"categories":1403},[353],{"categories":1405},[269],{"categories":1407},[],{"categories":1409},[],{"categories":1411},[311],{"categories":1413},[329],{"categories":1415},[329],{"categories":1417},[311],{"categories":1419},[302],{"categories":1421},[308,621],{"categories":1423},[],{"categories":1425},[350],{"categories":1427},[302],{"categories":1429},[311],{"categories":1431},[350],{"categories":1433},[],{"categories":1435},[311],{"categories":1437},[311],{"categories":1439},[308],{"categories":1441},[366],{"categories":1443},[269],{"categories":1445},[350],{"categories":1447},[],{"categories":1449},[311],{"categories":1451},[308],{"categories":1453},[311],{"categories":1455},[311],{"categories":1457},[311],{"categories":1459},[366],{"categories":1461},[311],{"categories":1463},[308],{"categories":1465},[],{"categories":1467},[366],{"categories":1469},[329],{"categories":1471},[311],{"categories":1473},[],{"categories":1475},[],{"categories":1477},[308],{"categories":1479},[311],{"categories":1481},[329],{"categories":1483},[311],{"categories":1485},[],{"categories":1487},[],{"categories":1489},[],{"categories":1491},[311],{"categories":1493},[],{"categories":1495},[],{"categories":1497},[353],{"categories":1499},[308],{"categories":1501},[353],{"categories":1503},[329],{"categories":1505},[308],{"categories":1507},[308],{"categories":1509},[311],{"categories":1511},[308],{"categories":1513},[],{"categories":1515},[],{"categories":1517},[621],{"categories":1519},[],{"categories":1521},[],{"categories":1523},[302],{"categories":1525},[],{"categories":1527},[],{"categories":1529},[],{"categories":1531},[],{"categories":1533},[269],{"categories":1535},[329],{"categories":1537},[366],{"categories":1539},[305],{"categories":1541},[308],{"categories":1543},[308],{"categories":1545},[305],{"categories":1547},[],{"categories":1549},[350],{"categories":1551},[311],{"categories":1553},[305],{"categories":1555},[308],{"categories":1557},[308],{"categories":1559},[302],{"categories":1561},[],{"categories":1563},[302],{"categories":1565},[308],{"categories":1567},[366],{"categories":1569},[311],{"categories":1571},[329],{"categories":1573},[305],{"categories":1575},[308],{"categories":1577},[311],{"categories":1579},[],{"categories":1581},[308],{"categories":1583},[302],{"categories":1585},[308],{"categories":1587},[],{"categories":1589},[329],{"categories":1591},[308],{"categories":1593},[],{"categories":1595},[305],{"categories":1597},[308],{"categories":1599},[],{"categories":1601},[],{"categories":1603},[],{"categories":1605},[308],{"categories":1607},[],{"categories":1609},[621],{"categories":1611},[308],{"categories":1613},[],{"categories":1615},[308],{"categories":1617},[308],{"categories":1619},[308],{"categories":1621},[308,621],{"categories":1623},[308],{"categories":1625},[308],{"categories":1627},[350],{"categories":1629},[311],{"categories":1631},[],{"categories":1633},[311],{"categories":1635},[308],{"categories":1637},[308],{"categories":1639},[308],{"categories":1641},[302],{"categories":1643},[302],{"categories":1645},[269],{"categories":1647},[350],{"categories":1649},[311],{"categories":1651},[],{"categories":1653},[308],{"categories":1655},[329],{"categories":1657},[308],{"categories":1659},[305],{"categories":1661},[],{"categories":1663},[621],{"categories":1665},[350],{"categories":1667},[350],{"categories":1669},[311],{"categories":1671},[329],{"categories":1673},[311],{"categories":1675},[308],{"categories":1677},[],{"categories":1679},[308],{"categories":1681},[],{"categories":1683},[],{"categories":1685},[308],{"categories":1687},[308],{"categories":1689},[308],{"categories":1691},[311],{"categories":1693},[308],{"categories":1695},[],{"categories":1697},[353],{"categories":1699},[311],{"categories":1701},[],{"categories":1703},[308],{"categories":1705},[329],{"categories":1707},[],{"categories":1709},[350],{"categories":1711},[621],{"categories":1713},[329],{"categories":1715},[269],{"categories":1717},[269],{"categories":1719},[329],{"categories":1721},[329],{"categories":1723},[621],{"categories":1725},[],{"categories":1727},[329],{"categories":1729},[308],{"categories":1731},[302],{"categories":1733},[329],{"categories":1735},[],{"categories":1737},[353],{"categories":1739},[329],{"categories":1741},[269],{"categories":1743},[329],{"categories":1745},[621],{"categories":1747},[308],{"categories":1749},[308],{"categories":1751},[],{"categories":1753},[305],{"categories":1755},[],{"categories":1757},[],{"categories":1759},[308],{"categories":1761},[308],{"categories":1763},[308],{"categories":1765},[308],{"categories":1767},[],{"categories":1769},[353],{"categories":1771},[302],{"categories":1773},[],{"categories":1775},[308],{"categories":1777},[308],{"categories":1779},[621],{"categories":1781},[621],{"categories":1783},[],{"categories":1785},[311],{"categories":1787},[329],{"categories":1789},[329],{"categories":1791},[308],{"categories":1793},[311],{"categories":1795},[],{"categories":1797},[350],{"categories":1799},[308],{"categories":1801},[308],{"categories":1803},[],{"categories":1805},[],{"categories":1807},[621],{"categories":1809},[308],{"categories":1811},[269],{"categories":1813},[305],{"categories":1815},[308],{"categories":1817},[],{"categories":1819},[311],{"categories":1821},[302],{"categories":1823},[302],{"categories":1825},[],{"categories":1827},[308],{"categories":1829},[350],{"categories":1831},[311],{"categories":1833},[],{"categories":1835},[308],{"categories":1837},[308],{"categories":1839},[311],{"categories":1841},[],{"categories":1843},[311],{"categories":1845},[269],{"categories":1847},[],{"categories":1849},[308],{"categories":1851},[],{"categories":1853},[308],{"categories":1855},[],{"categories":1857},[308],{"categories":1859},[308],{"categories":1861},[],{"categories":1863},[308],{"categories":1865},[329],{"categories":1867},[308],{"categories":1869},[308],{"categories":1871},[302],{"categories":1873},[308],{"categories":1875},[329],{"categories":1877},[311],{"categories":1879},[],{"categories":1881},[308],{"categories":1883},[366],{"categories":1885},[],{"categories":1887},[],{"categories":1889},[],{"categories":1891},[302],{"categories":1893},[329],{"categories":1895},[311],{"categories":1897},[308],{"categories":1899},[350],{"categories":1901},[311],{"categories":1903},[],{"categories":1905},[311],{"categories":1907},[],{"categories":1909},[308],{"categories":1911},[311],{"categories":1913},[308],{"categories":1915},[],{"categories":1917},[308],{"categories":1919},[308],{"categories":1921},[329],{"categories":1923},[350],{"categories":1925},[311],{"categories":1927},[350],{"categories":1929},[305],{"categories":1931},[],{"categories":1933},[],{"categories":1935},[308],{"categories":1937},[302],{"categories":1939},[329],{"categories":1941},[],{"categories":1943},[],{"categories":1945},[269],{"categories":1947},[350],{"categories":1949},[],{"categories":1951},[308],{"categories":1953},[],{"categories":1955},[366],{"categories":1957},[308],{"categories":1959},[621],{"categories":1961},[269],{"categories":1963},[],{"categories":1965},[311],{"categories":1967},[308],{"categories":1969},[311],{"categories":1971},[311],{"categories":1973},[308],{"categories":1975},[],{"categories":1977},[302],{"categories":1979},[308],{"categories":1981},[305],{"categories":1983},[269],{"categories":1985},[350],{"categories":1987},[],{"categories":1989},[],{"categories":1991},[],{"categories":1993},[311],{"categories":1995},[350],{"categories":1997},[329],{"categories":1999},[308],{"categories":2001},[329],{"categories":2003},[350],{"categories":2005},[],{"categories":2007},[350],{"categories":2009},[329],{"categories":2011},[305],{"categories":2013},[308],{"categories":2015},[329],{"categories":2017},[366],{"categories":2019},[],{"categories":2021},[],{"categories":2023},[353],{"categories":2025},[308,269],{"categories":2027},[329],{"categories":2029},[308],{"categories":2031},[311],{"categories":2033},[311],{"categories":2035},[308],{"categories":2037},[],{"categories":2039},[269],{"categories":2041},[308],{"categories":2043},[353],{"categories":2045},[311],{"categories":2047},[366],{"categories":2049},[621],{"categories":2051},[],{"categories":2053},[302],{"categories":2055},[311],{"categories":2057},[311],{"categories":2059},[269],{"categories":2061},[308],{"categories":2063},[308],{"categories":2065},[],{"categories":2067},[],{"categories":2069},[],{"categories":2071},[621],{"categories":2073},[329],{"categories":2075},[308],{"categories":2077},[308],{"categories":2079},[308],{"categories":2081},[],{"categories":2083},[353],{"categories":2085},[305],{"categories":2087},[],{"categories":2089},[311],{"categories":2091},[621],{"categories":2093},[],{"categories":2095},[350],{"categories":2097},[350],{"categories":2099},[],{"categories":2101},[269],{"categories":2103},[350],{"categories":2105},[308],{"categories":2107},[],{"categories":2109},[329],{"categories":2111},[308],{"categories":2113},[350],{"categories":2115},[311],{"categories":2117},[329],{"categories":2119},[],{"categories":2121},[311],{"categories":2123},[350],{"categories":2125},[308],{"categories":2127},[],{"categories":2129},[308],{"categories":2131},[308],{"categories":2133},[621],{"categories":2135},[329],{"categories":2137},[353],{"categories":2139},[353],{"categories":2141},[],{"categories":2143},[],{"categories":2145},[],{"categories":2147},[311],{"categories":2149},[269],{"categories":2151},[269],{"categories":2153},[],{"categories":2155},[],{"categories":2157},[308],{"categories":2159},[],{"categories":2161},[311],{"categories":2163},[308],{"categories":2165},[],{"categories":2167},[308],{"categories":2169},[305],{"categories":2171},[308],{"categories":2173},[366],{"categories":2175},[311],{"categories":2177},[308],{"categories":2179},[269],{"categories":2181},[329],{"categories":2183},[311],{"categories":2185},[],{"categories":2187},[329],{"categories":2189},[311],{"categories":2191},[311],{"categories":2193},[],{"categories":2195},[305],{"categories":2197},[311],{"categories":2199},[],{"categories":2201},[308],{"categories":2203},[302],{"categories":2205},[329],{"categories":2207},[621],{"categories":2209},[311],{"categories":2211},[311],{"categories":2213},[302],{"categories":2215},[308],{"categories":2217},[],{"categories":2219},[],{"categories":2221},[350],{"categories":2223},[308,305],{"categories":2225},[],{"categories":2227},[302],{"categories":2229},[353],{"categories":2231},[308],{"categories":2233},[269],{"categories":2235},[308],{"categories":2237},[311],{"categories":2239},[308],{"categories":2241},[308],{"categories":2243},[329],{"categories":2245},[311],{"categories":2247},[],{"categories":2249},[],{"categories":2251},[311],{"categories":2253},[308],{"categories":2255},[621],{"categories":2257},[],{"categories":2259},[308],{"categories":2261},[311],{"categories":2263},[],{"categories":2265},[308],{"categories":2267},[366],{"categories":2269},[353],{"categories":2271},[311],{"categories":2273},[308],{"categories":2275},[621],{"categories":2277},[],{"categories":2279},[308],{"categories":2281},[366],{"categories":2283},[350],{"categories":2285},[308],{"categories":2287},[],{"categories":2289},[366],{"categories":2291},[329],{"categories":2293},[308],{"categories":2295},[308],{"categories":2297},[302],{"categories":2299},[],{"categories":2301},[],{"categories":2303},[350],{"categories":2305},[308],{"categories":2307},[353],{"categories":2309},[366],{"categories":2311},[366],{"categories":2313},[329],{"categories":2315},[],{"categories":2317},[],{"categories":2319},[308],{"categories":2321},[],{"categories":2323},[308,269],{"categories":2325},[329],{"categories":2327},[311],{"categories":2329},[269],{"categories":2331},[308],{"categories":2333},[302],{"categories":2335},[],{"categories":2337},[],{"categories":2339},[302],{"categories":2341},[366],{"categories":2343},[308],{"categories":2345},[],{"categories":2347},[350,308],{"categories":2349},[621],{"categories":2351},[302],{"categories":2353},[],{"categories":2355},[305],{"categories":2357},[305],{"categories":2359},[308],{"categories":2361},[269],{"categories":2363},[311],{"categories":2365},[329],{"categories":2367},[366],{"categories":2369},[350],{"categories":2371},[308],{"categories":2373},[308],{"categories":2375},[308],{"categories":2377},[302],{"categories":2379},[308],{"categories":2381},[311],{"categories":2383},[329],{"categories":2385},[],{"categories":2387},[],{"categories":2389},[353],{"categories":2391},[269],{"categories":2393},[308],{"categories":2395},[350],{"categories":2397},[353],{"categories":2399},[308],{"categories":2401},[308],{"categories":2403},[311],{"categories":2405},[311],{"categories":2407},[308,305],{"categories":2409},[],{"categories":2411},[350],{"categories":2413},[],{"categories":2415},[308],{"categories":2417},[329],{"categories":2419},[302],{"categories":2421},[302],{"categories":2423},[311],{"categories":2425},[308],{"categories":2427},[305],{"categories":2429},[269],{"categories":2431},[366],{"categories":2433},[],{"categories":2435},[329],{"categories":2437},[308],{"categories":2439},[308],{"categories":2441},[329],{"categories":2443},[269],{"categories":2445},[308],{"categories":2447},[311],{"categories":2449},[329],{"categories":2451},[308],{"categories":2453},[350],{"categories":2455},[308],{"categories":2457},[308],{"categories":2459},[621],{"categories":2461},[314],{"categories":2463},[311],{"categories":2465},[308],{"categories":2467},[329],{"categories":2469},[311],{"categories":2471},[366],{"categories":2473},[308],{"categories":2475},[],{"categories":2477},[308],{"categories":2479},[],{"categories":2481},[],{"categories":2483},[],{"categories":2485},[305],{"categories":2487},[308],{"categories":2489},[311],{"categories":2491},[329],{"categories":2493},[329],{"categories":2495},[329],{"categories":2497},[329],{"categories":2499},[],{"categories":2501},[302],{"categories":2503},[311],{"categories":2505},[329],{"categories":2507},[302],{"categories":2509},[311],{"categories":2511},[308],{"categories":2513},[308,311],{"categories":2515},[311],{"categories":2517},[621],{"categories":2519},[329],{"categories":2521},[329],{"categories":2523},[311],{"categories":2525},[308],{"categories":2527},[],{"categories":2529},[329],{"categories":2531},[366],{"categories":2533},[302],{"categories":2535},[308],{"categories":2537},[308],{"categories":2539},[],{"categories":2541},[269],{"categories":2543},[],{"categories":2545},[302],{"categories":2547},[311],{"categories":2549},[329],{"categories":2551},[308],{"categories":2553},[329],{"categories":2555},[302],{"categories":2557},[329],{"categories":2559},[329],{"categories":2561},[],{"categories":2563},[305],{"categories":2565},[311],{"categories":2567},[329],{"categories":2569},[329],{"categories":2571},[329],{"categories":2573},[329],{"categories":2575},[329],{"categories":2577},[329],{"categories":2579},[329],{"categories":2581},[329],{"categories":2583},[329],{"categories":2585},[329],{"categories":2587},[353],{"categories":2589},[302],{"categories":2591},[308],{"categories":2593},[308],{"categories":2595},[],{"categories":2597},[308,302],{"categories":2599},[],{"categories":2601},[311],{"categories":2603},[329],{"categories":2605},[311],{"categories":2607},[308],{"categories":2609},[308],{"categories":2611},[308],{"categories":2613},[308],{"categories":2615},[308],{"categories":2617},[311],{"categories":2619},[305],{"categories":2621},[350],{"categories":2623},[329],{"categories":2625},[308],{"categories":2627},[],{"categories":2629},[],{"categories":2631},[311],{"categories":2633},[350],{"categories":2635},[308],{"categories":2637},[],{"categories":2639},[],{"categories":2641},[366],{"categories":2643},[308],{"categories":2645},[],{"categories":2647},[],{"categories":2649},[302],{"categories":2651},[305],{"categories":2653},[308],{"categories":2655},[305],{"categories":2657},[350],{"categories":2659},[],{"categories":2661},[329],{"categories":2663},[],{"categories":2665},[350],{"categories":2667},[308],{"categories":2669},[366],{"categories":2671},[],{"categories":2673},[366],{"categories":2675},[],{"categories":2677},[],{"categories":2679},[311],{"categories":2681},[],{"categories":2683},[305],{"categories":2685},[302],{"categories":2687},[350],{"categories":2689},[269],{"categories":2691},[],{"categories":2693},[],{"categories":2695},[308],{"categories":2697},[302],{"categories":2699},[366],{"categories":2701},[],{"categories":2703},[311],{"categories":2705},[311],{"categories":2707},[329],{"categories":2709},[308],{"categories":2711},[311],{"categories":2713},[308],{"categories":2715},[311],{"categories":2717},[308],{"categories":2719},[314],{"categories":2721},[329],{"categories":2723},[],{"categories":2725},[366],{"categories":2727},[269],{"categories":2729},[311],{"categories":2731},[],{"categories":2733},[308],{"categories":2735},[311],{"categories":2737},[305],{"categories":2739},[302],{"categories":2741},[308],{"categories":2743},[350],{"categories":2745},[269],{"categories":2747},[269],{"categories":2749},[308],{"categories":2751},[353],{"categories":2753},[308],{"categories":2755},[311],{"categories":2757},[305],{"categories":2759},[311],{"categories":2761},[308],{"categories":2763},[308],{"categories":2765},[311],{"categories":2767},[329],{"categories":2769},[],{"categories":2771},[302],{"categories":2773},[308],{"categories":2775},[311],{"categories":2777},[308],{"categories":2779},[308],{"categories":2781},[],{"categories":2783},[350],{"categories":2785},[305],{"categories":2787},[329],{"categories":2789},[308],{"categories":2791},[308],{"categories":2793},[350],{"categories":2795},[366],{"categories":2797},[353],{"categories":2799},[308],{"categories":2801},[329],{"categories":2803},[308],{"categories":2805},[311],{"categories":2807},[621],{"categories":2809},[308],{"categories":2811},[311],{"categories":2813},[353],{"categories":2815},[],{"categories":2817},[311],{"categories":2819},[269],{"categories":2821},[350],{"categories":2823},[308],{"categories":2825},[302],{"categories":2827},[305],{"categories":2829},[269],{"categories":2831},[],{"categories":2833},[311],{"categories":2835},[308],{"categories":2837},[],{"categories":2839},[329],{"categories":2841},[],{"categories":2843},[329],{"categories":2845},[308],{"categories":2847},[311],{"categories":2849},[311],{"categories":2851},[311],{"categories":2853},[],{"categories":2855},[],{"categories":2857},[308],{"categories":2859},[308],{"categories":2861},[],{"categories":2863},[350],{"categories":2865},[311],{"categories":2867},[366],{"categories":2869},[302],{"categories":2871},[],{"categories":2873},[],{"categories":2875},[329],{"categories":2877},[269],{"categories":2879},[308],{"categories":2881},[308],{"categories":2883},[308],{"categories":2885},[269],{"categories":2887},[329],{"categories":2889},[350],{"categories":2891},[308],{"categories":2893},[308],{"categories":2895},[308],{"categories":2897},[329],{"categories":2899},[308],{"categories":2901},[329],{"categories":2903},[311],{"categories":2905},[311],{"categories":2907},[269],{"categories":2909},[311],{"categories":2911},[308],{"categories":2913},[269],{"categories":2915},[350],{"categories":2917},[],{"categories":2919},[311],{"categories":2921},[],{"categories":2923},[],{"categories":2925},[305],{"categories":2927},[308],{"categories":2929},[311],{"categories":2931},[302],{"categories":2933},[311],{"categories":2935},[366],{"categories":2937},[],{"categories":2939},[311],{"categories":2941},[],{"categories":2943},[302],{"categories":2945},[311],{"categories":2947},[],{"categories":2949},[311],{"categories":2951},[308],{"categories":2953},[329],{"categories":2955},[308],{"categories":2957},[311],{"categories":2959},[329],{"categories":2961},[311],{"categories":2963},[269],{"categories":2965},[350],{"categories":2967},[302],{"categories":2969},[],{"categories":2971},[311],{"categories":2973},[350],{"categories":2975},[329],{"categories":2977},[308],{"categories":2979},[350],{"categories":2981},[302],{"categories":2983},[],{"categories":2985},[311],{"categories":2987},[311],{"categories":2989},[308],{"categories":2991},[],{"categories":2993},[311],{"categories":2995},[314],{"categories":2997},[329],{"categories":2999},[311],{"categories":3001},[305],{"categories":3003},[],{"categories":3005},[308],{"categories":3007},[314],{"categories":3009},[308],{"categories":3011},[311],{"categories":3013},[329],{"categories":3015},[302],{"categories":3017},[621],{"categories":3019},[308],{"categories":3021},[308],{"categories":3023},[308],{"categories":3025},[329],{"categories":3027},[305],{"categories":3029},[308],{"categories":3031},[350],{"categories":3033},[329],{"categories":3035},[621],{"categories":3037},[308],{"categories":3039},[],{"categories":3041},[],{"categories":3043},[621],{"categories":3045},[353],{"categories":3047},[311],{"categories":3049},[311],{"categories":3051},[329],{"categories":3053},[308],{"categories":3055},[302],{"categories":3057},[350],{"categories":3059},[311],{"categories":3061},[308],{"categories":3063},[366],{"categories":3065},[308],{"categories":3067},[311],{"categories":3069},[],{"categories":3071},[308],{"categories":3073},[308],{"categories":3075},[329],{"categories":3077},[302],{"categories":3079},[],{"categories":3081},[308],{"categories":3083},[308],{"categories":3085},[269],{"categories":3087},[350],{"categories":3089},[308,311],{"categories":3091},[366,305],{"categories":3093},[308],{"categories":3095},[],{"categories":3097},[311],{"categories":3099},[],{"categories":3101},[269],{"categories":3103},[308],{"categories":3105},[329],{"categories":3107},[],{"categories":3109},[311],{"categories":3111},[],{"categories":3113},[311],{"categories":3115},[302],{"categories":3117},[311],{"categories":3119},[308],{"categories":3121},[621],{"categories":3123},[366],{"categories":3125},[305],{"categories":3127},[305],{"categories":3129},[302],{"categories":3131},[302],{"categories":3133},[308],{"categories":3135},[311],{"categories":3137},[308],{"categories":3139},[308],{"categories":3141},[302],{"categories":3143},[308],{"categories":3145},[366],{"categories":3147},[329],{"categories":3149},[308],{"categories":3151},[311],{"categories":3153},[308],{"categories":3155},[],{"categories":3157},[269],{"categories":3159},[],{"categories":3161},[311],{"categories":3163},[302],{"categories":3165},[],{"categories":3167},[621],{"categories":3169},[308],{"categories":3171},[],{"categories":3173},[329],{"categories":3175},[311],{"categories":3177},[269],{"categories":3179},[308],{"categories":3181},[311],{"categories":3183},[269],{"categories":3185},[311],{"categories":3187},[329],{"categories":3189},[302],{"categories":3191},[329],{"categories":3193},[269],{"categories":3195},[308],{"categories":3197},[350],{"categories":3199},[308],{"categories":3201},[308],{"categories":3203},[308],{"categories":3205},[308],{"categories":3207},[311],{"categories":3209},[308],{"categories":3211},[311],{"categories":3213},[308],{"categories":3215},[302],{"categories":3217},[308],{"categories":3219},[311],{"categories":3221},[350],{"categories":3223},[302],{"categories":3225},[311],{"categories":3227},[350],{"categories":3229},[],{"categories":3231},[308],{"categories":3233},[308],{"categories":3235},[269],{"categories":3237},[],{"categories":3239},[311],{"categories":3241},[366],{"categories":3243},[308],{"categories":3245},[329],{"categories":3247},[366],{"categories":3249},[311],{"categories":3251},[305],{"categories":3253},[305],{"categories":3255},[308],{"categories":3257},[302],{"categories":3259},[],{"categories":3261},[308],{"categories":3263},[],{"categories":3265},[302],{"categories":3267},[308],{"categories":3269},[311],{"categories":3271},[311],{"categories":3273},[],{"categories":3275},[269],{"categories":3277},[269],{"categories":3279},[366],{"categories":3281},[350],{"categories":3283},[],{"categories":3285},[308],{"categories":3287},[302],{"categories":3289},[308],{"categories":3291},[269],{"categories":3293},[302],{"categories":3295},[329],{"categories":3297},[329],{"categories":3299},[],{"categories":3301},[329],{"categories":3303},[311],{"categories":3305},[350],{"categories":3307},[353],{"categories":3309},[308],{"categories":3311},[],{"categories":3313},[329],{"categories":3315},[269],{"categories":3317},[305],{"categories":3319},[308],{"categories":3321},[302],{"categories":3323},[621],{"categories":3325},[302],{"categories":3327},[],{"categories":3329},[],{"categories":3331},[329],{"categories":3333},[],{"categories":3335},[311],{"categories":3337},[311],{"categories":3339},[311],{"categories":3341},[],{"categories":3343},[308],{"categories":3345},[],{"categories":3347},[329],{"categories":3349},[302],{"categories":3351},[350],{"categories":3353},[308],{"categories":3355},[329],{"categories":3357},[329],{"categories":3359},[],{"categories":3361},[329],{"categories":3363},[302],{"categories":3365},[308],{"categories":3367},[],{"categories":3369},[311],{"categories":3371},[311],{"categories":3373},[302],{"categories":3375},[],{"categories":3377},[],{"categories":3379},[],{"categories":3381},[350],{"categories":3383},[311],{"categories":3385},[308],{"categories":3387},[],{"categories":3389},[],{"categories":3391},[],{"categories":3393},[350],{"categories":3395},[],{"categories":3397},[302],{"categories":3399},[],{"categories":3401},[],{"categories":3403},[350],{"categories":3405},[308],{"categories":3407},[329],{"categories":3409},[],{"categories":3411},[366],{"categories":3413},[329],{"categories":3415},[366],{"categories":3417},[308],{"categories":3419},[],{"categories":3421},[],{"categories":3423},[311],{"categories":3425},[],{"categories":3427},[],{"categories":3429},[311],{"categories":3431},[308],{"categories":3433},[],{"categories":3435},[311],{"categories":3437},[329],{"categories":3439},[366],{"categories":3441},[353],{"categories":3443},[311],{"categories":3445},[311],{"categories":3447},[],{"categories":3449},[],{"categories":3451},[],{"categories":3453},[329],{"categories":3455},[],{"categories":3457},[],{"categories":3459},[350],{"categories":3461},[302],{"categories":3463},[],{"categories":3465},[305],{"categories":3467},[366],{"categories":3469},[308],{"categories":3471},[269],{"categories":3473},[302],{"categories":3475},[353],{"categories":3477},[305],{"categories":3479},[269],{"categories":3481},[],{"categories":3483},[],{"categories":3485},[311],{"categories":3487},[302],{"categories":3489},[350],{"categories":3491},[302],{"categories":3493},[311],{"categories":3495},[621],{"categories":3497},[311],{"categories":3499},[],{"categories":3501},[308],{"categories":3503},[329],{"categories":3505},[269],{"categories":3507},[],{"categories":3509},[350],{"categories":3511},[329],{"categories":3513},[302],{"categories":3515},[311],{"categories":3517},[308],{"categories":3519},[305],{"categories":3521},[311,621],{"categories":3523},[311],{"categories":3525},[269],{"categories":3527},[308],{"categories":3529},[353],{"categories":3531},[366],{"categories":3533},[311],{"categories":3535},[],{"categories":3537},[311],{"categories":3539},[308],{"categories":3541},[305],{"categories":3543},[],{"categories":3545},[],{"categories":3547},[308],{"categories":3549},[353],{"categories":3551},[308],{"categories":3553},[],{"categories":3555},[329],{"categories":3557},[],{"categories":3559},[329],{"categories":3561},[269],{"categories":3563},[311],{"categories":3565},[308],{"categories":3567},[366],{"categories":3569},[269],{"categories":3571},[],{"categories":3573},[329],{"categories":3575},[308],{"categories":3577},[],{"categories":3579},[308],{"categories":3581},[311],{"categories":3583},[308],{"categories":3585},[311],{"categories":3587},[308],{"categories":3589},[308],{"categories":3591},[308],{"categories":3593},[308],{"categories":3595},[305],{"categories":3597},[],{"categories":3599},[314],{"categories":3601},[329],{"categories":3603},[308],{"categories":3605},[],{"categories":3607},[269],{"categories":3609},[308],{"categories":3611},[308],{"categories":3613},[311],{"categories":3615},[329],{"categories":3617},[308],{"categories":3619},[308],{"categories":3621},[305],{"categories":3623},[311],{"categories":3625},[350],{"categories":3627},[],{"categories":3629},[353],{"categories":3631},[308],{"categories":3633},[],{"categories":3635},[329],{"categories":3637},[366],{"categories":3639},[],{"categories":3641},[],{"categories":3643},[329],{"categories":3645},[329],{"categories":3647},[366],{"categories":3649},[302],{"categories":3651},[311],{"categories":3653},[311],{"categories":3655},[308],{"categories":3657},[305],{"categories":3659},[],{"categories":3661},[],{"categories":3663},[329],{"categories":3665},[353],{"categories":3667},[269],{"categories":3669},[311],{"categories":3671},[350],{"categories":3673},[353],{"categories":3675},[353],{"categories":3677},[],{"categories":3679},[329],{"categories":3681},[308],{"categories":3683},[308],{"categories":3685},[269],{"categories":3687},[],{"categories":3689},[329],{"categories":3691},[329],{"categories":3693},[329],{"categories":3695},[],{"categories":3697},[311],{"categories":3699},[308],{"categories":3701},[],{"categories":3703},[302],{"categories":3705},[305],{"categories":3707},[],{"categories":3709},[308],{"categories":3711},[308],{"categories":3713},[],{"categories":3715},[269],{"categories":3717},[],{"categories":3719},[],{"categories":3721},[],{"categories":3723},[],{"categories":3725},[308],{"categories":3727},[329],{"categories":3729},[],{"categories":3731},[],{"categories":3733},[308],{"categories":3735},[308],{"categories":3737},[308],{"categories":3739},[353],{"categories":3741},[308],{"categories":3743},[353],{"categories":3745},[],{"categories":3747},[353],{"categories":3749},[353],{"categories":3751},[621],{"categories":3753},[311],{"categories":3755},[269],{"categories":3757},[],{"categories":3759},[],{"categories":3761},[353],{"categories":3763},[269],{"categories":3765},[269],{"categories":3767},[269],{"categories":3769},[],{"categories":3771},[302],{"categories":3773},[269],{"categories":3775},[269],{"categories":3777},[302],{"categories":3779},[269],{"categories":3781},[305],{"categories":3783},[269],{"categories":3785},[269],{"categories":3787},[269],{"categories":3789},[353],{"categories":3791},[329],{"categories":3793},[329],{"categories":3795},[308],{"categories":3797},[269],{"categories":3799},[353],{"categories":3801},[621],{"categories":3803},[353],{"categories":3805},[353],{"categories":3807},[353],{"categories":3809},[],{"categories":3811},[305],{"categories":3813},[],{"categories":3815},[621],{"categories":3817},[269],{"categories":3819},[269],{"categories":3821},[269],{"categories":3823},[311],{"categories":3825},[329,305],{"categories":3827},[353],{"categories":3829},[],{"categories":3831},[],{"categories":3833},[353],{"categories":3835},[],{"categories":3837},[353],{"categories":3839},[329],{"categories":3841},[311],{"categories":3843},[],{"categories":3845},[269],{"categories":3847},[308],{"categories":3849},[350],{"categories":3851},[],{"categories":3853},[308],{"categories":3855},[],{"categories":3857},[329],{"categories":3859},[302],{"categories":3861},[353],{"categories":3863},[],{"categories":3865},[269],{"categories":3867},[329],[3869,4109,4280,4345],{"id":3870,"title":3871,"ai":3872,"body":3877,"categories":4094,"created_at":270,"date_modified":270,"description":31,"extension":271,"faq":270,"featured":272,"kicker_label":270,"meta":4095,"navigation":282,"path":4096,"published_at":4097,"question":270,"scraped_at":270,"seo":4098,"sitemap":4099,"source_id":4100,"source_name":4101,"source_type":289,"source_url":4102,"stem":4103,"tags":4104,"thumbnail_url":270,"tldr":4106,"tweet":270,"unknown_tags":4107,"__hash__":4108},"summaries\u002Fsummaries\u002Fbatch-gemms-for-fast-lstm-in-torch-summary.md","Batch GEMMs for Fast LSTM in Torch",{"provider":7,"model":8,"input_tokens":3873,"output_tokens":3874,"processing_time_ms":3875,"cost_usd":3876},4084,1694,14015,0.00164115,{"type":14,"value":3878,"toc":4089},[3879,3883,3886,3897,3901,3904,3949,3952,4076,4080,4087],[17,3880,3882],{"id":3881},"batch-gemms-to-cut-lstm-overhead","Batch GEMMs to Cut LSTM Overhead",[22,3884,3885],{},"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,3887,3888,3889,3892,3893,3896],{},"Usage: ",[33,3890,3891],{},"m = LSTM.fast_lstm(input_size, rnn_size)"," returns gModule({x, prev_c, prev_h}, {next_c, next_h}). Feed sequences by unrolling: ",[33,3894,3895],{},"for t=1,T do h,c = m:forward({x[t], c, h}) end",".",[17,3898,3900],{"id":3899},"gate-computation-graph","Gate Computation Graph",[22,3902,3903],{},"Builds nn.gModule with:",[3905,3906,3907,3922,3929,3936,3943],"ul",{},[3908,3909,3910,3913,3914,3917,3918,3921],"li",{},[33,3911,3912],{},"i2h = nn.Linear(input_size, 4*rnn_size)(x)"," + ",[33,3915,3916],{},"h2h = nn.Linear(rnn_size, 4*rnn_size)(prev_h)"," → ",[33,3919,3920],{},"all_input_sums = nn.CAddTable()({i2h, h2h})"," (batched gates).",[3908,3923,3924,3925,3928],{},"Sigmoid chunk: ",[33,3926,3927],{},"nn.Narrow(2,1,3*rnn_size)(all_input_sums)"," → gates i,f,o.",[3908,3930,3931,3932,3935],{},"Input transform: ",[33,3933,3934],{},"nn.Narrow(2,3*rnn_size+1,rnn_size)(all_input_sums)"," → tanh(c~).",[3908,3937,3938,3939,3942],{},"Cell: ",[33,3940,3941],{},"next_c = forget_gate ⊙ prev_c + in_gate ⊙ c~"," (CMulTable + CAddTable).",[3908,3944,3945,3946,3896],{},"Hidden: ",[33,3947,3948],{},"next_h = out_gate ⊙ tanh(next_c)",[22,3950,3951],{},"Full code:",[26,3953,3957],{"className":3954,"code":3955,"language":3956,"meta":31,"style":31},"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",[33,3958,3959,3964,3969,3974,3979,3984,3989,3994,3999,4004,4010,4016,4022,4028,4034,4040,4046,4052,4058,4064,4070],{"__ignoreMap":31},[36,3960,3961],{"class":38,"line":39},[36,3962,3963],{},"function LSTM.fast_lstm(input_size, rnn_size)\n",[36,3965,3966],{"class":38,"line":45},[36,3967,3968],{},"  local x = nn.Identity()()\n",[36,3970,3971],{"class":38,"line":51},[36,3972,3973],{},"  local prev_c = nn.Identity()()\n",[36,3975,3976],{"class":38,"line":57},[36,3977,3978],{},"  local prev_h = nn.Identity()()\n",[36,3980,3981],{"class":38,"line":63},[36,3982,3983],{},"  local i2h = nn.Linear(input_size, 4 * rnn_size)(x)\n",[36,3985,3986],{"class":38,"line":117},[36,3987,3988],{},"  local h2h = nn.Linear(rnn_size, 4 * rnn_size)(prev_h)\n",[36,3990,3991],{"class":38,"line":123},[36,3992,3993],{},"  local all_input_sums = nn.CAddTable()({i2h, h2h})\n",[36,3995,3996],{"class":38,"line":129},[36,3997,3998],{},"  local sigmoid_chunk = nn.Narrow(2, 1, 3 * rnn_size)(all_input_sums)\n",[36,4000,4001],{"class":38,"line":238},[36,4002,4003],{},"  sigmoid_chunk = nn.Sigmoid()(sigmoid_chunk)\n",[36,4005,4007],{"class":38,"line":4006},10,[36,4008,4009],{},"  local in_gate = nn.Narrow(2, 1, rnn_size)(sigmoid_chunk)\n",[36,4011,4013],{"class":38,"line":4012},11,[36,4014,4015],{},"  local forget_gate = nn.Narrow(2, rnn_size + 1, rnn_size)(sigmoid_chunk)\n",[36,4017,4019],{"class":38,"line":4018},12,[36,4020,4021],{},"  local out_gate = nn.Narrow(2, 2 * rnn_size + 1, rnn_size)(sigmoid_chunk)\n",[36,4023,4025],{"class":38,"line":4024},13,[36,4026,4027],{},"  local in_transform = nn.Narrow(2, 3 * rnn_size + 1, rnn_size)(all_input_sums)\n",[36,4029,4031],{"class":38,"line":4030},14,[36,4032,4033],{},"  in_transform = nn.Tanh()(in_transform)\n",[36,4035,4037],{"class":38,"line":4036},15,[36,4038,4039],{},"  local next_c = nn.CAddTable()({\n",[36,4041,4043],{"class":38,"line":4042},16,[36,4044,4045],{},"    nn.CMulTable()({forget_gate, prev_c}),\n",[36,4047,4049],{"class":38,"line":4048},17,[36,4050,4051],{},"    nn.CMulTable()({in_gate, in_transform})\n",[36,4053,4055],{"class":38,"line":4054},18,[36,4056,4057],{},"  })\n",[36,4059,4061],{"class":38,"line":4060},19,[36,4062,4063],{},"  local next_h = nn.CMulTable()({out_gate, nn.Tanh()(next_c)})\n",[36,4065,4067],{"class":38,"line":4066},20,[36,4068,4069],{},"  return nn.gModule({x, prev_c, prev_h}, {next_c, next_h})\n",[36,4071,4073],{"class":38,"line":4072},21,[36,4074,4075],{},"end\n",[17,4077,4079],{"id":4078},"production-notes","Production Notes",[22,4081,4082,4083,4086],{},"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 ",[33,4084,4085],{},"bias=False"," + fused CUDA kernels (faster still). Port to Flux.jl or JAX for today, but graph fusion principle endures for custom RNNs.",[259,4088,261],{},{"title":31,"searchDepth":45,"depth":45,"links":4090},[4091,4092,4093],{"id":3881,"depth":45,"text":3882},{"id":3899,"depth":45,"text":3900},{"id":4078,"depth":45,"text":4079},[269],{},"\u002Fsummaries\u002Fbatch-gemms-for-fast-lstm-in-torch-summary","2026-04-08 21:21:20",{"title":3871,"description":31},{"loc":4096},"787da8618ae52246","Andrej Karpathy Gists","https:\u002F\u002Funknown","summaries\u002Fbatch-gemms-for-fast-lstm-in-torch-summary",[294,4105,293],"deep-learning","Fuse LSTM operations into nngraph module to batch 4 GEMMs, slashing overhead vs standard nn.LSTM (optimized by @jcjohnson).",[],"sB5VUvtL1vpsXKZbRH6Tr09LD-FOtuL5SeiLauwvqEI",{"id":4110,"title":4111,"ai":4112,"body":4117,"categories":4260,"created_at":270,"date_modified":270,"description":31,"extension":271,"faq":270,"featured":272,"kicker_label":270,"meta":4261,"navigation":282,"path":4268,"published_at":270,"question":270,"scraped_at":4269,"seo":4270,"sitemap":4271,"source_id":4272,"source_name":288,"source_type":289,"source_url":4273,"stem":4274,"tags":4275,"thumbnail_url":270,"tldr":4277,"tweet":270,"unknown_tags":4278,"__hash__":4279},"summaries\u002Fsummaries\u002Fe2dbc9dc07c07f2d-ios-vision-api-demo-on-device-ocr-poses-barcodes-summary.md","iOS Vision API Demo: On-Device OCR, Poses, Barcodes",{"provider":7,"model":8,"input_tokens":4113,"output_tokens":4114,"processing_time_ms":4115,"cost_usd":4116},4523,1622,7742,0.00169295,{"type":14,"value":4118,"toc":4255},[4119,4123,4126,4170,4188,4192,4195,4203,4210,4214,4221,4248],[17,4120,4122],{"id":4121},"implement-four-core-vision-features-on-device","Implement Four Core Vision Features On-Device",[22,4124,4125],{},"Build privacy-focused computer vision apps by integrating Apple's Vision framework directly into iOS. The demo processes images from camera or photo library entirely on-device for speed and data security. Key implementations:",[3905,4127,4128,4141,4151,4161],{},[3908,4129,4130,4133,4134,4137,4138,3896],{},[81,4131,4132],{},"Text Recognition (OCR)",": Use ",[33,4135,4136],{},"VNRecognizeTextRequest"," to extract text with confidence scores, visualized in SwiftUI Charts via ",[33,4139,4140],{},"ConfidenceChart.swift",[3908,4142,4143,4146,4147,4150],{},[81,4144,4145],{},"Rectangle Detection",": Configure ",[33,4148,4149],{},"VNDetectRectanglesRequest"," to identify rectangular shapes in real-time.",[3908,4152,4153,4156,4157,4160],{},[81,4154,4155],{},"Human Body Pose Detection",": Track joints with ",[33,4158,4159],{},"VNDetectHumanBodyPoseRequest",", rendering poses on detected bodies.",[3908,4162,4163,4166,4167,3896],{},[81,4164,4165],{},"Barcode Detection",": Scan multiple formats using ",[33,4168,4169],{},"VNDetectBarcodesRequest",[22,4171,4172,4173,4176,4177,4180,4181,4176,4184,4187],{},"All features handle live camera feeds or static images through ",[33,4174,4175],{},"CameraService.swift"," and ",[33,4178,4179],{},"VisionService.swift",", requesting ",[33,4182,4183],{},"NSCameraUsageDescription",[33,4185,4186],{},"NSPhotoLibraryUsageDescription"," permissions only when needed.",[17,4189,4191],{"id":4190},"mvvm-architecture-for-scalable-vision-apps","MVVM Architecture for Scalable Vision Apps",[22,4193,4194],{},"Structure your Vision-powered iOS app with clean separation:",[26,4196,4201],{"className":4197,"code":4199,"language":4200},[4198],"language-text","MyVisionAPI\u002F\n├── Models\u002FVisionModels.swift  # Results data\n├── Services\u002F\n│   ├── VisionService.swift    # API requests\n│   └── CameraService.swift    # Input handling\n├── Views\u002F\n│   ├── WelcomeView.swift\n│   ├── ConfidenceChart.swift\n│   ├── TextRecognitionView.swift\n│   ├── RectangleDetectionView.swift\n│   ├── BodyPoseView.swift\n│   └── BarcodeDetectionView.swift\n├── ContentView.swift          # Tab navigation\n└── MyVisionAPIApp.swift       # Entry point\n","text",[33,4202,4199],{"__ignoreMap":31},[22,4204,4205,4206,4209],{},"This setup isolates Vision logic in services, keeps views declarative with SwiftUI, and uses models for structured outputs. Configure app signing in Xcode for ",[33,4207,4208],{},"MyVisionAPI.entitlements"," and build with Cmd+R.",[17,4211,4213],{"id":4212},"quick-setup-and-testing-workflow","Quick Setup and Testing Workflow",[22,4215,4216,4217,4220],{},"Clone repo, open in Xcode, select signing team for ",[33,4218,4219],{},"MyVisionAPI"," target, then run. Test via tabbed interface:",[4222,4223,4224,4230,4236,4242],"ol",{},[3908,4225,4226,4229],{},[81,4227,4228],{},"Text",": Pick image\u002Fcamera, view extracted text and confidence chart.",[3908,4231,4232,4235],{},[81,4233,4234],{},"Rectangles",": Detect and overlay bounding boxes.",[3908,4237,4238,4241],{},[81,4239,4240],{},"Poses",": Pose estimation on human figures.",[3908,4243,4244,4247],{},[81,4245,4246],{},"Barcodes",": Decode payloads instantly.",[22,4249,4250,4251,4254],{},"Troubleshoot builds with Cmd+Shift+K clean; check console for runtime errors. Performance stays smooth on-device. Contribute by branching ",[33,4252,4253],{},"git checkout -b feature\u002Fname",", committing, and pushing—MIT licensed.",{"title":31,"searchDepth":45,"depth":45,"links":4256},[4257,4258,4259],{"id":4121,"depth":45,"text":4122},{"id":4190,"depth":45,"text":4191},{"id":4212,"depth":45,"text":4213},[269],{"content_references":4262,"triage":4266},[4263],{"type":4264,"title":4265,"context":278},"other","How I Taught My iPhone to 'See' Like a Human: A Deep Dive into Apple's Vision API",{"relevance":57,"novelty":51,"quality":57,"actionability":57,"composite":280,"reasoning":4267},"Category: AI & LLMs. The article provides a practical guide to implementing on-device computer vision features using Apple's Vision framework, addressing the audience's need for actionable content. It includes specific implementation details and a structured approach using MVVM architecture, making it relevant for developers looking to integrate AI capabilities into their apps.","\u002Fsummaries\u002Fe2dbc9dc07c07f2d-ios-vision-api-demo-on-device-ocr-poses-barcodes-summary","2026-04-16 02:56:08",{"title":4111,"description":31},{"loc":4268},"e2dbc9dc07c07f2d","https:\u002F\u002Fgithub.com\u002Fsanjaynela\u002FvisionApiProject","summaries\u002Fe2dbc9dc07c07f2d-ios-vision-api-demo-on-device-ocr-poses-barcodes-summary",[4276,294,293],"ai-tools","Clone this SwiftUI iOS app to test Apple's Vision framework locally for text recognition, rectangle detection, body pose tracking, and barcode scanning using MVVM architecture—no cloud needed.",[],"PaLBCnVSdHjnglY9MQuInhExt7WzNiZ_A5ENUBp7XRI",{"id":4281,"title":4282,"ai":4283,"body":4288,"categories":4319,"created_at":270,"date_modified":270,"description":31,"extension":271,"faq":270,"featured":272,"kicker_label":270,"meta":4320,"navigation":282,"path":4332,"published_at":4333,"question":270,"scraped_at":4334,"seo":4335,"sitemap":4336,"source_id":4337,"source_name":4338,"source_type":289,"source_url":4339,"stem":4340,"tags":4341,"thumbnail_url":270,"tldr":4342,"tweet":270,"unknown_tags":4343,"__hash__":4344},"summaries\u002Fsummaries\u002F1772ede214d531cd-triple-yolo-recall-with-adaptive-post-processing-summary.md","Triple YOLO Recall with Adaptive Post-Processing",{"provider":7,"model":8,"input_tokens":4284,"output_tokens":4285,"processing_time_ms":4286,"cost_usd":4287},5637,1521,18506,0.00138105,{"type":14,"value":4289,"toc":4314},[4290,4294,4297,4300,4304,4307,4311],[17,4291,4293],{"id":4292},"adaptive-thresholds-unlock-small-object-detections","Adaptive Thresholds Unlock Small-Object Detections",[22,4295,4296],{},"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,4298,4299],{},"Trade-off: Lower thresholds increase false positives, so compensate with evidence-based validation instead of data-driven retraining or heavy models like SAHI.",[17,4301,4303],{"id":4302},"keypoint-rescue-validates-borderline-boxes","Keypoint Rescue Validates Borderline Boxes",[22,4305,4306],{},"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,4308,4310],{"id":4309},"scene-specific-limits-and-extensions","Scene-Specific Limits and Extensions",[22,4312,4313],{},"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":31,"searchDepth":45,"depth":45,"links":4315},[4316,4317,4318],{"id":4292,"depth":45,"text":4293},{"id":4302,"depth":45,"text":4303},{"id":4309,"depth":45,"text":4310},[353],{"content_references":4321,"triage":4329},[4322,4324,4327],{"type":276,"title":4323,"context":278},"SAHI (Slicing Aided Hyper Inference)",{"type":4325,"title":4326,"context":278},"dataset","COCO",{"type":4264,"title":4328,"context":278},"yolov8n-pose",{"relevance":51,"novelty":51,"quality":57,"actionability":51,"composite":4330,"reasoning":4331},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.","\u002Fsummaries\u002F1772ede214d531cd-triple-yolo-recall-with-adaptive-post-processing-summary","2026-05-07 04:26:37","2026-05-07 11:23:53",{"title":4282,"description":31},{"loc":4332},"1772ede214d531cd","Towards AI","https:\u002F\u002Fpub.towardsai.net\u002Fi-tripled-my-yolo-detection-without-retraining-08c6a17f51e7?source=rss----98111c9905da---4","summaries\u002F1772ede214d531cd-triple-yolo-recall-with-adaptive-post-processing-summary",[294,4105,293],"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.",[],"wF2bhdVyrwldriP36Cs8RBkWabBeqX8VHJNxzVmQs-s",{"id":4346,"title":4347,"ai":4348,"body":4353,"categories":4603,"created_at":270,"date_modified":270,"description":31,"extension":271,"faq":270,"featured":272,"kicker_label":270,"meta":4604,"navigation":282,"path":4611,"published_at":4612,"question":270,"scraped_at":4613,"seo":4614,"sitemap":4615,"source_id":4616,"source_name":4617,"source_type":289,"source_url":4618,"stem":4619,"tags":4620,"thumbnail_url":270,"tldr":4621,"tweet":270,"unknown_tags":4622,"__hash__":4623},"summaries\u002Fsummaries\u002Fe3a7d313e4f27d00-momentum-dampens-gd-zigzags-via-gradient-averaging-summary.md","Momentum Dampens GD Zigzags via Gradient Averaging",{"provider":7,"model":8,"input_tokens":4349,"output_tokens":4350,"processing_time_ms":4351,"cost_usd":4352},8869,1948,36530,0.0027253,{"type":14,"value":4354,"toc":4598},[4355,4359,4375,4378,4425,4428,4432,4438,4446,4449,4499,4502,4506,4513,4589,4596],[17,4356,4358],{"id":4357},"anisotropic-surfaces-force-gd-zigzags","Anisotropic Surfaces Force GD Zigzags",[22,4360,4361,4362,4365,4366,4370,4371,4374],{},"Real-world loss surfaces often have uneven curvature—flat in one direction (e.g., 0.05 x²) and steep in another (e.g., 5 y²)—yielding a Hessian with eigenvalues 0.1 and 10 (condition number 100). Gradients are ",[36,4363,4364],{},"0.1x, 10y",". With learning rate lr=0.18 (near stability limit 2\u002Fλ_max=0.2), steep direction factor |1-10",[4367,4368,4369],"em",{},"0.18|=0.8 causes 20% overshoot per step (oscillations), while flat direction |1-0.1","0.18|=0.982 advances just 1.8% (near-stagnation). Starting at ",[36,4372,4373],{},"-4,1.5",", vanilla GD: θ ← θ - lr ∇L(θ) zigzags slowly, hitting loss\u003C0.001 in 185 steps (final loss 1.5e-5 after 300 steps).",[22,4376,4377],{},"Implement as:",[26,4379,4383],{"className":4380,"code":4381,"language":4382,"meta":31,"style":31},"language-python shiki shiki-themes github-light github-dark","def grad(x, y): return np.array([0.1 * x, 10 * y])\ndef gradient_descent(start, lr, steps=300):\n    path = [np.array(start, dtype=float)]\n    pos = np.array(start, dtype=float)\n    for _ in range(steps):\n        pos = pos - lr * grad(*pos)\n        path.append(pos.copy())\n    return np.array(path)\n","python",[33,4384,4385,4390,4395,4400,4405,4410,4415,4420],{"__ignoreMap":31},[36,4386,4387],{"class":38,"line":39},[36,4388,4389],{},"def grad(x, y): return np.array([0.1 * x, 10 * y])\n",[36,4391,4392],{"class":38,"line":45},[36,4393,4394],{},"def gradient_descent(start, lr, steps=300):\n",[36,4396,4397],{"class":38,"line":51},[36,4398,4399],{},"    path = [np.array(start, dtype=float)]\n",[36,4401,4402],{"class":38,"line":57},[36,4403,4404],{},"    pos = np.array(start, dtype=float)\n",[36,4406,4407],{"class":38,"line":63},[36,4408,4409],{},"    for _ in range(steps):\n",[36,4411,4412],{"class":38,"line":117},[36,4413,4414],{},"        pos = pos - lr * grad(*pos)\n",[36,4416,4417],{"class":38,"line":123},[36,4418,4419],{},"        path.append(pos.copy())\n",[36,4421,4422],{"class":38,"line":129},[36,4423,4424],{},"    return np.array(path)\n",[22,4426,4427],{},"High lr speeds flat progress but oscillates steep; low lr stabilizes but crawls flat—core GD trade-off.",[17,4429,4431],{"id":4430},"momentum-velocity-cancels-oscillations-builds-speed","Momentum Velocity Cancels Oscillations, Builds Speed",[22,4433,4434,4435,4437],{},"Momentum tracks velocity v (exponential moving average of gradients): v ← β v + (1-β) ∇L(θ); θ ← θ - lr v. Consistent gradients (flat direction) accumulate for larger steps; opposing gradients (steep oscillations) cancel, damping zigzags. From ",[36,4436,4373],{}," with lr=0.18:",[3905,4439,4440,4443],{},[3908,4441,4442],{},"β=0.9: smooth path, loss\u003C0.001 in 159 steps (final 1e-6).",[3908,4444,4445],{},"β=0.99: excessive accumulation overshoots, final loss 0.487 (circles minimum).",[22,4447,4448],{},"Code:",[26,4450,4452],{"className":4380,"code":4451,"language":4382,"meta":31,"style":31},"def momentum_gd(start, lr, beta, steps=300):\n    path = [np.array(start, dtype=float)]\n    pos = np.array(start, dtype=float)\n    v = np.zeros(2)\n    for _ in range(steps):\n        g = grad(*pos)\n        v = beta * v + (1 - beta) * g\n        pos = pos - lr * v\n        path.append(pos.copy())\n    return np.array(path)\n",[33,4453,4454,4459,4463,4467,4472,4476,4481,4486,4491,4495],{"__ignoreMap":31},[36,4455,4456],{"class":38,"line":39},[36,4457,4458],{},"def momentum_gd(start, lr, beta, steps=300):\n",[36,4460,4461],{"class":38,"line":45},[36,4462,4399],{},[36,4464,4465],{"class":38,"line":51},[36,4466,4404],{},[36,4468,4469],{"class":38,"line":57},[36,4470,4471],{},"    v = np.zeros(2)\n",[36,4473,4474],{"class":38,"line":63},[36,4475,4409],{},[36,4477,4478],{"class":38,"line":117},[36,4479,4480],{},"        g = grad(*pos)\n",[36,4482,4483],{"class":38,"line":123},[36,4484,4485],{},"        v = beta * v + (1 - beta) * g\n",[36,4487,4488],{"class":38,"line":129},[36,4489,4490],{},"        pos = pos - lr * v\n",[36,4492,4493],{"class":38,"line":238},[36,4494,4419],{},[36,4496,4497],{"class":38,"line":4006},[36,4498,4424],{},[22,4500,4501],{},"β weights history: β→0 mimics GD; β=0.9 balances smoothing\u002Fspeed; β→1 risks divergence.",[17,4503,4505],{"id":4504},"β-tuning-via-convergence-sweep","β Tuning via Convergence Sweep",[22,4507,4508,4509,4512],{},"Sweep β=",[36,4510,4511],{},"0.0,0.5,0.7,0.85,0.90,0.95,0.99"," to loss\u003C0.001 (max 500 steps):",[4514,4515,4516,4529],"table",{},[4517,4518,4519],"thead",{},[4520,4521,4522,4526],"tr",{},[4523,4524,4525],"th",{},"β",[4523,4527,4528],{},"Steps to converge",[4530,4531,4532,4541,4549,4557,4565,4573,4581],"tbody",{},[4520,4533,4534,4538],{},[4535,4536,4537],"td",{},"0.00",[4535,4539,4540],{},"185 (vanilla GD)",[4520,4542,4543,4546],{},[4535,4544,4545],{},"0.50",[4535,4547,4548],{},"170",[4520,4550,4551,4554],{},[4535,4552,4553],{},"0.70",[4535,4555,4556],{},"165",[4520,4558,4559,4562],{},[4535,4560,4561],{},"0.85",[4535,4563,4564],{},"161",[4520,4566,4567,4570],{},[4535,4568,4569],{},"0.90",[4535,4571,4572],{},"159 (sweet spot)",[4520,4574,4575,4578],{},[4535,4576,4577],{},"0.95",[4535,4579,4580],{},"158",[4520,4582,4583,4586],{},[4535,4584,4585],{},"0.99",[4535,4587,4588],{},">500 (diverges)",[22,4590,4591,4592,4595],{},"Inverted U: β=0.9-0.95 optimal (faster by ~15-20% vs GD); too high prioritizes stale velocity. Visualize trajectories (first 55 steps on contours) and log-loss curves confirm: GD slow\u002Foscillatory, good β direct\u002Ffast, high β bouncy\u002Ffailed. Loss surface: def loss(x,y): return 0.05",[4367,4593,4594],{},"x**2 + 5","y**2.",[259,4597,261],{},{"title":31,"searchDepth":45,"depth":45,"links":4599},[4600,4601,4602],{"id":4357,"depth":45,"text":4358},{"id":4430,"depth":45,"text":4431},{"id":4504,"depth":45,"text":4505},[353],{"content_references":4605,"triage":4609},[4606],{"type":4264,"title":4607,"url":4608,"context":278},"Momentum_Gradient_Descent.ipynb","https:\u002F\u002Fgithub.com\u002FMarktechpost\u002FAI-Agents-Projects-Tutorials\u002Fblob\u002Fmain\u002FData%20Science\u002FMomentum_Gradient_Descent.ipynb",{"relevance":57,"novelty":51,"quality":57,"actionability":57,"composite":280,"reasoning":4610},"Category: AI & LLMs. The article discusses gradient descent and momentum in machine learning, addressing practical concerns about convergence speed and oscillations, which are relevant to AI developers. It provides actionable Python code examples for implementing gradient descent and momentum, making it useful for practitioners.","\u002Fsummaries\u002Fe3a7d313e4f27d00-momentum-dampens-gd-zigzags-via-gradient-averaging-summary","2026-05-05 07:26:29","2026-05-05 16:09:53",{"title":4347,"description":31},{"loc":4611},"e3a7d313e4f27d00","MarkTechPost","https:\u002F\u002Fwww.marktechpost.com\u002F2026\u002F05\u002F05\u002Fwhy-gradient-descent-zigzags-and-how-momentum-fixes-it\u002F","summaries\u002Fe3a7d313e4f27d00-momentum-dampens-gd-zigzags-via-gradient-averaging-summary",[294,4382,295],"On anisotropic loss surfaces (condition number 100), vanilla GD zigzags and takes 185 steps to converge (loss \u003C0.001); momentum with β=0.9 converges in 159 steps by canceling steep-direction oscillations while accelerating flat directions—but β=0.99 diverges.",[],"XRkn18Lid7OsOHXT1dP1s2Nh4f4rEKAHvOL4X3Y6phw"]