Clever coders 💻
82 subscribers
41 photos
14 videos
11 files
63 links
قراره کلی ابزار خفن و باحال معرفی کنیم که بتونی راحتر کد هاتو بنویسی و دیباگ کنی
و همچنین برنامه نویسی را یاد بگیری☕️

ارتباط با ادمین ها
@pytorch_for_ai
@MamaliR80

اینجا سوالاتتون را بپرسید😉
@codeclevers

با کلور کدرز یاد بگیر، لذت ببر و بروز باش 💣💥
Download Telegram
Clever coders 💻
#learn_pytorch خب برای بارگزاری داده ها باید از تابع Torchvision.datasets.MNIST() استفاده کنیم خب برای مثال باید این کار را انجام بدهیم Import torch import torchvision train_dataset = torchvision.datasets.MNIST(root="~/torch_datasets",train=True,transform=transform…
#learn_pytorch
خب حالا که کد را دیدی بیاییم کد را تحلیل کنیم
اول اجزای آن را توضیح میدهم=》
root=مسیری که قرار است دیتاست آنجا نصب شود الزامی است
=====================
train=یک بولین هست و نشان می‌دهد که در آنجا داده ها به انواع آموزش دانلود شود یا نه که اگر True باشد فقط داده های آموزش را دانلود می‌کند و اگر هم False باشد داده های آزمایشی را دانلود میکند
اجباری نیست ولی اگر باشد بهتر هست.
===========================
transform=برای تنظیم عکس ها به داده و تنسور است
الزامی هست تا باشد.
===========================
download=برای آن هست که داده ها دانلود شود و بارگزار شود
الزامی هست و بولین هست

@torchino_vision
#learn_pytorch

خب حالا زمانی که ما داریم transform را مساوی با transform میگزاریم یعنی چه؟
اون اولی یکی از توابع داخل بارگزاری داده ها هست
ولی خب چطوری transform را درست کنیم
این گونه است
transform = torchvision.transforms.Compose([    torchvision.transforms.ToTensor(),
    torchvision.transforms.Normalize((0.5,), (0.5,))])

خب همون طوری که قبلا گفتم با transform آشنا هستین

@torchino_vision
Clever coders 💻
#learn_pytorch خب حالا زمانی که ما داریم transform را مساوی با transform میگزاریم یعنی چه؟ اون اولی یکی از توابع داخل بارگزاری داده ها هست ولی خب چطوری transform را درست کنیم این گونه است transform = torchvision.transforms.Compose([    torchvision.tran…
#learn_pytorch

Normalize باعث میشه که مدل بهتر کار کنه
و این normalize باید بین ۰ تا ۱ باشد
چرا؟
چون تصاویر دیتاست mnist سیاه و سفید هست و مقادیر آنها بین ۰ تا ۱ هست و ما ۰.۵ را انتخاب میکنیم

و زمانی که ما ۰.۵ را انتخاب میکنیم یعنی در اصل داریم مقادیر اعداد پیکسل -۱ تا ۱ هست

خلاصه=》اعدادی که شما ارائه می‌دهید باید میانگین و انحراف استاندارد مجموعه داده شما باشد

@torchino_vision
#learn_pytorch
💻
خب به ادامه بحث پروژه می‌پیوندیم
●این مرحله باید یک دیتا لویدر بسازیم(DataLoader)

●ما در آن مرحله داشتیم داده ها را دانلود میکردیم و اکنون هم میخواهیم که داده ها در دسترس باشند

●برای این کار شما باید از تابع torch.utils.data.DataLoader استفاده کنید

اینم از کدش
import torch


batch_size = 128
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True)

test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size, shuffle=False)

توضیحات کد
batch_size = 128: این خط کد اندازه دسته‌های داده را تعیین می‌کند.
shuffle = True: تعیین می‌کند که آیا داده‌ها باید قبل از هر تکرار از حلقه for مخلوط شوند یا خیر

