کتابخانه‌ی استاندارد · هوش مصنوعی

مشتق‌گیری خودکار ai.autograd

مشتق‌گیری خودکار معکوس برای آموزش مدل‌ها.

واردسازی هوش مصنوعی.مشتق‌گیری خودکار

نام آرگومان‌ها شناسه‌ی خود کد است و معادل فارسی ندارد؛ گونه‌ها، کلیدواژه‌ها و نام بسته‌ها با معادل فارسی نوشته می‌شوند.

آموزش مدل یعنی کم کردن زیان با گرادیان. این بسته هر محاسبه را روی یک نوار ثبت می‌کند و پس‌انتشار گرادیان زیان را برای همه‌ی ورودی‌ها حساب می‌کند. تابع‌ها به جای تانسور، شماره‌ی گره برمی‌گردانند؛ مقدار را با مقدار و گرادیان را با گرادیان بخوانید.

برای زیان سفارشی، لایه‌ی تازه یا هر تابعی که شیبش را لازم دارید مستقیم از این بسته استفاده کنید. برای شبکه‌های معمولی، لایه‌های آماده در شبکه عصبی و بهینه‌سازها در بهینه‌سازی هستند که هر دو روی همین بسته ساخته شده‌اند. خود مقدارها تانسور هستند.

اشتباه‌های رایج

  • در آغاز هر گام نوار را بازنشانی کنید. این کار هر مقدار و گرادیانی را که نوار ساخته آزاد می‌کند، پس تانسوری که از مقدار یا گرادیان گرفته‌اید پس از آن از بین رفته است؛ اگر لازمش دارید پیش از آن با تانسور.همانند نگهش دارید.
  • ورودی، پایش و پارامتر رونوشت نمی‌گیرند: نوار خود تانسور شما را می‌خواند، پس پیش از پس‌انتشار آن را تغییر ندهید و آزاد نکنید. ثابت رونوشت می‌گیرد.
  • گرادیان‌ها به تانسورهایی که به پارامتر می‌دهید افزوده می‌شوند، هیچ‌وقت جایگزین نمی‌شوند. در هر گام صفرشان کنید.
  • پس‌انتشار روی زیانی که بیش از یک مقدار دارد، آن را مجموع مقدارهایش در نظر می‌گیرد.
  • هنگام ارزیابی مدل نوار.training = نادرست بگذارید: آن‌وقت حذف تصادفی کاری نمی‌کند و نرمال‌سازی دسته از میانگین‌های جاری‌اش استفاده می‌کند. عددی که به نوار جدید می‌دهید بذر عددهای تصادفی حذف تصادفی است.

مشتق بی حساب و کتاب دستی

تانسوری را با پایش به نوار بدهید، از آن عبارتی بسازید، و پس‌انتشار می‌گوید با تغییر هر ورودی نتیجه چقدر تغییر می‌کند. زیان باید یک عدد تنها باشد، پس برنامه پنج مقدار f(x) = x³ - 2x را جمع می‌زند؛ چون هر مقدار فقط به یک نقطه بستگی دارد، گرادیان مجموع همان شیب در هر نقطه است. ستون آخر شیبی است که با دست حساب شده، 3x² - 2، برای مقایسه.

autograd-guide-derivative.salam
واردسازی هوش مصنوعی.مشتق‌گیری خودکار
واردسازی هوش مصنوعی.تانسور

تابع ریشه:
    ناپایا نوار := مشتق‌گیری خودکار.نوار جدید(۱)
    ناپایا نقطه ها := وکتور {} برگردان وکتور<اعشار۳۲>
    هر م در [-۲.۰، -۱.۰، ۰.۰، ۱.۰، ۲.۰]:
        نقطه ها.بیفزا(م برگردان اعشار۳۲)
    پایان
    ناپایا شکل := تانسور.شکل یک(۵)
    ناپایا ایکس ها := تانسور.از آرایه(شکل، نقطه ها)
    ایکس := مشتق‌گیری خودکار.پایش(نوار، ایکس ها)
    مکعب := مشتق‌گیری خودکار.توان عددی(نوار، ایکس، ۳.۰)
    تابعک := مشتق‌گیری خودکار.تفریق(نوار، مکعب، مشتق‌گیری خودکار.مقیاس(نوار، ایکس، ۲.۰))
    مشتق‌گیری خودکار.پس‌انتشار(نوار، مشتق‌گیری خودکار.مجموع(نوار، تابعک))
    مقدارها := مشتق‌گیری خودکار.مقدار(نوار، تابعک)
    شیب ها := مشتق‌گیری خودکار.گرادیان(نوار، ایکس)
    تکرار ۵ در ی:
        نقطه := ایکس ها.عنصر(ی)
        سرچاپ "x ="، نقطه، "f ="، مقدارها.عنصر(ی)، "شیب ="، شیب ها.عنصر(ی)، "مورد انتظار"، ۳.۰ * نقطه * نقطه - ۲.۰
    پایان
    نوار.آزادسازی()
