logo-trickdone.com logo-trickdone.com

راهنمای شخصی‌سازی زندگی

3

کسب‌وکارهای کوچک و خانگی

4

ترفندهای مدیریت زمان

5

آموزش شبکه‌ های عصبی عمیق با PyTorch

1

بازی‌های آنلاین

4

درآمد آنلاین و دیجیتال مارکتینگ

4

نوآوری در گیمینگ

1

رمزارزها

4

سرمایه‌گذاری هوشمند

1

ابزارها و پلتفرم های هوش مصنوعی

5

فارکس

1

سلامت روان

1

سلامت جسمی

4

خبرهای بازار و اقتصاد دیجیتال

4

آموزش و یادگیری هوش مصنوعی

2

خبرهای تکنولوژی و نوآوری

7

گجت‌ها و ابزارهای جدید

1

یادگیری تا درآمد در برنامه‌ نویسی

7

ابزارها و فریمورک‌ها

6
EN
EN

مروری بر تنسورها در پایتورچ

در این مطلب شما با تنسورها (Tensors) و نحوه استقاده از آنها به عنوان بلوک های سازنده شبکه های عصبی در پایتورچ (PyTorch) آشنا خواهید شد و در ادامه تنسورها رو در یک بعد، دو بعد و بیشتر بررسی می کنیم. علاوه بر آن در خصوص مشتقات، کلاس دیتاست بحث می کنیم.


شبکه های عصبی در PyTorch: 

به ساده تدرین بیان، شبکه عصبی یک تابع ریاضی است که یک یا چند ورودی دریافت می کند، آن(ها) رو پردازش می کند، سپس یک یا چند خروجی تولید می کند. در PyTorch شبکه های عصبی از تنسورهای PyTorch  ایجاد می شوند. در واقع یک تنسور PyTorch یک داده ساختار یافته (Data structure) برای اعداد و آرایه های چند بعدی در پایتون (Python) است. برای شبکه عصبی، ورودی x یک تنسور است که خروجی y نیز یک خواهد بود و در نظر داشته باشد که شبکه عصبی از مجموعه ای از پارامترها تشکیل شده است که آنها نیز تنسور هستند.برای تولید یک یا چند خروجی، شبکه عصبی باید ورودی خود را پردازش کند. برای پردازش، شبکه عصبی یک سری عملیات تنسوری را روی ورودی دریافتی اعمال می کند که بسیاری از این عملیات تنسوری، عملیات های ریاضی مانند ضرب و جمع هستند. 

 
Deep neural network Input layer Multiple hidden layer Output layer
 

در این دوره قصد داریم بر روی عملیات های تنسوری که به طور اساسی عملیات برداری و ماتریسی هستند، تمرکز کنیم و در ادامه، داده های خود را به تنسورهای PyTorch تبدیل می کنیم که از آن ها به عنوان خوراک یا ورودی شبکه های عصبی استفاده خواهیم کرد.  به عنوان مثال اگر بخواهیم از یک پایگاه داده به عنوان ورودی برای یک شبکه عصبی استفاده کنیم می توانیم بصورت تصویر زیر عمل کنیم. در مثال زیر هر ردیف از پایگاه داده می تواند به عنوان یک تنسور PyTorch در نظر گرفته شود. بنابراین می بینیم که یک تنسور یک بردار یا یک آرایه مستطیلی شامل اعداد است. 

 

Database table record convert to pytorch tensor

شاید این سئوال برای شما مطرح شود که داده های غیر عددی رو چطور به شبکه عصبی بدهیم؟

پاسخ این سئوال به روشنی در تصویر زیر قابل درک است. ابتدا هر تصویر به تنسورهای PyTorch تبدیل می شود و سپس به  عنوان ورودی شبکه عصبی مورد استفاده قرار می گیرد. به همین راحتی ... 😄

تصاویر در Python معمولا به صورت آرایه های دو بعدی و سه بعدی نمایش داده می شوند، بنابراین در این مورد، هر تنسور ورودی به سادگی یک ماتریس یا آرایه مستطیلی است. همچنین می بینیم که شبکه عصبی ورودی تصویر را دریافت می کند که به تنسورهای PyTorch تبدیل شده و آن را به عنوان صفر طبقه بندی می کند. 

 

Converting an image to a tensor in PyTorch

در نظر داشته باشید که تبدیل تنسورهای PyTorch به آرایه های numpy  و بالعکس بسیار آسان است و این قابلیت به PyTorch این امکان رو می‌دهد تا در اکوسیستم Python کار کند. علاوه بر این امکان، می‌توانیم به راحتی PyTorch  را با GPU یکپارچه کنیم که یک عامل مهم برای آموزش شبکه های عصبی است. پارامترهای موجود در شبکه عصبی نوعی تنسور هستند که به شما امکان محاسبه گرادیان ها یا مشتقات را می دهند و از همین رو گرادیان ها و مشتقات به شما این امکان را می‌دهند که شبکه عصبی را آموزش دهید. 

👈ما از پارامترها برای شبکه های عصبی خود در PyTorch با تنظیم مقدار پارامتر requires_grad = True  استفاده خواهیم کرد. ما همچنین کلاس دیتاست را بررسی می کنیم که کار با مجموعه داده های بزرگ در PyTorch را بسیار آسان تر می کند. 

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

تنسورها و ابعاد آن‌ها  ؟!

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

اجازه بدید ابتدا بفهمیم که یک تنسور یک بعدی چیست؟

ولی قبلش باید بدانیم که تنسور صفر بعدی هم داریم. 😮

  • تنسور صفر بعدی فقط یک عدد است :  1, 2, 0.2, 10, 250 
  • تنسور یک بعدی یک آرایه از اعداد است که می تواند یک ردیف از جدول یک پایگاه داده، یک سری زمانی یا یک بردار باشد. 
Price ... Age Rooms House
40   5 2 1
26   34 1 2
10   1 5 3
41   15 3 4
Time Series
vector

انواع داده‌ها یا Data Types

عناصر موجو در یک تنسور، همگی از یک نوع داده هستند، لذا وقتی می‌گوییم Tensor Type منظور نوع تنسور است. هنگام کار با اعداد حقیقی، Tensor Type می‌تواند FloatTensor یا DoubleTensor  باشد که اعداد اعشاری را شامل می‌شوند. به عنوان مثال وقتی هنگام کار با اعداد صحیح بدون علامت که در تصاویر 8 بیتی استفاده می‌شوند، نوع تنسور ByteTensor است. بنابراین، م یبینیم که بسته به نوع داده‌ای عناصر در تنسور، انواع مختلفی از تنسورها را داریم.  

منتشر شده در: 28-اردیبهشت-1405     

دیدگاه ها

آموزش شبکه‌ های عصبی عمیق با PyTorch

1