@torchino_vision
🔥2
#learn_pytorch
●اول کار باید بیاییم و درکی از مدل ها در پایتورچ داشته باشیم

■مدل سازی فرایند خیلی مهم و همین طور هم جالب در پایتورچ است

●از آنجایی که پایتورچ پایتونیک هست و همان طور هم پایتون یک زبان برنامه نویسی شی گرایی است، و بنا بر این هم پایتورچ یک کتابخانه ی شی گرایی است

●برای اول بیایید یک ساختار ساده از مدل در پایتورچ داشته باشیم
import torch

Class Net():
def init(self):
super(Net, self).init()

def forward(self,x):
Pass

این یک نمایی از یک مدل است
اما صبر کنید
پس شبکه های عصبی این مدل کجاست؟
خب دیگه این فقط اسکلت هست و در واقع هیچ کاری انجام نمیدهد🙃

@torchino_vision
#learn_pytorch

چگونه شبکه های عصبی را در مدل قرار دهیم؟
●ما انواع شبکه های عصبی را داریم
که در این جا چندین مثال از چندین شبکه عصبی می‌گوییم
👇

شبکه های عصبی کاملاً متصل (FCN): ساده ترین نوع شبکه عصبی، که از یک سری لایه های کاملاً متصل تشکیل شده است
این شبکه ها برای حل طیف گسترده ای از مسائل از جمله طبقه بندی، رگرسیون و یادگیری ماشین تقویتی استفاده می شوند.

شبکه های عصبی بازگشتی (RNN): شبکه هایی که می توانند اطلاعات را در طول زمان پردازش کنند. این شبکه ها برای حل مسائلی مانند پردازش زبان طبیعی، تشخیص گفتار و ترجمه ماشینی استفاده می شوند.

شبکه های عصبی کانولوشنی (CNN): شبکه هایی که برای پردازش داده های تصویری طراحی شده اند. این شبکه ها برای مسائلی مانند طبقه بندی تصویر، تشخیص شیء و بازیابی تصویر استفاده می شوند.

شبکه های عصبی عمیق (DNN): شبکه هایی که از چندین لایه تشکیل شده اند. این شبکه ها برای حل مسائل پیچیده ای که با شبکه های عصبی ساده قابل حل نیستند، استفاده می شوند

■خب ما در این پروژه از شبکه ی cnnاستفاده می‌کنیم

●شما باید بدانید که چطوری و کی و کجا از چه شبکه ای استفاده کنین
@torchino_vision
#learn_pytorch

خب پس مدل ما هم باید همچین کدی داشته باشد

class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.flatten = nn.Flatten()
        self.fc1 = nn.Linear(28 * 28, 128)
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(128, 10)

    def forward(self, x):
        x = self.flatten(x)
        x = self.fc1(x)
        x = self.relu(x)
        x = self.fc2(x)
        return x

@torchino_vision
Clever coders 💻
#learn_pytorch خب پس مدل ما هم باید همچین کدی داشته باشد class SimpleNN(nn.Module):     def __init__(self):         super(SimpleNN, self).__init__()         self.flatten = nn.Flatten()         self.fc1 = nn.Linear(28 * 28, 128)         self.relu = nn.ReLU()…
#learn_pytorch

توضیح کد
کلاس SimpleNN: این کلاس یک کلاس شبکه عصبی ساده را تعریف می کند.

init(self):
این تابع سازنده کلاس است. این تابع دو لایه کاملاً متصل را ایجاد می کند:

self.flatten:
 این لایه ورودی را به یک بردار یک بعدی تبدیل می کند.

self.fc1: 
این لایه یک تابع خطی را اعمال می کند.

self.relu: 
این لایه یک تابع فعال سازی ReLU را اعمال می کند.

self.fc2:
این لایه یک تابع خطی دیگر را اعمال می کند.