پایان
خروجیx = -2 f = -4 شیب = 10 مورد انتظار 10 x = -1 f = 1 شیب = 1 مورد انتظار 1 x = 0 f = 0 شیب = -2 مورد انتظار -2 x = 1 f = -1 شیب = 1 مورد انتظار 1 x = 2 f = 4 شیب = 10 مورد انتظار 10

حلقه‌ی آموزش: برازش یک خط

کل شکل آموزش در همین چند خط است. وزن‌ها بیرون از نوار زندگی می‌کنند و کنار هر کدام تانسور گرادیانی هم‌شکل آن است. هر گام نوار را با بازنشانی پاک می‌کند، گرادیان‌ها را صفر می‌کند، گذر رو به جلو را ضبط می‌کند (با پارامتر برای وزن‌ها، ورودی برای داده و ثابت برای هدف‌ها)، بعد پس‌انتشار را صدا می‌زند و هر وزن را با جمع مقیاس‌دار از بسته‌ی تانسور کمی خلاف گرادیانش جابه‌جا می‌کند.

autograd-guide-fit.salam
واردسازی هوش مصنوعی.مشتق‌گیری خودکار
واردسازی هوش مصنوعی.تانسور
واردسازی تبدیل

تابع ستون(مقدارها: اعشار۶۴[]): تانسور.تانسور:
    ناپایا داده := وکتور {} برگردان وکتور<اعشار۳۲>
    هر م در مقدارها:
        داده.بیفزا(م برگردان اعشار۳۲)
    پایان
    ناپایا شکل := تانسور.شکل دو(مقدارها.طول()، ۱)
    برگشت تانسور.از آرایه(شکل، داده)
پایان

تابع ریشه:
    ناپایا ایکس ها := ستون([۰.۰، ۱.۰، ۲.۰، ۳.۰، ۴.۰])
    ناپایا ایگرگ ها := ستون([۱.۱، ۲.۹، ۵.۲، ۶.۸، ۹.۱])
    ناپایا وزن := تانسور.صفرها دو(۱، ۱)
    ناپایا سوگیری := تانسور.صفرها دو(۱، ۱)
    ناپایا گرادیان وزن := تانسور.صفرها دو(۱، ۱)
    ناپایا گرادیان سوگیری := تانسور.صفرها دو(۱، ۱)
    ناپایا نوار := مشتق‌گیری خودکار.نوار جدید(۱)
    تکرار ۲۰۱ در گام:
        نوار.بازنشانی()
        تانسور.تنظیم همه(گرادیان وزن، ۰.۰)
        تانسور.تنظیم همه(گرادیان سوگیری، ۰.۰)
        گره وزن := مشتق‌گیری خودکار.پارامتر(نوار، وزن، گرادیان وزن)
        گره سوگیری := مشتق‌گیری خودکار.پارامتر(نوار، سوگیری، گرادیان سوگیری)
        حدس := مشتق‌گیری خودکار.جمع(نوار، مشتق‌گیری خودکار.ضرب ماتریسی(نوار، مشتق‌گیری خودکار.ورودی(نوار، ایکس ها)، گره وزن)، گره سوگیری)
        زیان := مشتق‌گیری خودکار.خطای میانگین مربعات(نوار، حدس، مشتق‌گیری خودکار.ثابت(نوار، ایگرگ ها))
        مشتق‌گیری خودکار.پس‌انتشار(نوار، زیان)
        تانسور.جمع مقیاس‌دار(وزن، گرادیان وزن، -۰.۰۲)
        تانسور.جمع مقیاس‌دار(سوگیری، گرادیان سوگیری، -۰.۰۲)
        اگر گام % ۵۰ == ۰:
            سرچاپ "گام"، گام، "زیان"، تبدیل.قالب اعشار با دقت(مشتق‌گیری خودکار.مقدار(نوار، زیان).عنصر(۰)، ۳)
        پایان
    پایان
    سرچاپ "y ="، تبدیل.قالب اعشار با دقت(وزن.عنصر(۰)، ۲)، "* x +"، تبدیل.قالب اعشار با دقت(سوگیری.عنصر(۰)، ۲)
    نوار.آزادسازی()
پایان
خروجیگام 0 زیان 33.142 گام 50 زیان 0.031 گام 100 زیان 0.024 گام 150 زیان 0.022 گام 200 زیان 0.022 y = 2.00 * x + 1.01

