شبکه عصبی ai.nn
لایههای شبکهی عصبی: خطی، پیچشی، بازگشتی، ترنسفورمر و نقطهی بازرسی.
واردسازی هوش مصنوعی.شبکه عصبی
نام آرگومانها شناسهی خود کد است و معادل فارسی ندارد؛ گونهها، کلیدواژهها و نام بستهها با معادل فارسی نوشته میشوند.
این بسته لایههای آماده برای ساختن شبکهی عصبی در سلام را دارد: لایهی خطی، پیچشی، ادغام، نرمالسازی، جاسازی، LSTM و GRU، توجه و بلوکهای ترنسفورمر، به همراه مقداردهی آغازین وزنها و نقطهی بازرسی. وزنهای همهی لایهها در یک مخزن پارامتر نگه داشته میشوند. هر لایه را با تابعی «... جدید» و نامی یکتا بسازید و در هر گام پیشرو آن را روی نوار مشتقگیری خودکار صدا بزنید. ترتیبی چند لایه را پشت سر هم اجرا میکند. خود آموزش کار بهینهسازی است.
برای مدلی که دیگری آموزش داده، آن را با onnx بار کنید. برای مدلهای کلاسیک مثل درخت تصمیم، k-means یا رگرسیون لجستیک روی دادهی جدولی، ml کوتاهتر است و حلقهی آموزش نمیخواهد.
اشتباههای رایج
- مقدار هر لایه فقط شمارهی وزنهایش در مخزن را نگه میدارد، نه خود وزنها را. همان مخزنی را به
پیشروبدهید که به تابع سازنده دادهاید. - نامها باید یکتا باشند.
افزودناین را نمیسنجد و نقطهی بازرسی هر تانسور را در نخستین پارامتری با همان نام بار میکند، پس نام تکراری بارگذاری را خراب میکند. ترتیبیفقط لایههایی را میپذیرد کهپیشروآنها مخزن را میگیرد:لایه خطی،لایه پیچشی، نرمالسازها و لایههای فعالسازی.حذف تصادفی،لایه بیشینهگیری،لایه میانگینگیریوتختسازیرا خودتان میان آنها صدا بزنید.- نقطهی بازرسی فقط
مخزن پارامتررا نگه میدارد. میانگین و واریانس جارینرمالسازی دستهو وضعیت بهینهساز ذخیره نمیشوند. - پیش از ارزیابی
نوار.training = نادرستبگذارید تا حذف تصادفی دیگر چیزی حذف نکند و نرمالسازی دسته از میانگینهای جاریاش استفاده کند.
نخستین شبکه: XOR
XOR کوچکترین مسئلهای است که هیچ خط راستی حلش نمیکند، پس آزمون اول کلاسیک برای شبکهای با یک لایهی پنهان است. ترتیبی یک لایهی خطی با هشت واحد، یک لایه تانژانت هذلولی و لایهی خطی دومی با یک خروجی را پشت هم میگذارد. زیان آنتروپی دودویی لوجیت است که خروجی خام را میگیرد و سیگموئید را خودش اعمال میکند؛ پایدارتر از انجام آن در دو گام. پس از آموزش، سیگموئید از بستهی تانسور خروجیها را به احتمال تبدیل میکند و گرد کردن پاسخ را میدهد.
واردسازی هوش مصنوعی.شبکه عصبی
واردسازی هوش مصنوعی.مشتقگیری خودکار
واردسازی هوش مصنوعی.بهینهسازی
واردسازی هوش مصنوعی.تانسور
تابع جدول(مقدارها: اعشار۶۴[]، سطرها: صحیح، ستونها: صحیح): تانسور.تانسور:
ناپایا داده := وکتور {} برگردان وکتور<اعشار۳۲>
هر م در مقدارها:
داده.بیفزا(م برگردان اعشار۳۲)
پایان
ناپایا شکل := تانسور.شکل دو(سطرها، ستونها)
برگشت تانسور.از آرایه(شکل، داده)
پایان
تابع ریشه:
ناپایا ورودیها := جدول([۰.۰، ۰.۰، ۰.۰، ۱.۰، ۱.۰، ۰.۰، ۱.۰، ۱.۰]، ۴، ۲)
ناپایا برچسب ها := جدول([۰.۰، ۱.۰، ۱.۰، ۰.۰]، ۴، ۱)
ناپایا مخزن := شبکه عصبی.مخزن پارامتر {}
ناپایا مولد := تانسور.مولد تصادفی جدید(۷)
ناپایا مدل := شبکه عصبی.ترتیبی {}
مدل.افزودن(شبکه عصبی.لایه خطی جدید(مخزن، "hidden"، ۲، ۸، مولد))
مدل.افزودن(شبکه عصبی.لایه تانژانت هذلولی {})
مدل.افزودن(شبکه عصبی.لایه خطی جدید(مخزن، "out"، ۸، ۱، مولد))
ناپایا آدام := بهینهسازی.آدام { نرخ یادگیری = ۰.۰۵ }
ناپایا نوار := مشتقگیری خودکار.نوار جدید(۱)
ناپایا مقدار زیان := ۰.۰
تکرار ۵۰۰:
نوار.بازنشانی()
مخزن.صفر کردن گرادیان()
لوجیت ها := مدل.پیشرو(نوار، مخزن، مشتقگیری خودکار.ورودی(نوار، ورودیها))
زیان := مشتقگیری خودکار.آنتروپی دودویی لوجیت(نوار، لوجیت ها، مشتقگیری خودکار.ثابت(نوار، برچسب ها))
مشتقگیری خودکار.پسانتشار(نوار، زیان)
آدام.گام(مخزن)
مقدار زیان = مشتقگیری خودکار.مقدار(نوار، زیان).عنصر(۰)
پایان
سرچاپ "زیان کمتر از ۰.۰۵:"، مقدار زیان < ۰.۰۵
نوار.بازنشانی()
احتمال ها := تانسور.سیگموئید(مشتقگیری خودکار.مقدار(نوار، مدل.پیشرو(نوار، مخزن، مشتقگیری خودکار.ورودی(نوار، ورودیها))))
تکرار ۴ در ی:
سرچاپ ورودیها.در دو(ی، ۰)، "xor"، ورودیها.در دو(ی، ۱)، "="، (احتمال ها.عنصر(ی) + ۰.۵) برگردان صحیح
پایان
نوار.آزادسازی()
آدام.آزادسازی()
مخزن.آزادسازی()
پایانحلقهی آموزش در هر برنامه همان پنج خط را دارد: بازنشانی نوار، صفر کردن گرادیان مخزن، اجرای پیشرو و زیان، پسانتشار، و گام بهینهساز. دانهای که به مولد تصادفی جدید میدهید وزنهای آغازین را ثابت میکند، پس هر اجرا را میشود دقیقا تکرار کرد.
دستهبندی در چند دسته
برای بیش از دو دسته، لایهی آخر برای هر دسته یک خروجی دارد و زیان آنتروپی متقاطع لوجیت است که شمارهی دستهها را به شکل یک وکتور<صحیح> ساده میگیرد. پیشبینی دستهای است که بزرگترین خروجی را دارد و با نمایه بیشینه محور پیدا میشود. اینجا شصت نقطه گرد سه مرکز بیخطا جدا میشوند؛ روی دادهی واقعی دقت را روی نمونههایی بسنجید که مدل با آنها آموزش ندیده است.
واردسازی هوش مصنوعی.شبکه عصبی
واردسازی هوش مصنوعی.مشتقگیری خودکار
واردسازی هوش مصنوعی.بهینهسازی
واردسازی هوش مصنوعی.تانسور
تابع ریشه:
ناپایا مولد := تانسور.مولد تصادفی جدید(۵)
ناپایا نقطه ها := تانسور.صفرها دو(۶۰، ۲)
ناپایا برچسب ها := وکتور {} برگردان وکتور<صحیح>
تکرار ۶۰ در ی:
دسته := ی % ۳
برچسب ها.بیفزا(دسته)
مرکز ایکس := (دسته برگردان اعشار۶۴) * ۲.۰
مرکز ایگرگ := ((دسته % ۲) برگردان اعشار۶۴) * ۲.۰
نقطه ها.تنظیم در دو(ی، ۰، مرکز ایکس + مولد.نرمال بعدی() * ۰.۳)
نقطه ها.تنظیم در دو(ی، ۱، مرکز ایگرگ + مولد.نرمال بعدی() * ۰.۳)
پایان
ناپایا مخزن := شبکه عصبی.مخزن پارامتر {}
ناپایا مدل := شبکه عصبی.ترتیبی {}
مدل.افزودن(شبکه عصبی.لایه خطی جدید(مخزن، "fc1"، ۲، ۱۶، مولد))
مدل.افزودن(شبکه عصبی.لایه یکسوساز {})
مدل.افزودن(شبکه عصبی.لایه خطی جدید(مخزن، "fc2"، ۱۶، ۳، مولد))
ناپایا آدام := بهینهسازی.آدام { نرخ یادگیری = ۰.۰۵ }
ناپایا نوار := مشتقگیری خودکار.نوار جدید(۱)
تکرار ۲۰۰:
نوار.بازنشانی()
مخزن.صفر کردن گرادیان()
لوجیت ها := مدل.پیشرو(نوار، مخزن، مشتقگیری خودکار.ورودی(نوار، نقطه ها))
زیان := مشتقگیری خودکار.آنتروپی متقاطع لوجیت(نوار، لوجیت ها، برچسب ها)
مشتقگیری خودکار.پسانتشار(نوار، زیان)
آدام.گام(مخزن)
پایان
نوار.بازنشانی()
حدس ها := تانسور.نمایه بیشینه محور(مشتقگیری خودکار.مقدار(نوار، مدل.پیشرو(نوار، مخزن، مشتقگیری خودکار.ورودی(نوار، نقطه ها)))، ۱، نادرست)
ناپایا امتیاز := ۰
تکرار ۶۰ در ی:
اگر حدس ها.عنصر(ی) برگردان صحیح == برچسب ها.بگیر(ی):
امتیاز++
پایان
پایان
سرچاپ "درست:"، امتیاز، "از ۶۰"
نوار.آزادسازی()
آدام.آزادسازی()
مخزن.آزادسازی()
پایان((دسته % ۲) برگردان اعشار۶۴) * ۲.۰ را با پرانتز بنویسید. بدون آن، برگردان اعشار۶۴ * گونهی اشارهگر اعشار۶۴* خوانده میشود و خط کامپایل نمیشود.
ذخیره و بارگذاری وزنها
نقطهی بازرسی هر تانسور یک مخزن پارامتر را زیر نام لایهاش نگه میدارد. برای بارگذاری، همان لایهها را با همان نامها و شکلها بسازید و بعد بارگذاری نقطه بازرسی (از فایل) یا بارگذاری نقطه بازرسی از بافر (از حافظه) را صدا بزنید؛ وزنهای آغازین رونویسی میشوند. مدل دوم زیر با وزنهای تصادفی دیگری شروع میکند، پاسخ دیگری میدهد، و پس از بارگذاری دقیقا مثل اولی پاسخ میدهد.
واردسازی هوش مصنوعی.شبکه عصبی
واردسازی هوش مصنوعی.مشتقگیری خودکار
واردسازی هوش مصنوعی.تانسور
واردسازی فشرده سازی
تابع ساختن(مخزن &: شبکه عصبی.مخزن پارامتر، دانه: صحیح۶۴): شبکه عصبی.ترتیبی:
ناپایا مولد := تانسور.مولد تصادفی جدید(دانه)
ناپایا مدل := شبکه عصبی.ترتیبی {}
مدل.افزودن(شبکه عصبی.لایه خطی جدید(مخزن، "fc1"، ۳، ۴، مولد))
مدل.افزودن(شبکه عصبی.لایه گلو {})
مدل.افزودن(شبکه عصبی.لایه خطی جدید(مخزن، "fc2"، ۴، ۲، مولد))
برگشت مدل
پایان
تابع اجرا(مدل &: شبکه عصبی.ترتیبی، مخزن &: شبکه عصبی.مخزن پارامتر، ایکس &: تانسور.تانسور): تانسور.تانسور:
ناپایا نوار := مشتقگیری خودکار.نوار جدید(۱)
خروجی := تانسور.همانند(مشتقگیری خودکار.مقدار(نوار، مدل.پیشرو(نوار، مخزن، مشتقگیری خودکار.ورودی(نوار، ایکس))))
نوار.آزادسازی()
برگشت خروجی
پایان
تابع ریشه خطادار:
ناپایا ایکس := تانسور.یکها(تانسور.شکل دو(۱، ۳))
ناپایا آموزش دیده := شبکه عصبی.مخزن پارامتر {}
ناپایا اولی := ساختن(آموزش دیده، ۱)
ناپایا ذخیره := شبکه عصبی.ذخیره نقطه بازرسی در بافر(آموزش دیده)
ناپایا تازه := شبکه عصبی.مخزن پارامتر {}
ناپایا دومی := ساختن(تازه، ۹۹)
سرچاپ "پیش از بارگذاری، خروجی یکی است:"، تانسور.همه نزدیک(اجرا(اولی، آموزش دیده، ایکس)، اجرا(دومی، تازه، ایکس)، ۰.۰۰۰۰۰۱)
تلاش شبکه عصبی.بارگذاری نقطه بازرسی از بافر(ذخیره، تازه)
ناپایا دیگر := شبکه عصبی.مخزن پارامتر {}
_ := ساختن(دیگر، ۵)
_ := ساختن(دیگر، ۶)
تلاش:
شبکه عصبی.بارگذاری نقطه بازرسی از بافر(ذخیره، دیگر)
گرفتن خطا خ:
سرچاپ "مدلی دیگر:"، خ.به رشته()
پایان
دیگر.آزادسازی()
سرچاپ "پس از بارگذاری، خروجی یکی است:"، تانسور.همه نزدیک(اجرا(اولی، آموزش دیده، ایکس)، اجرا(دومی، تازه، ایکس)، ۰.۰۰۰۰۰۱)
سرچاپ "پارامترها:"، تازه.شمار()
فشرده سازی.آزادسازی بافر(ذخیره)
آموزش دیده.آزادسازی()
تازه.آزادسازی()
پایانبارگذاری نقطه بازرسی و بارگذاری نقطه بازرسی از بافر خطاداراند. پیش از نوشتن هر وزنی کل پرونده بررسی میشود: CRC (nn.crc)، شمار پارامترها (nn.param_count، مثل مخزن سوم بالا که لایهها را دو بار دارد)، هر نام (nn.unknown_param) و هر شکل (nn.shape). پس پس از خطا مخزن دقیقا همان است که بود. مسیری که با .gz تمام شود هنگام ذخیره با gzip فشرده و هنگام بارگذاری باز میشود. بارگذاری با نام جور میشود، پس تغییر نام یک لایه نقطههای بازرسی قدیمی را خراب میکند. نامها را ثابت نگه دارید و کدی را که مدل را میسازد در یک تابع بگذارید که هم برای آموزش و هم برای بارگذاری به کار رود، مثل ساختن در اینجا.
کدام لایه برای کدام کار
| داده | لایهها |
|---|---|
| سطرهایی از عدد | لایه خطی جدید با لایه یکسوساز، لایه گلو یا لایه تانژانت هذلولی میانشان |
| تصویر | لایه پیچشی جدید، لایه بیشینهگیری، نرمالسازی دسته جدید، بعد تختسازی و لایه خطی جدید |
| واژهها و توکنها | جاسازی جدید و موقعیت سینوسی |
| دنبالهها، گام به گام | حافظه کوتاهمدت بلند جدید، واحد بازگشتی دروازهدار جدید، گام آخر |
| دنبالهها، یکجا | توجه چندسر جدید، لایه رمزگذار ترنسفورمر جدید، ماسک علّی |
| آموزش پایدارتر | نرمالسازی لایه جدید، نرمالسازی جذر میانگین مربعات جدید، حذف تصادفی |
گونهها
توجه چندسر MultiHeadAttention
ساختار توجه چندسر| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| وزن پرسش | wq | لایه خطی | لایهی پرسش. |
| وزن کلید | wk | لایه خطی | لایهی کلید. |
| وزن مقدار | wv | لایه خطی | لایهی مقدار. |
| وزن خروجی | wo | لایه خطی | لایهی خروجی. |
| اندازه | dim | صحیح = 0 | اندازه. |
| سرها | heads | صحیح = 1 | شمار سرها. |
| حذف تصادفی | dropout | اعشار۶۴ = 0 | احتمال حذف. |
| علی | causal | منطقی = نادرست | هر جایگاه فقط جایگاههای پیشین را ببیند. |
واردسازی هوش مصنوعی.شبکه عصبی
واردسازی هوش مصنوعی.مشتقگیری خودکار
واردسازی هوش مصنوعی.تانسور
تابع شکل(نوار &: مشتقگیری خودکار.نوار، گره: صحیح): رشته:
برگشت تانسور.رشته شکل(مشتقگیری خودکار.مقدار(نوار، گره))
پایان
تابع ریشه:
دسته := ۲
طول := ۳
بعد := ۸
ناپایا مخزن := شبکه عصبی.مخزن پارامتر {}
ناپایا مولد := تانسور.مولد تصادفی جدید(۱۱)
ناپایا نوار := مشتقگیری خودکار.نوار جدید(۱)
جاسازی := شبکه عصبی.جاسازی جدید(مخزن، "embed"، ۱۰، بعد، مولد)
ناپایا توکنها := وکتور {} برگردان وکتور<صحیح>
هر ت در [۱، ۲، ۳، ۴، ۵، ۶]:
توکنها.بیفزا(ت)
پایان
ح := جاسازی.پیشرو(نوار، مخزن، توکنها)
ناپایا مکان := شبکه عصبی.موقعیت سینوسی(دسته، طول، بعد)
ح۲ := مشتقگیری خودکار.جمع(نوار، ح، مشتقگیری خودکار.ورودی(نوار، مکان))
سرچاپ شکل(نوار، ح)، تانسور.رشته شکل(مکان)
توجه := شبکه عصبی.توجه چندسر جدید(مخزن، "attn"، بعد، ۲، ۰.۰، مولد)
سرچاپ شکل(نوار، توجه.پیشرو(نوار، مخزن، ح۲، دسته، طول))
رمزگذار := شبکه عصبی.لایه رمزگذار ترنسفورمر جدید(مخزن، "enc"، بعد، ۲، ۱۶، ۰.۰، مولد)
سرچاپ شکل(نوار، رمزگذار.پیشرو(نوار، مخزن، ح۲، دسته، طول))
رمزگشا := شبکه عصبی.لایه رمزگشای ترنسفورمر جدید(مخزن، "dec"، بعد، ۲، ۱۶، ۰.۰، مولد)
سرچاپ شکل(نوار، رمزگشا.پیشرو(نوار، مخزن، ح۲، دسته، طول))
ناپایا ماسک := شبکه عصبی.ماسک علّی(طول)
سرچاپ تانسور.به رشته(تانسور.کوچکتر از عدد(ماسک، -۱.۰))
ناپایا دنباله := تانسور.یکها(تانسور.شکل دو(طول * دسته، ۴))
حافظه := شبکه عصبی.حافظه کوتاهمدت بلند جدید(مخزن، "lstm"، ۴، ۶، مولد)
دروازه := شبکه عصبی.واحد بازگشتی دروازهدار جدید(مخزن، "gru"، ۴، ۶، مولد)
ورودی د := مشتقگیری خودکار.ورودی(نوار، دنباله)
حالتها := حافظه.پیشرو(نوار، مخزن، ورودی د، طول، دسته)
حالتها۲ := دروازه.پیشرو(نوار، مخزن، ورودی د، طول، دسته)
سرچاپ شکل(نوار، حالتها)، شکل(نوار، حالتها۲)، شکل(نوار، شبکه عصبی.گام آخر(نوار، حالتها، طول، دسته))
سرچاپ مخزن.شمار() > ۱۰
نوار.آزادسازی()
مخزن.آزادسازی()
پایانپیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح، batch: صحیح، seq: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
لایه رمزگذار ترنسفورمر TransformerEncoderLayer
ساختار لایه رمزگذار ترنسفورمر| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| توجه | attn | توجه چندسر | توجه. |
| نرمالساز نخست | ln1 | نرمالسازی لایه | نرمالسازی نخست. |
| نرمالساز دوم | ln2 | نرمالسازی لایه | نرمالسازی دوم. |
| پیشروی نخست | ff1 | لایه خطی | لایهی پیشروی نخست. |
| پیشروی دوم | ff2 | لایه خطی | لایهی پیشروی دوم. |
| حذف تصادفی | dropout | اعشار۶۴ = 0 | احتمال حذف. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح، batch: صحیح، seq: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
پارامتر Parameter
ساختار پارامتر| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| نام | name | رشته = "" | نام. |
| مقدار | value | تانسور.تانسور | مقدار. |
| گرادیان | grad | تانسور.تانسور | گرادیان. |
واردسازی هوش مصنوعی.شبکه عصبی
واردسازی هوش مصنوعی.مشتقگیری خودکار
واردسازی هوش مصنوعی.بهینهسازی
واردسازی هوش مصنوعی.تانسور
واردسازی سیستم عامل
واردسازی فشرده سازی
تابع ریشه خطادار:
ناپایا مخزن := شبکه عصبی.مخزن پارامتر {}
ناپایا مولد := تانسور.مولد تصادفی جدید(۳)
لایه۱ := شبکه عصبی.لایه خطی جدید(مخزن، "fc1"، ۲، ۸، مولد)
لایه۲ := شبکه عصبی.لایه خطی بیبایاس(مخزن، "fc2"، ۸، ۱، مولد)
ناپایا مدل := شبکه عصبی.ترتیبی {}
مدل.افزودن(لایه۱)
مدل.افزودن(شبکه عصبی.لایه تانژانت هذلولی {})
مدل.افزودن(لایه۲)
سرچاپ مخزن.شمار()
ناپایا ورودیها := تانسور.تغییر شکل(تانسور.بازه گام(۸)، تانسور.شکل دو(۴، ۲))
تانسور.مقیاس درجا(ورودیها، ۰.۲۵)
ناپایا هدف := تانسور.صفرها دو(۴، ۱)
تکرار ۴ در ش:
هدف.تنظیم در(ش، ورودیها.در دو(ش، ۰) + ورودیها.در دو(ش، ۱))
پایان
ناپایا آدام := بهینهسازی.آدام { نرخ یادگیری = ۰.۰۵ }
ناپایا نوار := مشتقگیری خودکار.نوار جدید(۱)
ناپایا آخرین := ۰.۰
تکرار ۳۰۰:
نوار.بازنشانی()
مخزن.صفر کردن گرادیان()
خروجی := مدل.پیشرو(نوار، مخزن، مشتقگیری خودکار.ورودی(نوار، ورودیها))
زیان := مشتقگیری خودکار.خطای میانگین مربعات(نوار، خروجی، مشتقگیری خودکار.ثابت(نوار، هدف))
مشتقگیری خودکار.پسانتشار(نوار، زیان)
آدام.گام(مخزن)
آخرین = مشتقگیری خودکار.مقدار(نوار، زیان).عنصر(۰)
پایان
سرچاپ آخرین < ۰.۰۱
ناپایا پ := مخزن.عنصر(لایه۱.شماره وزن)
سرچاپ پ.نام، تانسور.رشته شکل(پ.مقدار)، تانسور.رشته شکل(پ.گرادیان)
گره وزن := شبکه عصبی.پیوند(نوار، مخزن، لایه۱.شماره وزن)
سرچاپ تانسور.رشته شکل(مشتقگیری خودکار.مقدار(نوار، گره وزن))
مسیر := سیستم عامل.پوشه موقت() + "/salam_mlp.ckpt"
سرچاپ شبکه عصبی.ذخیره نقطه بازرسی(مسیر، مخزن)
تلاش شبکه عصبی.بارگذاری نقطه بازرسی(مسیر، مخزن)
ناپایا بافر := شبکه عصبی.ذخیره نقطه بازرسی در بافر(مخزن)
تلاش شبکه عصبی.بارگذاری نقطه بازرسی از بافر(بافر، مخزن)
فشرده سازی.تنظیم بایت(بافر، ۲۰، ۰)
تلاش:
شبکه عصبی.بارگذاری نقطه بازرسی از بافر(بافر، مخزن)
گرفتن خطا خ:
سرچاپ خ.کد
پایان
فشرده سازی.آزادسازی بافر(بافر)
ناپایا تصویرها := تانسور.یکها(تانسور.شکل چهار(۲، ۱، ۸، ۸))
پیچش := شبکه عصبی.لایه پیچشی جدید(مخزن، "conv"، ۱، ۴، ۳، ۱، ۱، مولد)
ناپایا نرم دسته := شبکه عصبی.نرمالسازی دسته جدید(مخزن، "bn"، ۴)
نرم گروه := شبکه عصبی.نرمالسازی گروهی جدید(مخزن، "gn"، ۴، ۲)
بیشینه := شبکه عصبی.لایه بیشینهگیری { اندازه پنجره = ۲، گام = ۲ }
میانگین := شبکه عصبی.لایه میانگینگیری {}
ح := پیچش.پیشرو(نوار، مخزن، مشتقگیری خودکار.ورودی(نوار، تصویرها))
ح۲ := نرم گروه.پیشرو(نوار، مخزن، نرم دسته.پیشرو(نوار، مخزن، ح))
ح۳ := میانگین.پیشرو(نوار، بیشینه.پیشرو(نوار، شبکه عصبی.لایه یکسوساز {}.پیشرو(نوار، مخزن، ح۲)))
تخت := شبکه عصبی.تختسازی(نوار، ح۳)
سرچاپ تانسور.رشته شکل(مشتقگیری خودکار.مقدار(نوار، ح))، تانسور.رشته شکل(مشتقگیری خودکار.مقدار(نوار، تخت))
ردیف := مشتقگیری خودکار.ورودی(نوار، تانسور.یکها(تانسور.شکل دو(۲، ۴)))
نرم لایه := شبکه عصبی.نرمالسازی لایه جدید(مخزن، "ln"، ۴)
نرم جذر := شبکه عصبی.نرمالسازی جذر میانگین مربعات جدید(مخزن، "rms"، ۴)
حذف := شبکه عصبی.حذف تصادفی { احتمال حذف = ۰.۰ }
گلو := شبکه عصبی.لایه گلو {}
خ := گلو.پیشرو(نوار، مخزن، حذف.پیشرو(نوار، نرم جذر.پیشرو(نوار، مخزن، نرم لایه.پیشرو(نوار، مخزن، ردیف))))
سرچاپ تانسور.رشته شکل(مشتقگیری خودکار.مقدار(نوار، خ))
ناپایا وزن := تانسور.صفرها دو(۶۴، ۶۴)
شبکه عصبی.ژاویر یکنواخت(وزن، ۶۴، ۶۴، مولد)
سرچاپ تانسور.بیشینه همه(تانسور.قدر مطلق(وزن)) <= ۰.۲۲
شبکه عصبی.ژاویر نرمال(وزن، ۶۴، ۶۴، مولد)
شبکه عصبی.کایمینگ یکنواخت(وزن، ۶۴، مولد)
سرچاپ تانسور.بیشینه همه(تانسور.قدر مطلق(وزن)) <= ۰.۳۱
شبکه عصبی.کایمینگ نرمال(وزن، ۶۴، مولد)
سرچاپ تانسور.بیشینه همه(تانسور.قدر مطلق(وزن)) > ۰.۰
نوار.آزادسازی()
آدام.آزادسازی()
مدل.آزادسازی()
نرم دسته.آزادسازی()
مخزن.آزادسازی()
پایانمخزن پارامتر ParamStore
ساختار مخزن پارامتر| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| پارامترها | items | وکتور<پارامتر> | پارامترها. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
افزودن add
تابع افزودن(name: رشته، t: تانسور.تانسور): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
شمار count
تابع شمار(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
عنصر at
تابع عنصر(h: صحیح): پارامترنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
صفر کردن گرادیان zero_grad
تابع صفر کردن گرادیان()نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
آزادسازی free
تابع آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
حافظه کوتاهمدت بلند LSTM
ساختار حافظه کوتاهمدت بلند| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| وزنورودی | wx | لایه خطی | وزن ورودی. |
| وزن حالت | wh | لایه خطی | وزن حالت. |
| اندازه حالت | hidden | صحیح = 0 | اندازهی حالت. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح، seq: صحیح، batch: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
واحد بازگشتی دروازهدار GRU
ساختار واحد بازگشتی دروازهدار| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| وزنورودی | wx | لایه خطی | وزن ورودی. |
| وزن حالت | wh | لایه خطی | وزن حالت. |
| اندازه حالت | hidden | صحیح = 0 | اندازهی حالت. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح، seq: صحیح، batch: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
لایه Layer
میانجی لایهنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
لایه یکسوساز ReluLayer
ساختار لایه یکسوساز| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| بیکاربرد | unused | صحیح = 0 | بیکاربرد. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، _ps &: مخزن پارامتر، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
لایه گلو GeluLayer
ساختار لایه گلو| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| بیکاربرد | unused | صحیح = 0 | بیکاربرد. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، _ps &: مخزن پارامتر، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
لایه تانژانت هذلولی TanhLayer
ساختار لایه تانژانت هذلولی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| بیکاربرد | unused | صحیح = 0 | بیکاربرد. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، _ps &: مخزن پارامتر، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
ترتیبی Sequential
ساختار ترتیبی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| لایهها | layers | وکتور | لایهها. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
افزودن add
تابع افزودن(l: dyn لایه)نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
آزادسازی free
تابع آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
لایه پیچشی Conv2D
ساختار لایه پیچشی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| شماره وزن | w | صحیح = -1 | شمارهی وزن. |
| شماره سوگیری | b | صحیح = -1 | شمارهی سوگیری. |
| گام | stride | صحیح = 1 | گام. |
| حاشیه | pad | صحیح = 0 | لایهگذاری. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
لایه بیشینهگیری MaxPool2D
ساختار لایه بیشینهگیری| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| اندازه پنجره | size | صحیح = 2 | اندازهی پنجره. |
| گام | stride | صحیح = 2 | گام. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
لایه میانگینگیری AvgPool2D
ساختار لایه میانگینگیری| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| اندازه پنجره | size | صحیح = 2 | اندازهی پنجره. |
| گام | stride | صحیح = 2 | گام. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
جاسازی Embedding
ساختار جاسازی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| شماره جدول | w | صحیح = -1 | شمارهی جدول. |
| اندازه واژگان | vocab | صحیح = 0 | اندازهی واژگان. |
| اندازه | dim | صحیح = 0 | اندازهی بردار. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، indices &: وکتور<صحیح>): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
نرمالسازی لایه LayerNorm
ساختار نرمالسازی لایه| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| شماره گاما | gamma | صحیح = -1 | شمارهی گاما. |
| شماره بتا | beta | صحیح = -1 | شمارهی بتا. |
| اپسیلون | eps | اعشار۶۴ = 1e-05 | عدد کوچک پایداری. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
نرمالسازی دسته BatchNorm
ساختار نرمالسازی دسته| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| شماره گاما | gamma | صحیح = -1 | شمارهی گاما. |
| شماره بتا | beta | صحیح = -1 | شمارهی بتا. |
| میانگین جاری | running_mean | تانسور.تانسور | میانگین جاری برای پیشبینی. |
| واریانس جاری | running_var | تانسور.تانسور | واریانس جاری. |
| تکانه | momentum | اعشار۶۴ = 0.1 | ضریب بهروزرسانی آمار جاری. |
| اپسیلون | eps | اعشار۶۴ = 1e-05 | عدد کوچک پایداری. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
آزادسازی free
تابع آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
نرمالسازی گروهی GroupNorm
ساختار نرمالسازی گروهی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| شماره گاما | gamma | صحیح = -1 | شمارهی گاما. |
| شماره بتا | beta | صحیح = -1 | شمارهی بتا. |
| گروهها | groups | صحیح = 1 | شمار گروهها. |
| اپسیلون | eps | اعشار۶۴ = 1e-05 | عدد کوچک پایداری. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
نرمالسازی جذر میانگین مربعات RMSNorm
ساختار نرمالسازی جذر میانگین مربعات| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| شماره گاما | gamma | صحیح = -1 | شمارهی گاما. |
| اپسیلون | eps | اعشار۶۴ = 1e-05 | عدد کوچک پایداری. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
لایه خطی Linear
ساختار لایه خطی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| شماره وزن | w | صحیح = -1 | شمارهی وزن. |
| شماره سوگیری | b | صحیح = -1 | شمارهی سوگیری. |
| اندازهورودی | in_features | صحیح = 0 | اندازهی ورودی. |
| اندازه خروجی | out_features | صحیح = 0 | اندازهی خروجی. |
| سوگیری دارد | has_bias | منطقی = درست | سوگیری دارد. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
حذف تصادفی Dropout
ساختار حذف تصادفی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| احتمال حذف | p | اعشار۶۴ = 0.1 | احتمال حذف. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
پیشرو forward
تابع پیشرو(tp &: مشتقگیری خودکار.نوار، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
تابعها
ذخیره نقطه بازرسی در بافر SaveCheckpointBuf
تابع ذخیره نقطه بازرسی در بافر(ps &: مخزن پارامتر): فشرده سازی.بافر بایتنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
بارگذاری نقطه بازرسی از بافر LoadCheckpointBuf
تابع بارگذاری نقطه بازرسی از بافر(buf: فشرده سازی.بافر بایت، ps &: مخزن پارامتر): Throws<منطقی>nn. میدهد.نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
ذخیره نقطه بازرسی SaveCheckpoint
تابع ذخیره نقطه بازرسی(path: رشته، ps &: مخزن پارامتر): منطقی.gz تمام شود با gzip فشرده میشود.نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
بارگذاری نقطه بازرسی LoadCheckpoint
تابع بارگذاری نقطه بازرسی(path: رشته، ps &: مخزن پارامتر): Throws<منطقی>یافت نشد و در غیر این صورت خطاهای بارگذاری نقطه بازرسی از بافر را میدهد، با نام پرونده در مسیر.نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
توجه چندسر جدید NewMultiHeadAttention
تابع توجه چندسر جدید(ps &: مخزن پارامتر، name: رشته، dim: صحیح، heads: صحیح، dropout: اعشار۶۴، g &: تانسور.مولد تصادفی): توجه چندسرنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
لایه رمزگذار ترنسفورمر جدید NewTransformerEncoderLayer
تابع لایه رمزگذار ترنسفورمر جدید(ps &: مخزن پارامتر، name: رشته، dim: صحیح، heads: صحیح، ff_dim: صحیح، dropout: اعشار۶۴، g &: تانسور.مولد تصادفی): لایه رمزگذار ترنسفورمرنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
ماسک علّی CausalMask
تابع ماسک علّی(seq: صحیح): تانسور.تانسورنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
لایه رمزگشای ترنسفورمر جدید NewTransformerDecoderLayer
تابع لایه رمزگشای ترنسفورمر جدید(ps &: مخزن پارامتر، name: رشته، dim: صحیح، heads: صحیح، ff_dim: صحیح، dropout: اعشار۶۴، g &: تانسور.مولد تصادفی): لایه رمزگذار ترنسفورمرنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
پیوند Bind
تابع پیوند(tp &: مشتقگیری خودکار.نوار، ps &: مخزن پارامتر، h: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
حافظه کوتاهمدت بلند جدید NewLSTM
تابع حافظه کوتاهمدت بلند جدید(ps &: مخزن پارامتر، name: رشته، in_f: صحیح، hidden: صحیح، g &: تانسور.مولد تصادفی): حافظه کوتاهمدت بلندنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
واحد بازگشتی دروازهدار جدید NewGRU
تابع واحد بازگشتی دروازهدار جدید(ps &: مخزن پارامتر، name: رشته، in_f: صحیح، hidden: صحیح، g &: تانسور.مولد تصادفی): واحد بازگشتی دروازهدارنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
گام آخر LastStep
تابع گام آخر(tp &: مشتقگیری خودکار.نوار، out: صحیح، seq: صحیح، batch: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
لایه پیچشی جدید NewConv2D
تابع لایه پیچشی جدید(ps &: مخزن پارامتر، name: رشته، in_ch: صحیح، out_ch: صحیح، k: صحیح، stride: صحیح، pad: صحیح، g &: تانسور.مولد تصادفی): لایه پیچشینمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
تختسازی Flatten
تابع تختسازی(tp &: مشتقگیری خودکار.نوار، x: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
جاسازی جدید NewEmbedding
تابع جاسازی جدید(ps &: مخزن پارامتر، name: رشته، vocab: صحیح، dim: صحیح، g &: تانسور.مولد تصادفی): جاسازینمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
موقعیت سینوسی SinusoidalPositions
تابع موقعیت سینوسی(batch: صحیح، seq: صحیح، dim: صحیح): تانسور.تانسورنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Sequence.salam
نرمالسازی لایه جدید NewLayerNorm
تابع نرمالسازی لایه جدید(ps &: مخزن پارامتر، name: رشته، dim: صحیح): نرمالسازی لایهنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
نرمالسازی دسته جدید NewBatchNorm
تابع نرمالسازی دسته جدید(ps &: مخزن پارامتر، name: رشته، channels: صحیح): نرمالسازی دستهنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
نرمالسازی گروهی جدید NewGroupNorm
تابع نرمالسازی گروهی جدید(ps &: مخزن پارامتر، name: رشته، channels: صحیح، groups: صحیح): نرمالسازی گروهینمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
نرمالسازی جذر میانگین مربعات جدید NewRMSNorm
تابع نرمالسازی جذر میانگین مربعات جدید(ps &: مخزن پارامتر، name: رشته، dim: صحیح): نرمالسازی جذر میانگین مربعاتنمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
لایه خطی جدید NewLinear
تابع لایه خطی جدید(ps &: مخزن پارامتر، name: رشته، in_f: صحیح، out_f: صحیح، g &: تانسور.مولد تصادفی): لایه خطینمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
لایه خطی بیبایاس NewLinearNoBias
تابع لایه خطی بیبایاس(ps &: مخزن پارامتر، name: رشته، in_f: صحیح، out_f: صحیح، g &: تانسور.مولد تصادفی): لایه خطینمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
ژاویر یکنواخت XavierUniform
تابع ژاویر یکنواخت(t &: تانسور.تانسور، fan_in: صحیح، fan_out: صحیح، g &: تانسور.مولد تصادفی)نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
ژاویر نرمال XavierNormal
تابع ژاویر نرمال(t &: تانسور.تانسور، fan_in: صحیح، fan_out: صحیح، g &: تانسور.مولد تصادفی)نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
کایمینگ یکنواخت KaimingUniform
تابع کایمینگ یکنواخت(t &: تانسور.تانسور، fan_in: صحیح، g &: تانسور.مولد تصادفی)نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam
کایمینگ نرمال KaimingNormal
تابع کایمینگ نرمال(t &: تانسور.تانسور، fan_in: صحیح، g &: تانسور.مولد تصادفی)نمونهی این مورد همراه با موارد بالاتر آمده است: ai-nn-Layers.salam