forward(self, x):** این تابع خروجی شبکه را برای یک ورودی خاص محاسبه می کند. این تابع به ترتیب لایه های شبکه را اعمال می کند.

لایه ورودی: این لایه ورودی را به یک بردار یک بعدی تبدیل می کند.

لایه کاملاً متصل: این لایه یک تابع خطی را اعمال می کند. تابع خطی یک تابع ریاضی است که یک بردار ورودی را به یک بردار خروجی تبدیل می کند.

تابع فعال سازی: تابع فعال سازی یک تابع ریاضی است که به هر گره در شبکه اجازه می دهد تا فقط یک مقدار بین 0 و 1 را داشته باشد. این برای جلوگیری از اشباع شدن شبکه و بهبود عملکرد آن استفاده می شود.

@torchino_vision
#learn_pytorch

مفاهیم مهم

nn.Linear(28 * 28, 128):
این لایه یک لایه خطی است که تعداد ورودی‌ها 28*28 است (چون تصاویر MNIST ابعاد 28x28 دارند) و تعداد نورون‌ها (یا واحدهای خروجی) در این لایه برابر با 128 است.
اگر نیاز دارید که این تعدادها تغییر کند، می‌توانید آنها را با مقادیر دلخواه خود جایگزین کنید. به عنوان مثال، اگر می‌خواهید تعداد نورون‌ها در این لایه 256 باشد، می‌توانید خط را به شکل زیر تغییر دهید:
nn.Linear(28 * 28, 256)

پس همیشه برای هر دیتاستی هر عدد و هر تعداد نورون جواب گو نیست و شاید به مشکل بر بخوريد

@torchino_vision
#learn_pytorch

خب دوستان ادامه پروژه

●حالا که مدل را ساختیم باید یک تابع خطا و بهینه سازی بسازیم

اصلا تابع خطا و بهینه سازی چیه؟
■تابع خطا و بهینه ساز دو مفهوم مهم در یادگیری عمیق هستند. تابع خطا یا تابع هزینه یک معیار برای اندازه گیری عملکرد مدل است. تابع خطا مقداری را محاسبه می کند که نشان می دهد که چقدر پیش بینی مدل با داده های واقعی متفاوت است. هدف از آموزش مدل کاهش مقدار تابع خطا است. بهینه ساز یک الگوریتم است که پارامترهای مدل را به روز می کند تا تابع خطا را کمینه کند. بهینه ساز می تواند از روش های مختلفی مانند گرادیان نزولی، مومنتوم، آدام و غیره استفاده کند.

=============================

خب حالا برای این‌ مدل چگونه همچین تابعی بسازیم

criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)

@torchino_vision
Clever coders 💻
#learn_pytorch خب دوستان ادامه پروژه ●حالا که مدل را ساختیم باید یک تابع خطا و بهینه سازی بسازیم ■اصلا تابع خطا و بهینه سازی چیه؟ ■تابع خطا و بهینه ساز دو مفهوم مهم در یادگیری عمیق هستند. تابع خطا یا تابع هزینه یک معیار برای اندازه گیری عملکرد مدل است.…
#learn_pytorch

توضیحات کد

■step 1

criterion = nn.CrossEntropyLoss() 
یک شیء از کلاس
 nn.CrossEntropyLoss 
را ایجاد می کند و آن را به متغیر criterion اختصاص می دهد. این کلاس یک تابع خطا است که برای مسائل طبقه بندی چند کلاسه مناسب است. این تابع خطا مقداری را محاسبه می کند که نشان می دهد که چقدر پیش بینی مدل با داده های واقعی متفاوت است. هدف از آموزش مدل کاهش مقدار تابع خطا است.