داده همان خط y = 2x + 1 با کمی نویز است و زیان به جای صفر شدن نزدیک اندازه‌ی نویز آرام می‌گیرد. اگر صفر کردن گرادیان‌ها را فراموش کنید، از گامی به گام بعد روی هم جمع می‌شوند و مثل نرخ یادگیری‌ای رفتار می‌کنند که مدام بزرگ‌تر می‌شود. وقتی حلقه کار کرد، بهینه‌سازی گام به‌روزرسانی و شبکه عصبی لایه‌ها را بر عهده می‌گیرند.

سنجش عددی گرادیان

بررسی گرادیان هر ورودی را به اندازه‌ی گام کوچک h تکان می‌دهد، تغییر یک تابع ساده از تانسور را اندازه می‌گیرد و آن را با گرادیانی که به آن داده‌اید مقایسه می‌کند. وقتی لایه یا تابع زیان تازه‌ای می‌نویسید از آن استفاده کنید: تابع را یک بار با عمل‌های تانسوری حساب کنید، گرادیان را با نوار، و ببینید با هم می‌خوانند یا نه. گرادیان نادرست، مثل گرادیان دو برابر شده در آزمون دوم، رد می‌شود.

autograd-guide-check.salam
واردسازی هوش مصنوعی.مشتق‌گیری خودکار
واردسازی هوش مصنوعی.تانسور

تابع جمع نرم‌مثبت(ت &: تانسور.تانسور): اعشار۶۴:
    برگشت تانسور.مجموع همه(تانسور.لگاریتم(تانسور.جمع با عدد(تانسور.نمایی(ت)، ۱.۰)))
پایان

تابع ریشه:
    ناپایا نقطه := تانسور.بازه گام(۴)
    تانسور.جمع عدد درجا(نقطه، -۱.۵)
    ناپایا نوار := مشتق‌گیری خودکار.نوار جدید(۱)
    ایکس := مشتق‌گیری خودکار.پایش(نوار، نقطه)
    ایگرگ := مشتق‌گیری خودکار.لگاریتم(نوار، مشتق‌گیری خودکار.جمع با عدد(نوار، مشتق‌گیری خودکار.نمایی(نوار، ایکس)، ۱.۰))
    مشتق‌گیری خودکار.پس‌انتشار(نوار، مشتق‌گیری خودکار.مجموع(نوار، ایگرگ))
    ناپایا از نوار := مشتق‌گیری خودکار.گرادیان(نوار، ایکس)
    سرچاپ "گرادیان نوار درست است:"، مشتق‌گیری خودکار.بررسی گرادیان((ت_in: تانسور.تانسور): ناپایا ت := ت_in برگشت جمع نرم‌مثبت(ت) پایان، نقطه، از نوار، ۰.۰۰۱، ۰.۰۱)
    ناپایا دوبرابر := تانسور.مقیاس(از نوار، ۲.۰)
    سرچاپ "گرادیان دو برابر درست است:"، مشتق‌گیری خودکار.بررسی گرادیان((ت_in: تانسور.تانسور): ناپایا ت := ت_in برگشت جمع نرم‌مثبت(ت) پایان، نقطه، دوبرابر، ۰.۰۰۱، ۰.۰۱)
    نوار.آزادسازی()
پایان
خروجیگرادیان نوار درست است: true گرادیان دو برابر درست است: false

مقایسه تقریبی است. گام خیلی کوچک در اعشاری ۳۲ بیتی دقتش را از دست می‌دهد و گام خیلی بزرگ خمیدگی را نمی‌بیند؛ 0.001 با رواداری 0.01 برای بیشتر تابع‌های هموار مناسب است.

کدام تابع ورودی را به کار ببریم

تانسورتابعگرادیان
وزن‌هایی که آموزش می‌دهیدپارامتربه تانسور گرادیانی که می‌دهید افزوده می‌شود
تانسوری که شیبش را می‌خواهیدپایشبا گرادیان خوانده می‌شود
داده‌ای که به مدل می‌دهیدورودیلازم نیست
هدف‌ها و عددهای ثابتثابتهرگز حساب نمی‌شود

گونه‌ها

گره Node

ساختار گره
یک گره در نوار.
نامانگلیسیگونهتوضیح
عملیاتopصحیح = 0عملیات.
ورودی نخستaصحیح = -1ورودی نخست.
ورودی دومbصحیح = -1ورودی دوم.
خروجیoutصحیح = -1خروجی.
داده کمکیauxصحیح = -1داده‌ی کمکی.
پارامتر صحیح نخستs0صحیح = 0پارامتر صحیح نخست.
پارامتر صحیح دومs1صحیح = 0پارامتر صحیح دوم.
پارامتر اعشاریf0اعشار۶۴ = 0پارامتر اعشاری.
ai-autograd-Basics.salam
واردسازی هوش مصنوعی.مشتق‌گیری خودکار
واردسازی هوش مصنوعی.تانسور

تابع گرد(ت: تانسور.تانسور): رشته:
    ناپایا متن := ""
    تکرار ت.شمار درایه‌ها() در ش:
        اگر ش > ۰:
            متن += " "
        پایان
        متن += "" + ((ت.عنصر(ش) * ۱۰۰.۰ + ۱۰۰۰۰.۵) برگردان صحیح - ۱۰۰۰۰)
    پایان
    برگشت متن
پایان

تابع ریشه:
    ناپایا نوار := مشتق‌گیری خودکار.نوار جدید(۱)
    ناپایا مقدار ایکس := تانسور.بازه گام(۳)
    ناپایا ثابت سه := تانسور.پرشده(تانسور.شکل یک(۳)، ۳.۰)
    ایکس := مشتق‌گیری خودکار.پایش(نوار، مقدار ایکس)
    سه := مشتق‌گیری خودکار.ثابت(نوار، ثابت سه)
    مربع := مشتق‌گیری خودکار.مربع(نوار، ایکس)
    خطی := مشتق‌گیری خودکار.ضرب درایه‌ای(نوار، سه، ایکس)
    زیان := مشتق‌گیری خودکار.مجموع(نوار، مشتق‌گیری خودکار.جمع(نوار، مربع، خطی))
    مشتق‌گیری خودکار.پس‌انتشار(نوار، زیان)
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، زیان))، گرد(مشتق‌گیری خودکار.گرادیان(نوار، ایکس))، نوار.طول()

    نوار.بازنشانی()
    ا := مشتق‌گیری خودکار.ورودی(نوار، مقدار ایکس)
    یک := مشتق‌گیری خودکار.جمع با عدد(نوار، ا، ۱.۰)
    همه := [
        مشتق‌گیری خودکار.تفریق(نوار، ا، یک)، مشتق‌گیری خودکار.تقسیم درایه‌ای(نوار، ا، یک)، مشتق‌گیری خودکار.قرینه(نوار، ا)، مشتق‌گیری خودکار.مقیاس(نوار، ا، ۲.۰)،
        مشتق‌گیری خودکار.نمایی(نوار، ا)، مشتق‌گیری خودکار.لگاریتم(نوار، یک)، مشتق‌گیری خودکار.تانژانت هذلولی(نوار، ا)، مشتق‌گیری خودکار.سیگموئید(نوار، ا)،
        مشتق‌گیری خودکار.یکسوساز(نوار، ا)، مشتق‌گیری خودکار.گلو(نوار، ا)، مشتق‌گیری خودکار.سیلو(نوار، ا)، مشتق‌گیری خودکار.ریشه دوم(نوار، یک)،
        مشتق‌گیری خودکار.توان عددی(نوار، ا، ۳.۰)، مشتق‌گیری خودکار.بیشینه نرم(نوار، ا)، مشتق‌گیری خودکار.لگاریتم بیشینه نرم(نوار، ا)، مشتق‌گیری خودکار.میانگین(نوار، ا)
    ]
    هر گره در همه:
        سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، گره))
    پایان

    نوار.بازنشانی()
    ناپایا ماتریسی := تانسور.تغییر شکل(تانسور.بازه گام(۶)، تانسور.شکل دو(۲، ۳))
    ناپایا گرادیان م := تانسور.صفرها دو(۲، ۳)
    م := مشتق‌گیری خودکار.پارامتر(نوار، ماتریسی، گرادیان م)
    ت := مشتق‌گیری خودکار.ترانهاده دوبعدی(نوار، م)
    ض := مشتق‌گیری خودکار.ضرب ماتریسی(نوار، م، ت)
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، ض))
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.مجموع محور(نوار، م، ۰، نادرست)))
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.میانگین محور(نوار، م، ۱، نادرست)))
    ناپایا شکل := تانسور.شکل یک(۶)
    سرچاپ تانسور.رشته شکل(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.تغییر شکل(نوار، م، شکل)))
    مشتق‌گیری خودکار.پس‌انتشار(نوار، مشتق‌گیری خودکار.مجموع(نوار، ض))
    سرچاپ گرد(گرادیان م)
    نوار.آزادسازی()
پایان
خروجی1400 300 500 700 6 -100 -100 -100 0 50 67 0 -100 -200 0 200 400 100 272 739 0 69 110 0 76 96 50 73 88 0 100 200 0 84 195 0 73 176 100 141 173 0 100 800 9 24 67 -241 -141 -41 100 500 1400 1400 5000 300 500 700 100 400 6 600 1000 1400 600 1000 1400

نوار Tape