■step 2
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
یک شیء از کلاس
torch.optim.SGD
را ایجاد می کند و آن را به متغیر optimizer اختصاص می دهد. این کلاس یک بهینه ساز است که از روش گرادیان نزولی با مومنتوم استفاده می کند. گرادیان نزولی یک الگوریتم است که پارامترهای مدل را به روز می کند تا تابع خطا را کمینه کند. مومنتوم یک تکنیک است که به الگوریتم کمک می کند تا از گیر کردن در نقاط ثابت یا حداقل محلی جلوگیری کند و سرعت یادگیری را افزایش دهد. پارامترهای این کلاس عبارتند از:👇👇👇
model.parameters() که یک تکرار شونده از پارامترهای مدل است که قرار است به روز شوند.

lr=0.01 که نرخ یادگیری را مشخص می کند. نرخ یادگیری یک عدد مثبت کوچک است که تعیین می کند که چقدر پارامترهای مدل در هر گام بهینه سازی تغییر کنند.

momentum=0.9 که مقدار مومنتوم را مشخص می کند. مومنتوم یک عدد بین صفر و یک است که تعیین می کند که چقدر گرادیان های قبلی در محاسبه گرادیان فعلی تاثیر دارند.

نکته
قبل از این کد شما بایستی مدل خود را تعریف کنید =》model = SimpleNN

@torchino_vision
🔥2
#learn_pytorch

■آموزش مدل یکی از جالب ترین قسمت ها است
خب اول کد را ببینیم و بعد هم توضیحات را کامل کنیم
epochs = 10

# حلقه آموزشی
for epoch in range(epochs):
    # مقداردهی اولیه خطا و دقت
    train_loss = 0.0
    train_acc = 0.0
    # حالت آموزشی مدل
    model.train()
    # برای هر دسته از داده های آموزشی
    for images, labels in train_loader:
        # صفر کردن گرادیان ها
        optimizer.zero_grad()
        # پیش بینی مدل
        outputs = model(images)
        # محاسبه خطا
        loss = criterion(outputs, labels)
        # محاسبه گرادیان ها
        loss.backward()
        # به روز رسانی پارامترها
        optimizer.step()
        # اضافه کردن خطا به مجموع خطا
        train_loss += loss.item()
        # محاسبه دقت
        _, preds = torch.max(outputs, 1)
        train_acc += torch.sum(preds == labels).item()
    # محاسبه میانگین خطا و دقت
    train_loss = train_loss / len(train_loader)
    train_acc = train_acc / len(train_dataset)
    # چاپ نتایج
    print(f"Epoch {epoch+1}, Train Loss: {train_loss:.4f}, Train Accuracy: {train_acc:.4f}")
@torchino_vision
🔥2
Clever coders 💻
#learn_pytorch ■آموزش مدل یکی از جالب ترین قسمت ها است خب اول کد را ببینیم و بعد هم توضیحات را کامل کنیم epochs = 10 # حلقه آموزشی for epoch in range(epochs):     # مقداردهی اولیه خطا و دقت     train_loss = 0.0     train_acc = 0.0     # حالت آموزشی مدل…
#learn_pytorch

■توضیحات کد