ساختار نوار
نوار: همه‌ی محاسبه‌ها را ثبت می‌کند تا پس‌انتشار گرادیان‌ها را حساب کند. هر گره با یک شماره‌ی صحیح شناخته می‌شود.
نامانگلیسیگونهتوضیح
مقدارهاvalsوکتور<تانسور.تانسور>مقدار گره‌ها.
گرادیان‌هاgradsوکتور<تانسور.تانسور>گرادیان گره‌ها.
مالک مقدارowns_valوکتور<منطقی>نوار مالک مقدار است.
مالک گرادیانowns_gradوکتور<منطقی>نوار مالک گرادیان است.
نیازمند گرادیانneedsوکتور<منطقی>گره گرادیان لازم دارد.
گره‌هاnodesوکتور<گره>گره‌ها.
آموزشtrainingمنطقی = درستحالت آموزش، پیش‌فرض روشن؛ وقتی خاموش باشد حذف تصادفی و نرمال‌سازی دسته رفتار دیگری دارند.
مولد تصادفیrngتانسور.مولد تصادفیمولد تصادفی نوار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

طول len

تابع طول(): صحیح
شمار گره‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

بازنشانی reset

تابع بازنشانی()
نوار را برای گام بعد خالی می‌کند و هر مقدار و گرادیانی را که ساخته آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

آزادسازی free

تابع آزادسازی()
نوار را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

تابع‌ها

نرمال‌سازی لایه LayerNorm

تابع نرمال‌سازی لایه(tp &: نوار، x: صحیح، gamma: صحیح، beta: صحیح، eps: اعشار۶۴): صحیح
نرمال‌سازی لایه با گاما و بتا.
ai-autograd-Layers.salam
واردسازی هوش مصنوعی.مشتق‌گیری خودکار
واردسازی هوش مصنوعی.تانسور

تابع گرد(ت: تانسور.تانسور): رشته:
    ناپایا متن := ""
    تکرار ت.شمار درایه‌ها() در ش:
        اگر ش > ۰:
            متن += " "
        پایان
        متن += "" + ((ت.عنصر(ش) * ۱۰۰.۰ + ۱۰۰۰۰.۵) برگردان صحیح - ۱۰۰۰۰)
    پایان
    برگشت متن
پایان

تابع مکعب(ت: تانسور.تانسور): اعشار۶۴:
    ناپایا جمع := ۰.۰
    تکرار ت.شمار درایه‌ها() در ش:
        جمع += ت.عنصر(ش) * ت.عنصر(ش) * ت.عنصر(ش)
    پایان
    برگشت جمع
پایان

تابع ریشه:
    ناپایا نوار := مشتق‌گیری خودکار.نوار جدید(۷)
    ناپایا تصویر := تانسور.تغییر شکل(تانسور.بازه گام(۱۶)، تانسور.شکل چهار(۱، ۱، ۴، ۴))
    ناپایا هسته := تانسور.یک‌ها(تانسور.شکل چهار(۲، ۱، ۲، ۲))
    ناپایا سوگیری := تانسور.صفرها یک(۲)
    ای := مشتق‌گیری خودکار.ورودی(نوار، تصویر)
    وزن := مشتق‌گیری خودکار.ثابت(نوار، هسته)
    ب := مشتق‌گیری خودکار.ثابت(نوار، سوگیری)
    پ := مشتق‌گیری خودکار.پیچش دوبعدی(نوار، ای، وزن، ب، ۲، ۲، ۰، ۰)
    سرچاپ تانسور.رشته شکل(مشتق‌گیری خودکار.مقدار(نوار، پ))
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.بیشینه‌گیری دوبعدی(نوار، ای، ۲، ۲، ۲، ۲)))
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.میانگین‌گیری دوبعدی(نوار، ای، ۲، ۲، ۲، ۲)))
    سرچاپ تانسور.رشته شکل(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.نرمال‌سازی گروهی(نوار، پ، مشتق‌گیری خودکار.ثابت(نوار، تانسور.یک‌ها(تانسور.شکل یک(۲)))، مشتق‌گیری خودکار.ثابت(نوار، تانسور.صفرها یک(۲))، ۲، ۰.۰۰۰۰۱)))
    ناپایا میانگین جاری := تانسور.صفرها یک(۲)
    ناپایا واریانس جاری := تانسور.یک‌ها(تانسور.شکل یک(۲))
    ن := مشتق‌گیری خودکار.نرمال‌سازی دسته(نوار، پ، مشتق‌گیری خودکار.ثابت(نوار، تانسور.یک‌ها(تانسور.شکل یک(۲)))، مشتق‌گیری خودکار.ثابت(نوار، تانسور.صفرها یک(۲))، میانگین جاری، واریانس جاری، ۰.۱، ۰.۰۰۰۰۱)
    سرچاپ تانسور.رشته شکل(مشتق‌گیری خودکار.مقدار(نوار، ن))، گرد(میانگین جاری)

    ناپایا ردیف := تانسور.تغییر شکل(تانسور.بازه گام(۸)، تانسور.شکل دو(۲، ۴))
    ر := مشتق‌گیری خودکار.ورودی(نوار، ردیف)
    گاما := مشتق‌گیری خودکار.ثابت(نوار، تانسور.یک‌ها(تانسور.شکل یک(۴)))
    بتا := مشتق‌گیری خودکار.ثابت(نوار، تانسور.صفرها یک(۴))
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.نرمال‌سازی لایه(نوار، ر، گاما، بتا، ۰.۰۰۰۰۱)))
    سرچاپ تانسور.رشته شکل(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.نرمال‌سازی جذر میانگین مربعات(نوار، ر، گاما، ۰.۰۰۰۰۱)))
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.باریک‌سازی(نوار، ر، ۱، ۱، ۲)))
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.برش محور صفر(نوار، ر، ۱، ۱)))
    سرچاپ تانسور.رشته شکل(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.پیوند دو(نوار، ر، ر، ۰)))
    ناپایا ترتیب := وکتور {} برگردان وکتور<صحیح>
    ترتیب.بیفزا(۱)
    ترتیب.بیفزا(۰)
    سرچاپ تانسور.رشته شکل(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.جایگشت(نوار، ر، ترتیب)))
    ناپایا سه بعدی := تانسور.یک‌ها(تانسور.شکل سه(۲، ۲، ۳))
    س := مشتق‌گیری خودکار.ورودی(نوار، سه بعدی)
    سرچاپ تانسور.رشته شکل(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.ضرب ماتریسی دسته‌ای(نوار، س، مشتق‌گیری خودکار.جایگشت(نوار، س، تانسور.شکل سه(۰، ۲، ۱)))))
    سرچاپ تانسور.رشته شکل(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.جاسازی چرخشی(نوار، ر، ۲، ۱، ۰، ۱۰۰۰۰.۰)))
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.حذف تصادفی(نوار، ر، ۰.۰)))

    ناپایا واژگان := تانسور.تغییر شکل(تانسور.بازه گام(۶)، تانسور.شکل دو(۳، ۲))
    ناپایا شماره‌ها := وکتور {} برگردان وکتور<صحیح>
    شماره‌ها.بیفزا(۲)
    شماره‌ها.بیفزا(۰)
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.جاسازی(نوار، مشتق‌گیری خودکار.ثابت(نوار، واژگان)، شماره‌ها)))

    ناپایا پیش‌بینی := تانسور.پرشده(تانسور.شکل یک(۲)، ۱.۰)
    ناپایا هدف := تانسور.صفرها یک(۲)
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.خطای میانگین مربعات(نوار، مشتق‌گیری خودکار.ورودی(نوار، پیش‌بینی)، مشتق‌گیری خودکار.ثابت(نوار، هدف))))
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.آنتروپی دودویی لوجیت(نوار، مشتق‌گیری خودکار.ورودی(نوار، هدف)، مشتق‌گیری خودکار.ثابت(نوار، هدف))))
    ناپایا لوجیت := تانسور.صفرها دو(۲، ۳)
    سرچاپ گرد(مشتق‌گیری خودکار.مقدار(نوار، مشتق‌گیری خودکار.آنتروپی متقاطع لوجیت(نوار، مشتق‌گیری خودکار.ورودی(نوار، لوجیت)، شماره‌ها)))

    ناپایا نقطه := تانسور.بازه گام(۳)
    ناپایا تحلیلی := تانسور.ضرب درایه‌ای(تانسور.مربع(نقطه)، تانسور.پرشده(تانسور.شکل یک(۳)، ۳.۰))
    سرچاپ مشتق‌گیری خودکار.بررسی گرادیان((ت: تانسور.تانسور): برگشت مکعب(ت) پایان، نقطه، تحلیلی، ۰.۰۰۱، ۰.۰۱)
    نوار.آزادسازی()
پایان
خروجی1x2x2x2 500 700 1300 1500 250 450 1050 1250 1x2x2x2 1x2x2x2 300 300 -134 -45 45 134 -134 -45 45 134 2x4 100 200 500 600 400 500 600 700 4x4 4x2 2x2x2 2x4 0 100 200 300 400 500 600 700 400 500 0 100 100 69 110 true

نرمال‌سازی جذر میانگین مربعات RMSNorm

تابع نرمال‌سازی جذر میانگین مربعات(tp &: نوار، x: صحیح، gamma: صحیح، eps: اعشار۶۴): صحیح
نرمال‌سازی جذر میانگین مربعات، مثل Llama.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

نرمال‌سازی دسته BatchNorm