- epochs = 10
یک متغیر را با مقدار 10 ایجاد می کند و آن را به نام epochs می نامد. این متغیر تعداد دوره های آموزشی را مشخص می کند. یک دوره آموزشی به معنای اجرای مدل بر روی تمام داده های آموزشی است.
=====================
- for epoch in range(epochs):
یک حلقه for را شروع می کند که برای هر مقدار از 0 تا 9 (که 10 عدد هستند) یک بار اجرا می شود. این حلقه برای اجرای مدل بر روی داده های آموزشی به تعداد دوره های آموزشی است. متغیر epoch شمارنده حلقه است که نشان می دهد که چندمین دوره آموزشی در حال اجرا است.
=======================
- train_loss = 0.0
یک متغیر را با مقدار 0.0 ایجاد می کند و آن را به نام train_loss می نامد. این متغیر مجموع خطای مدل بر روی داده های آموزشی را نگه می دارد.
=======================
- train_acc = 0.0
یک متغیر را با مقدار 0.0 ایجاد می کند و آن را به نام train_acc می نامد. این متغیر مجموع دقت مدل بر روی داده های آموزشی را نگه می دارد.
=======================
- model.train()
یک متد را از شیء model فراخوانی می کند که حالت مدل را به حالت آموزشی تغییر می دهد. این متد باعث می شود که مدل از برخی تکنیک های مانند دراپ آوت که برای جلوگیری از بیش برازش مفید هستند استفاده کند.
=======================
- for images, labels in train_loader:
یک حلقه for دیگر را شروع می کند که برای هر دسته از داده های آموزشی یک بار اجرا می شود. این حلقه برای اجرای مدل بر روی هر دسته از داده های آموزشی است. متغیرهای images و labels داده های ورودی و خروجی مورد نظر مدل را نگه می دارند.
=======================
- optimizer.zero_grad()
یک متد را از شیء optimizer فراخوانی می کند که گرادیان های پارامترهای مدل را صفر می کند. این متد باعث می شود که گرادیان های قبلی در محاسبه گرادیان های فعلی تاثیر نگذارند.
========================
- outputs = model(images)
یک متد را از شیء model فراخوانی می کند که داده های ورودی را به عنوان پارامتر می گیرد و پیش بینی مدل را به عنوان خروجی می دهد. این متد مدل را بر روی داده های ورودی اجرا می کند و یک تانسور از احتمالات هر کلاس را بر می گرداند. متغیر outputs این تانسور را نگه می دارد.
=======================
- loss = criterion(outputs, labels)
یک متد را از شیء criterion فراخوانی می کند که پیش بینی مدل و داده های واقعی را به عنوان پارامترها می گیرد و مقدار خطا را به عنوان خروجی می دهد. این متد تابع خطا را بر روی پیش بینی مدل و داده های واقعی محاسبه می کند و یک عدد اسکالر را بر می گرداند. متغیر loss این عدد را نگه می دارد.
=======================
- loss.backward()
یک متد را از شیء loss فراخوانی می کند که گرادیان های پارامترهای مدل را محاسبه می کند. این متد با استفاده از قاعده زنجیره ای گرادیان های مربوط به هر پارامتر مدل را بر اساس تابع خطا مشتق می کند و آن ها را در خاصیت grad هر پارامتر ذخیره می کند.
=======================
- optimizer.step()
یک متد را از شیء optimizer فراخوانی می کند که پارامترهای مدل را به روز می کند. این متد با استفاده از گرادیان های محاسبه شده و نرخ یادگیری و مومنتوم، پارامترهای مدل را به سمت جهتی که تابع خطا را کمینه می کند حرکت می دهد.
=======================
- train_loss += loss.item()
یک عبارت را اجرا می کند که مقدار خطا را به مجموع خطا اضافه می کند. متد item()
یک متد از شیء loss
است که مقدار عددی اسکالر را از تانسور خطا استخراج می کند.
=======================
- _, preds = torch.max(outputs, 1)
یک عبارت را اجرا می کند که پیش بینی های مدل را به برچسب های عددی تبدیل می کند. تابع torch.max()
یک تابع از کتابخانه torch است که بیشترین مقدار و شاخص آن را در یک تانسور بر می گرداند. پارامتر 1 نشان می دهد که بیشترین مقدار در بعد دوم تانسور (که نشان دهنده کلاس هاست) محاسبه ش

اگر جایی را کم و زیاد یا اشتباه گفتم بگید🌺

@torchino_vision
🔥3
#learn_pytorch

دیگر آخرین قدم را باید برای اتمام پروژه برداریم😉

■خب ما تا کنون کلی کار انجام دادیم و حالا الان نوبت میرسه به ارزیابی مدل

■ارزیابی مدل به قسمتی می‌گویند که مدل خودمان را چک می‌کنیم تا ببین درصد خطا و یا بازدهی آن چه قدر است و آیا توانسته است که بخوبی مدل را آموزش دهد یا خیر.