تابع نرمال‌سازی دسته(tp &: نوار، x: صحیح، gamma: صحیح، beta: صحیح، running_mean &: تانسور.تانسور، running_var &: تانسور.تانسور، momentum: اعشار۶۴، eps: اعشار۶۴): صحیح
نرمال‌سازی دسته؛ میانگین و واریانس جاری را در آموزش به‌روز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

نرمال‌سازی گروهی GroupNorm

تابع نرمال‌سازی گروهی(tp &: نوار، x: صحیح، gamma: صحیح، beta: صحیح، groups: صحیح، eps: اعشار۶۴): صحیح
نرمال‌سازی گروهی کانال‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

پیچش دوبعدی Conv2D

تابع پیچش دوبعدی(tp &: نوار، x: صحیح، w: صحیح، b: صحیح، sh: صحیح، sw: صحیح، ph: صحیح، pw: صحیح): صحیح
پیچش دوبعدی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

بیشینه‌گیری دوبعدی MaxPool2D

تابع بیشینه‌گیری دوبعدی(tp &: نوار، x: صحیح، kh: صحیح، kw: صحیح، sh: صحیح، sw: صحیح): صحیح
بیشینه‌گیری دوبعدی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

میانگین‌گیری دوبعدی AvgPool2D

تابع میانگین‌گیری دوبعدی(tp &: نوار، x: صحیح، kh: صحیح، kw: صحیح، sh: صحیح، sw: صحیح): صحیح
میانگین‌گیری دوبعدی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

نوار جدید NewTape

تابع نوار جدید(seed: صحیح۶۴): نوار
نوار با بذر مولد تصادفی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

ورودی Input

تابع ورودی(tp &: نوار، t &: تانسور.تانسور): صحیح
تانسوری بی گرادیان را روی نوار می‌گذارد، بی آن که رونوشت بگیرد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

ثابت Constant

تابع ثابت(tp &: نوار، t &: تانسور.تانسور): صحیح
ثابت؛ مثل ورودی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

پایش Watch

تابع پایش(tp &: نوار، t &: تانسور.تانسور): صحیح
تانسوری را با گرادیان ثبت می‌کند تا پس از پس‌انتشار با گرادیان خوانده شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

پارامتر Param

تابع پارامتر(tp &: نوار، val &: تانسور.تانسور، grad &: تانسور.تانسور): صحیح
پارامتر با تانسور گرادیانی که پس‌انتشار در آن جمع می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

مقدار Value

تابع مقدار(tp &: نوار، v: صحیح): تانسور.تانسور
مقدار یک گره؛ حافظه‌اش با نوار مشترک است و بازنشانی آزادش می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

گرادیان Grad

تابع گرادیان(tp &: نوار، v: صحیح): تانسور.تانسور
گرادیان گره پس از پس‌انتشار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

پس‌انتشار Backward

تابع پس‌انتشار(tp &: نوار، loss: صحیح)
از گره زیان پس‌انتشار می‌کند؛ زیانی با چند مقدار، مجموع آن‌ها به حساب می‌آید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

بررسی گرادیان GradCheck

تابع بررسی گرادیان(f: تابع(تانسور.تانسور): اعشار۶۴، x &: تانسور.تانسور، analytic &: تانسور.تانسور، h: اعشار۶۴، tol: اعشار۶۴): منطقی
گرادیان تحلیلی را با تفاضل عددی می‌سنجد؛ برای آزمودن لایه‌های تازه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

ضرب ماتریسی دسته‌ای BatchMatMul

تابع ضرب ماتریسی دسته‌ای(tp &: نوار، a: صحیح، b: صحیح): صحیح
ضرب ماتریسی دسته‌ای با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

جایگشت Permute

تابع جایگشت(tp &: نوار، a: صحیح، perm &: وکتور<صحیح>): صحیح
جایگشت ابعاد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

جاسازی Embedding

تابع جاسازی(tp &: نوار، weight: صحیح، indices &: وکتور<صحیح>): صحیح
سطرهای جدول جاسازی برای شماره‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

حذف تصادفی Dropout

تابع حذف تصادفی(tp &: نوار، a: صحیح، p: اعشار۶۴): صحیح
در آموزش درایه‌ها را با احتمال p صفر می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

باریک‌سازی Narrow

تابع باریک‌سازی(tp &: نوار، a: صحیح، axis: صحیح، start: صحیح، len: صحیح): صحیح
بازه‌ای از یک بعد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

برش محور صفر SliceAxis0

تابع برش محور صفر(tp &: نوار، a: صحیح، start: صحیح، len: صحیح): صحیح
بازه‌ای از بعد نخست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

پیوند دو Concat2

تابع پیوند دو(tp &: نوار، a: صحیح، b: صحیح، axis: صحیح): صحیح
پیوند دو گره.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

جاسازی چرخشی RoPE