مثل همیشه اول نمایی از کد را داشته باشیم و بعد هم بریم سراغ توضیحات کد
# ارزیابی مدل
model.eval()
correct = 0
total = 0
with torch.no_grad():
for batch in test_loader:
images, labels = batch
outputs = model(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()

accuracy = correct / total
print(f'Test Accuracy: {accuracy * 100:.2f}%')
خب حالا ببینیم که این کد چطوری کار میکند👇👇
model.eval()
با این دستور، مدل به حالت ارزیابی تنظیم می‌شود. این حالت تأثیری در عملکرد لایه‌های مختلف مدل دارد (برای مثال، برخی از لایه‌ها مانند Dropout در حالت ارزیابی غیرفعال می‌شوند).
=========================
correct = 0
total = 0
این متغیرها برای حساب دقت نهایی مدل استفاده می‌شوند. correct تعداد پیش‌بینی‌های صحیح و total کل تعداد نمونه‌ها را نگه می‌دارند
==========================
with torch.no_grad():
for batch in test_loader:
images, labels = batch
outputs = model(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
در اینجا، با استفاده از اطمینان حاصل می‌شود که محاسبات گرادیان برای این مرحله انجام نمی‌شود (زیرا در حالت ارزیابی نیازی به آپدیت گرادیان نیست). برای هر دسته از داده‌های تست، مدل پیش‌بینی‌های خود را ایجاد می‌کند
==========================
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
این مراحل برای هر دسته از داده‌های تست اجرا می‌شوند.
torch.max(outputs.data, 1)
برچسب پیش‌بینی شده توسط مدل را برمی‌گرداند. سپس با مقایسه آن با برچسب‌های واقعی، تعداد پیش‌بینی‌های صحیح و کل تعداد نمونه‌ها آپدیت می‌شوند
==========================
accuracy = correct / total
در انتها، با تقسیم تعداد پیش‌بینی‌های صحیح بر کل تعداد نمونه‌ها، دقت نهایی مدل محاسبه می‌شود
=========================
accuracy = correct / total
print(f'Test Accuracy: {accuracy * 100:.2f}%')
و این‌قطعه‌کد دقت نهایی ارزیابی مدل را چاپ میکند

@Torchino_vision
🔥31👍1
#learn_pytorch
اگه شما میخواید که روند پردازش تصویر ساده که با لایه های کانولوشن اجرا میشه را ببینید و درک‌ کلی از لایه های کانولوشن داشته باشین
میتونید به این وب سایت سر بزنید
👇
CNN Explanier

🔥@Clevercoders
2🔥1👌1
یکسری دستورات هستن که کمتر توی آموزش‌ها درموردشون صحبت میشه، چون رایج نیستن. ولی وقتی موقعش برسه میتونن کارمون رو خیلی راحت کنن.

تصور کن یک آرایه دو بعدی داری که یکسری درایه‌هاش nan هستن. حالا تو میخوای میانگین و انحراف معیار این آرایه دوبعدی رو حساب کنی. به نظرت باید چیکار کرد؟ اول درموردش فکر کن و بعد بخش اسپویلر رو ببین...

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

خب به نظر میرسه که باید دو تا تابع برای محاسبه میانگین و انحراف بنویسیم که احتمالا سه چهار خطی کد و یکم هم فکر کردن نیاز داره...

اما این موقعیت همون موقعیتی هست که دستورهای آماده نه‌چندان رایج میتونن کمکمون کنن. دستورهای np.nanmean و np.nanstd به راحتی میانگین و انحراف رو بدون nan حساب میکنن. به همین سادگی! 😉


#AI
#learn_pytorch
#method

💻@Clevercoders
👏41😢1
کمبود GPU RAM؟!
بیایید یک راه‌کار ساده و فوق‌العاد کارآمد به شما یاد بدهیم...

کم بودن GPU RAM می‌تواند شما را در انتخاب سایز شبکه عصبی و همچنین بچ‌ساز محدود کند. اما راه‌کارهای مختلفی وجود دارد که شما از همان RAM کم نهایت استفاده را ببرید. یکی از راه‌کارها آموزش مدل با Float16 هست!

به‌صورت پیش‌فرض، در پایتورچ داده‌ها و مدل‌ها بر پایه Float32 هستند. اما با تغییراتی کوچک در کد، می‌توان داده‌ها و مدل‌ها را بر پایه Float16 تعریف کرد و تا 50 درصد از مصرف RAM صرفه‌جویی کرد! شاید باورتان نشود! این راه‌کار هم مصرف RAM را کاهش می‌دهد و هم در بسیاری از مسائل افت قابل توجهی در عملکرد (مثلا دقت) ایجاد نمی‌کند. حالا که مصرف RAM کمتر شده، می‌توانید هم مدل بزرگتری داشته باشید و هم بچ‌سایز را بزرگتر کنید.

در پایتورچ چگونه می‌توان از این ترفند استفاده کرد؟
در لینک زیر، خیلی ساده این ترفند توضیح داده شده است:
https://pytorch.org/tutorials/recipes/recipes/amp_recipe.html


#learn_pytorch
#pytorch
#AI

💻@Clevercoders
👌4👍1👏1
سلام به دوستان عزیز
امید وارم حالتون خوب باشه

یک کتابخانه ی دیگه آوردم مخصوص افرادی که داخل پایتورچ کار میکنن

اسمش torchinfo هست
که میتونی با دستور زیر در ترمینال خودت نصب کنید
pip install torchinfo

خب حالا میپرسید که چی کار میکنه؟
این کتابخانه تقریبا تمام اطلاعات را در رابطه با مدلی که در پایتورچ ساخته شده میده
مثل تعداد پارامتر ها و ...



#learn_pytorch

🔥@Clevercoders
5🔥1
Udemy – PyTorch for Deep Learning in 2023: Zero to Mastery 2023-6

دوره آوردم براتون چه دوره ای
اینو بخونی تقریبا برای خودت متخصصی میشی داخل پایتورچ (به شرطی که تلاش و اراده خودت را کنی و فقط به دیدن فیلم اکتفا نکنید )

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

سطح آموزش: متوسط
تعداد دروس: 358
مدت زمان آموزش: 52 ساعت و 14 دقیقه 😵‍💫
دارای زیرنویس انگلیسی
پ.ن : این دوره جز BestSeller های یودمی هست .
از طریق لینک زیر میتونی ببینیش
تازه رایگان هم هست
دیگه چی میخوای
🌱

Learn_pyrorch_zero_to_mastry_free_course

#pytorch
#learn_pytorch

💻@Clevercoders
4🙏2👍1
سلام به علاقه مندان ریاضی و هوش مصنوعی🌱
امروز می‌خوام در رابطه با گرادیان (در هوش مصنوعی) صحبت کنم‌که اصلا چیه؟🧐
خب ساده ترین توضیح برای گرادیان اینجاست😉👇

خب فرض کن که داخل هوای مه آلود که فقط میتونی یک سانتیمتر از اطرافت را ببینی میخوای به قله ی یک کوه برسی
خب‌حالا گرادیان میاد و ارتفاع را محاسبه میکنه و میکه که در کدوم جهت حرکت کن
و شما میتونید یک متر حرکت کنید و یا اینکه ۱۰ متر حرکت کنید.
ولی اگه ۱۰۰ متر حرکت کنید ممکنه قله را رد کنی و اصلا برید اونطرف کوه
ولی بازم اگه یک سانت یک سانت حرکت کنی ممکنه خیلی طول بکشه تا به قله برسی
اینم از اهمیت
learning rate(نرخ یادگیری) در گرادیان

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


#AI #mathematics
#Deep_learning #learn_pytorch
💻@Clevercoders
👏52