تابع جاسازی چرخشی(tp &: نوار، a: صحیح، seq: صحیح، heads: صحیح، offset: صحیح، theta: اعشار۶۴): صحیح
جاسازی موقعیت چرخشی برای توجه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

جمع Add

تابع جمع(tp &: نوار، a: صحیح، b: صحیح): صحیح
جمع با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

تفریق Sub

تابع تفریق(tp &: نوار، a: صحیح، b: صحیح): صحیح
تفریق با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

ضرب درایه‌ای Mul

تابع ضرب درایه‌ای(tp &: نوار، a: صحیح، b: صحیح): صحیح
ضرب درایه‌ای با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

تقسیم درایه‌ای Div

تابع تقسیم درایه‌ای(tp &: نوار، a: صحیح، b: صحیح): صحیح
تقسیم درایه‌ای با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

قرینه Neg

تابع قرینه(tp &: نوار، a: صحیح): صحیح
قرینه با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

مقیاس Scale

تابع مقیاس(tp &: نوار، a: صحیح، s: اعشار۶۴): صحیح
ضرب در عدد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

جمع با عدد AddScalar

تابع جمع با عدد(tp &: نوار، a: صحیح، s: اعشار۶۴): صحیح
جمع با عدد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

نمایی Exp

تابع نمایی(tp &: نوار، a: صحیح): صحیح
نمایی با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

لگاریتم Log

تابع لگاریتم(tp &: نوار، a: صحیح): صحیح
لگاریتم با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

تانژانت هذلولی Tanh

تابع تانژانت هذلولی(tp &: نوار، a: صحیح): صحیح
تانژانت هذلولی با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

سیگموئید Sigmoid

تابع سیگموئید(tp &: نوار، a: صحیح): صحیح
سیگموئید با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

یکسوساز Relu

تابع یکسوساز(tp &: نوار، a: صحیح): صحیح
یکسوساز با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

گلو Gelu

تابع گلو(tp &: نوار، a: صحیح): صحیح
GELU با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

ریشه دوم Sqrt

تابع ریشه دوم(tp &: نوار، a: صحیح): صحیح
ریشه‌ی دوم با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

مربع Square

تابع مربع(tp &: نوار، a: صحیح): صحیح
مربع با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

توان عددی PowScalar

تابع توان عددی(tp &: نوار، a: صحیح، p: اعشار۶۴): صحیح
توان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

سیلو Silu

تابع سیلو(tp &: نوار، a: صحیح): صحیح
SiLU با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

ضرب ماتریسی MatMul

تابع ضرب ماتریسی(tp &: نوار، a: صحیح، b: صحیح): صحیح
ضرب ماتریسی با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

مجموع Sum

تابع مجموع(tp &: نوار، a: صحیح): صحیح
مجموع همه با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

میانگین Mean

تابع میانگین(tp &: نوار، a: صحیح): صحیح
میانگین همه با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

مجموع محور SumAxis

تابع مجموع محور(tp &: نوار، a: صحیح، axis: صحیح، keepdim: منطقی): صحیح
مجموع در یک بعد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

میانگین محور MeanAxis

تابع میانگین محور(tp &: نوار، a: صحیح، axis: صحیح، keepdim: منطقی): صحیح
میانگین در یک بعد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

بیشینه نرم Softmax

تابع بیشینه نرم(tp &: نوار، a: صحیح): صحیح
بیشینه‌ی نرم با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

لگاریتم بیشینه نرم LogSoftmax

تابع لگاریتم بیشینه نرم(tp &: نوار، a: صحیح): صحیح
لگاریتم بیشینه‌ی نرم با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

تغییر شکل Reshape

تابع تغییر شکل(tp &: نوار، a: صحیح، shape &: وکتور<صحیح>): صحیح
تغییر شکل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

ترانهاده دوبعدی Transpose2D

تابع ترانهاده دوبعدی(tp &: نوار، a: صحیح): صحیح
ترانهاده با گرادیان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Basics.salam

خطای میانگین مربعات MSELoss

تابع خطای میانگین مربعات(tp &: نوار، pred: صحیح، target: صحیح): صحیح
زیان میانگین مربعات خطا؛ برای رگرسیون.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

آنتروپی متقاطع لوجیت CrossEntropyLogits

تابع آنتروپی متقاطع لوجیت(tp &: نوار، logits: صحیح، targets &: وکتور<صحیح>): صحیح
زیان آنتروپی متقاطع از لوجیت‌ها و کلاس درست؛ برای دسته‌بندی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam

آنتروپی دودویی لوجیت BCEWithLogits

تابع آنتروپی دودویی لوجیت(tp &: نوار، logits: صحیح، target: صحیح): صحیح
آنتروپی دودویی از لوجیت؛ برای دسته‌بندی دوتایی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ai-autograd-Layers.salam