معماری SqueezeNet یک شبکه عصبی کانولوشنی (CNN) هست که برای اولین بار در سال 2016 معرفی شد. این معماری با هدف ارائه دقت مشابه با AlexNet با ۵۰ برابر پارامتر کمتر طراحی شده بود.
یکی از ویژگیهای کلیدی SqueezeNet اینکه با کاهش تعداد پارامترها، فضای ذخیرهسازی کمتری اشغال میکنه و سریعتر میشه روی دستگاههای دارای منابع محدود اجراش کرد.
معماری SqueezeNet بر اساس سه اصل اساسی طراحی شده:
واحد اصلی در SqueezeNet ماژول Fire هست. هر ماژول Fire از دو بخش تشکیل شده: یک لایه فشردهساز (Squeeze) که از فیلترهای 1x1 استفاده میکنه، و لایههای گسترشدهنده (Expand) که از ترکیبی از فیلترهای 1x1 و 3x3 استفاده میکنه.
#Deep_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2👌2👨💻1
❓کوییز شماره ۱۱۰: در نسخه 1.1 SqueezeNet، تغییر کدوم پارامتر باعث کاهش 2.4 برابری محاسبات و کاهش تعداد پارامترها شده، بدون اینکه دقت کاهش پیدا کنه؟
Anonymous Quiz
18%
افزایش تعداد لایهها
41%
کاهش اندازه کرنلها
29%
کاهش تعداد واحدهای Fire
12%
تغییر در تعداد کانالهای لایههای فشردهساز (Squeeze)
❤4👍3👨💻1
نمودار شامل روند استفاده از شش معماری شبکه عصبی عمیق در طول زمانه، که بر اساس تعداد اشارات در مقالات علمی محاسبه شده.
#Deep_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🔥1👏1
معماری MobileNet با هدف ارائه مدلی با تعادل مناسب بین دقت و سرعت طراحی شده و با استفاده از تکنیکهای مختلفی مثل فاکتور بندی عمقی (depthwise separable convolution) بهینهسازی میشه تا تعداد پارامترها و محاسبات رو بدون تأثیر چشمگیری روی دقت مدل کاهش بده.
در MobileNet، فاکتور بندی عمقی، عملیات کانولوشن رو به دو بخش تقسیم میکنه: کانولوشن عمقی (Depthwise Convolution) و کانولوشن نقطهای (Pointwise Convolution).
کانولوشن عمقی روی هر کانال ورودی به طور جداگانه اجرا میشه، در حالی که کانولوشن نقطهای ترکیبی از کانالهای خروجی از کانولوشن عمقی رو ایجاد میکنه.
این معماری در طی زمان تکامل پیدا کرد و نسخههای مختلفی مثل MobileNetV1, MobileNetV2 و MobileNetV3 ارائه شدن.
این معماری با استفاده از Quantization امکان اجرا در سرعتهای بالاتر، با استفاده از حافظه کمتر رو فراهم میکنه. این فرایند دادهها و وزنهای مدل رو به فرمتهای با دقت کمتر تبدیل میکنه تا مصرف حافظه و محاسبات کاهش پیدا کنه.
#Deep_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👌2👍1👨💻1
❓کوییز شماره ۱۱۱: در مدلهای MobileNet v1 به MobileNet v2 چه تفاوتی وجود داره؟
Anonymous Quiz
67%
مدل MobileNet v2 دارای معماری بهبود یافته برای کاهش حجم مدل و افزایش دقته.
0%
مدل MobileNet v1 فقط برای دستهبندی تصاویر ساخته شده در حالی که MobileNet v2 برای تولید تصاویره.
27%
مدل MobileNet v2 برای کاربردهایی که به مقاومت شبکه در مقابل نویز نیازه، طراحی شده.
7%
مدل MobileNet v1 سادهتر از MobileNet v2 هست و فقط برای دستهبندی تصاویر کوچک استفاده میشه.
👌3👍2😎2
در حالی که اکثر معماریهای قبلی تمرکزشون روی افزایش تنها یکی از ابعاد مدل، مثل عمق یا پهنا، قرار میدادن، EfficientNet به طور همزمان و متناسب هر سه بعد مهم مدل یعنی عمق، پهنا و رزولوشن تصویر رو افزایش میده و این روش مقیاسبندی ترکیبی (Compound Scaling Method) نام داره.
این رویکرد مقیاسبندی با افزایش حجم محاسبات به صورت یکنواخت در تمامی ابعاد، باعث میشه مدل از منابع به شکل موثرتری استفاده کنه و دقت شبکه بهبود پیدا کنه.
در EfficientNet، سه بعد مهم برای مقیاسبندی وجود داره: عمق (Depth)، پهنا (Width)، و اندازه تصویر (Resolution). افزایش هر کدوم از این ابعاد میتونه به بهبود عملکرد شبکه کمک کنه، اما باید به نحو اثربخشی تعادل بینشون برقرار شه.
این معماری با استفاده از یک فرایند بهینهسازی مبتنی بر نظریه اطلاعات، تعادلی بین این سه بعد برقرار میکنه. این بهینهسازی باعث میشه که با افزایش مقیاس شبکه، کارایی به صورت موثر افزایش پیدا کنه.
معماری EfficientNet شامل چندین مدل با مقیاسهای مختلف، از B0 تا B7 هست، که هر کدوم برای کاربردهای مختلف طراحی شدن. هر چی شماره بزرگتر باشه، مدل پیچیدهتر و قدرتمندتره، اما به استفاده از منابع بیشتری نیز نیاز داره.
#Deep_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌4❤2👍2👨💻1
❓کوییز شماره ۱۱۲: کدوم مورد درباره مدل EfficientNet صحیحه؟
Anonymous Quiz
33%
مدل EfficientNet با استفاده از تکنیکهای Data Augmentation مثل Random Rotation عملکرد بهتری داره.
27%
مدل EfficientNet با افزایش اندازه شبکههای عصبی از سطح زیادی از توجه و تمرکز استفاده میکنه.
40%
یکی از مزایای مدل EfficientNet، امکان اجراش روی دستگاههای با منابع محدود مثل گوشیهای هوشمنده.
0%
معماری EfficientNet فقط برای وظایف دستهبندی تصاویر مناسبه و برای وظایف دیگه کارایی مناسبی نداره.
👍3🤔3😎3
Forwarded from رضا شکرزاد - علمداده و هوش مصنوعی
به خاطر ساختار نتورک و سرعت بالاتر در فازهای train و test، از بین نتورکهای عمیق برنده ILSVRC نتورک EfficientNet یکی از محبوب ترینهاست.
در این ویدیو روی مقاله EfficientNet صحبت میشه و از روی داکیومنت کراس، از مدل pre-trainedاش برای کلاسبندی دیتاست Food101 استفاده میکنیم.
#YouTube
#Deep_Learning
@DSLanders | دیاسلندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
دیپ لرنینگ | EfficientNet یادگیری انتقالی و پیاده سازی با Keras
به خاطر ساختار نتورک و سرعت بالاتر در فازهای train و test از بین نتورکهای عمیق برنده ILSVRC نتورک EfficientNet یکی از محبوبهاست. تو این ویدیو روی مقاله efficientNet صحبت میشه و از روی داکیومنت کراس از مدل pre-trained اش هم برای کلاسبندی دیتاست Food101 استفاده…
❤4👍3👨💻1
کراس یک کتابخانه متنباز، روی کتابخانههای Theano و TensorFlow هست و به عنوان یک واسط عمل میکنه در نتیجه بدون نیاز به یادگیری پیچیدگیهای Theano یا TensorFlow، میشه مدلهای یادگیری عمیق کارآمد ساخت.
در این قسمت، برای مثال ساخت مدل شبکه عصبی در کراس، از تابع متمرکز و سه لایهٔ کاملاً متصل استفاده شده:
from keras.layers import Input, Dense
from keras.models import Model
# تعریف لایهٔ ورودی
input_layer = Input(shape=(input_dim,))
# تعریف لایهٔ مخفی اول
hidden_layer_1 = Dense(units=64, activation='relu')(input_layer)
# تعریف لایهٔ مخفی دوم
hidden_layer_2 = Dense(units=32, activation='relu')(hidden_layer_1)
# تعریف لایهٔ خروجی
output_layer = Dense(units=output_dim, activation='softmax')(hidden_layer_2)
# تعریف مدل با استفاده از تابع متمرکز
model = Model(inputs=input_layer, outputs=output_layer)
# نمایش ساختار مدل
model.summary()
در این کد، اول لایهٔ ورودی با استفاده از تابع Input تعریف شده. بعد دو لایهٔ مخفی با استفاده از تابع Dense هر کدوم با تعداد واحدها و تابع فعالساز مشخص تعریف شدن. در نهایت، لایهٔ خروجی تعریف شده و مدل با استفاده از توابع متمرکز ساخته شده.
در این قسمت، مثالی از ساختار مدل با استفاده از ساختار توالی رو مشاهده میکنین:
from keras.models import Sequential
from keras.layers import Dense
# تعریف یک مدل توالی
model = Sequential()
# اضافه کردن لایهٔ ورودی و لایهٔ مخفی اول
model.add(Dense(units=64, activation='relu', input_dim=input_dim))
# اضافه کردن لایهٔ مخفی دوم
model.add(Dense(units=32, activation='relu'))
# اضافه کردن لایهٔ خروجی
model.add(Dense(units=output_dim, activation='softmax'))
# نمایش ساختار مدل
model.summary()
در این مثال، یک شیوهٔ سادهتر برای ساخت مدل از طریق ساختار توالی را مشاهده میکنید. لایهها به ترتیب به مدل اضافه شده و با استفاده از تابع add امکان اضافه کردن لایهها فراهم میشه.
بعد از تعریف ساختار مدل، مراحل دیگهای برای آمادهسازی مدل برای آموزش و ارزیابی وجود داره. این مراحل شامل compile کردن مدل، آموزش مدل و ارزیابی عملکرده.
بعد از تعریف ساختار مدل، نیازه که مدل compile شه. در این مرحله، مشخص میشه که مدل چطور باید آموزش داده شه. برای این کار در تابع compile تابع هزینه (loss function)، الگوریتم بهینهسازی (optimizer) و معیارهای ارزیابی (metrics) اضافه میشن.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
در این مثال، از الگوریتم بهینهسازی Adam و تابع هزینهٔ cross-entropy دستهای استفاده شده. همچنین، معیار دقت (accuracy) برای ارزیابی عملکرد مدل در هر دوره از آموزش مشخص شده.
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val))
در این مثال، مدل در ده epoch روی دادههای آموزشی آموزش داده میشه. دادهها به دستههایی به اندازهٔ 32 نمونه تقسیم شده و بعد از پایان هر دوره، عملکرد مدل روی دادههای اعتبارسنجی با استفاده از دادههای اعتبارسنجی ارزیابی میشه.
بعد از آموزش مدل، عملکردش روی دادههای Test یا دادههای اعتبارسنجی ارزیابی میشه. برای این کار از تابع evaluate استفاده میشه.
loss, accuracy = model.evaluate(X_test, y_test)
#Deep_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👌3👍1👨💻1
❓کوییز شماره ۱۱۳: کاربرد اصلی keras.applications چیه؟
Anonymous Quiz
38%
برای ایجاد لایههای سفارشی در شبکههای عصبی
44%
برای آموزش مدلهای عمیق از پیش آموزش دادهشده روی دادههای جدید
6%
برای انجام پردازشهای تصویری ساده
13%
برای تولید دادههای تصویری مصنوعی
👍5❤2👌1👨💻1
کارکرد keras.preprocessing.text.Tokenizer این امکان رو میده که متن رو به دنبالهها یا بردارهای رمزگذاری شده one-hot تبدیل کنید.
from keras.preprocessing.text import Tokenizer
tokenizer = Tokenizer(num_words=1000)
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)
در این مثال، یک tokenizer با حداکثر 1000 کلمه منحصر به فرد ایجاد و روی مجموعه دادهای از متنها آموزش داده میشه. درنهایت متنها رو به دنبالهای از اعداد صحیح تبدیل میکنه.
#Deep_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🤔1
کتابخانه PyTorch یک کتابخانه متن باز برای پیادهسازی الگوریتمهای یادگیری عمیق در پایتونه. این کتابخانه توسط تیم تحقیقاتی شرکت فیسبوک توسعه پیدا کرد. PyTorch امکاناتی برای ساخت، آموزش و ارزیابی شبکههای عصبی فراهم میکنه.
یکی از مفاهیم مهم در PyTorch، تنسورها (Tensors) هستن. تنسورها مثل آرایههای چند بعدی در NumPy عمل میکنن، با این تفاوت که میتونن روی دستگاههای GPU هم قرار بگیرن. برای تعریف یک تنسور در PyTorch، میشه از دستورات زیر استفاده کرد:
import torch
# تعریف یک تنسور با مقدار ثابت
x = torch.tensor([5.0, 3.0])
print(x)
# تعریف یک تنسور خالی
y = torch.empty(3, 2)
print(y)
نحوه ساخت یک مدل شبکه عصبی ساده با استفاده از PyTorch:
import torch
import torch.nn as nn
import torch.optim as optim
# تعریف مدل شبکه عصبی
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc = nn.Linear(3, 1) # 3 ورودی و 1 خروجی
def forward(self, x):
return self.fc(x)
# ایجاد نمونه از مدل
model = SimpleNN()
# تعریف تابع هزینه و بهینهساز
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# دادههای ورودی و خروجی مثال
inputs = torch.tensor([[1.0, 2.0, 3.0]])
targets = torch.tensor([[4.0]])
# آموزش مدل
for epoch in range(100):
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
if (epoch+1) % 10 == 0:
print(f'Epoch [{epoch+1}/100], Loss: {loss.item()}')
تورچ ویژن (TorchVision) یک بخش از کتابخانه PyTorch هست که ابزارهای مختلفی رو برای کار با دادههای تصویری و پردازش تصویر ارائه میکنه.
این کتابخانه شامل مجموعهای از توابع و کلاسها برای دانلود، پیشپردازش و تبدیل دادههای تصویریه و برای ساخت و آموزش مدلهای یادگیری عمیق روی دادههای تصویری کاربرد داره.
تورچ ویژن ابزارهایی برای وارد کردن دیتاستهای معروف تصویری مثل CIFAR-10، MNIST و ImageNet رو فراهم میکنه.
تورچ ویژن شامل مجموعهای از ابزارها برای انجام پیشپردازش تصاویر، از جمله تبدیلهایی مثل تغییر اندازه تصاویر، برش، چرخش، نرمالسازی و تبدیل تصویر به تنسورهای PyTorch هست.
به طور معمول، دادههای تصویری باید برای ورود به مدلهای یادگیری عمیق مناسب شن. TorchVision ابزارهایی برای تبدیل دادههای تصویری رو ارائه میده که میتونن به طور معکوس همون عملیات رو روی پیشبینیهای مدل انجام بدن.
علاوه بر ابزارهای وارد کردن و پیشپردازش داده، TorchVision همچنین ابزارهایی رو فراهم میکنه که به توسعهدهندگان امکان میدن مدل رو بهبود بدن و دقت و عملکرد رو بالا ببرن.
#Deep_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3👨💻1
❓کوییز شماره ۱۱۴: کدوم تابع در PyTorch.vision برای اعمال تبدیلات هندسی روی تصاویر استفاده میشه؟
Anonymous Quiz
16%
torch.transforms
40%
torchvision.transforms
36%
image.transforms
8%
vision.transforms
👍6❤3🤔1👨💻1
در PyTorch، تابع ()zero_grad برای صفر کردن گرادیانهای همه پارامترهای مدل به کار میره. این کار عموماً قبل از اجرای مرحلههای انتقال رو به جلو و عقب در حلقههای آموزش بهکار میره تا اطمینان حاصل شه که گرادیانهایی که ممکنه قبلاً وجود داشته باشن، جمعنشن.
import torch
import torch.optim as optim
# تعریف یک مدل ساده و یک بهینهساز
model = torch.nn.Linear(1, 1)
optimizer = optim.SGD(model.parameters(), lr=0.01)
# مقداردهی اولیه دادههای ورودی و هدف
inputs = torch.randn(1, 1, requires_grad=True)
target = torch.randn(1, 1)
# شروع حلقه آموزش
for _ in range(5):
# انجام مرحله رو به جلو
output = model(inputs)
loss = torch.nn.functional.mse_loss(output, target)
# انجام مرحله رو به عقب و بهروزرسانی پارامترهای مدل
optimizer.zero_grad() # صفر کردن گرادیانها
loss.backward() # محاسبه گرادیانها
optimizer.step() # بهروزرسانی وزنها
#Deep_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2👌1👨💻1
#Weekend
#Deep_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1👏1
#Deep_Learning
#AutoEncoders
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥1👨💻1
Forwarded from رضا شکرزاد - علمداده و هوش مصنوعی
شروع سال جدید شاید بهترین زمان برای برنامهریزی و تعیین اهداف جدید باشه. در این وبینار بررسی میکنیم که چطور میشه در حوزه دیتا ساینس برنامهریزی کرد، پیش رفت و مهارتها رو توسعه داد.
@DSLanders | دیاسلندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥3👍2👨💻2
خودرمزگذارها کلاس خاصی از الگوریتمها هستن که میتونن بدون نیاز به برچسب، بازنماییهای کارآمدی از دادههای ورودی رو یاد بگیرن و زیر مجموعهای از شبکههای عصبی مصنوعی هستن که برای یادگیری بدون نظارت طراحی شدن.
یادگیری فشرده سازی و نمایش موثر دادههای ورودی بدون برچسب خاص، اصل اساسی یک رمزگشای خودکاره. این کار با استفاده از یک ساختار دو بخشی که از یک رمزگذار و یک رمزگشا تشکیل شده، انجام میشه. رمزگذار دادههای ورودی رو به یک نمایش با ابعاد کم شده، تبدیل میکنه که معمولا به عنوان «فضای نهفته» یا «کدگذار» شناخته میشه.
از این نمایش، یک رمزگشا ورودی اولیه رو بازسازی میکنه. برای اینکه شبکه الگوهای معناداری در دادهها به دست بیاره، فرآیند کدگذاری و کدگشایی به تعریف ویژگیهای ضروری کمک میکنن.
معماری کلی یک خودرمزگذار شامل یک رمزگذار، یک رمزگشا و یک فضای پنهان هست.
رمزگذار وظیفه تبدیل دادههای ورودی به یک فرمت یا بردار با بعد کمتر و قابل استفاده است. این فرآیند به کاهش ابعاد دادهها کمک میکنه و ویژگیهای مهم رو برجسته میکنه. این مرحله میتونه شبکههای عمیق مختلفی مثل CNN یا RNN استفاده کنه.
رمزگشا وظیفه بازسازی دادهها از فضای پنهان به فضای اصلی رو داره. این فرآیند برای بازیابی دقیق اطلاعات از فضای پنهان و تبدیلشون به یک فرمت قابل فهم مفیده. این مرحله هم همچنین میتونه شبکههای عمیق مختلفی مثل CNN یا RNN استفاده کنه.
فضای پنهان مجموعهای از نقاطه که توصیفکننده ویژگیهای مختلفی از دادههای ورودی هستن. این فضا به طور خلاصه ویژگیهای مهمی از دادهها رو نشون میده که در ابعاد بالا ممکنه مشخص نباشه. با استفاده از این فضا، اطلاعات رو کاهش میده و ویژگیهای معنادارشون رو استخراج میکنه.
#Deep_Learning
#AutoEncoders
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👌3👨💻1
❓کوییز شماره ۱۱۵: چرا اتوانکودرهای Denoising (پاکسازی نویز) به طور معمول برای پیشپردازش دادهها در کاربردهای واقعی مفیدن؟
Anonymous Quiz
11%
توانایی شناسایی اتوماتیک برچسبهای دادهها رو دارن
37%
میتونن نویز موجود در دادههای ورودی رو به طور خودکار حذف کنن
37%
با افزودن نویز تصادفی به دادهها و آموزش شبکه برای حذفش، قابلیت شناسایی ویژگیهای مهم رو بهبود میدن
16%
توانایی تولید دادههای جدید مشابه با دادههای ورودی رو دارن
🤔5😎3👨💻1
در سادهترین شکل، یک اتوانکودر شامل دو بخشه: کدگذار و کدگشا. هدف در این نوع، یادگیری ویژگیهای مهم و حذف نویزه.
این نوع از اتوانکودرها با داشتن لایههای مخفی کمتر از لایههای ورودی و خروجی، مجبورن تا ویژگیهای کلیدی دادهها رو یاد بگیرن. این محدودیت در تعداد نورونها به مدل کمک میکنه تا تنها اطلاعات ضروری رو برای بازسازی دادههای ورودی نگه داره.
این مدل از فعال شدن تعداد زیادی از نورونها جلوگیری میکنه، به این صورت که تنها تعداد محدودی از نورونها میتونن در هر زمان فعال باشن. این ویژگی به اتوانکودر کمک میکنه تا ویژگیهای مهمتر دادهها رو برجسته کنه.
خودرمزنگارهای متغییر از اتوانکودرهایی هستن که نمایشهای داده رو به صورت توزیع احتمالاتی مدلسازی میکنن. در این مدل، کدگذار به جای تولید یک کد ثابت برای هر نمونه ورودی، پارامترهای یک توزیع احتمالاتی رو تولید میکنه که میتونه برای بازسازی دادههای ورودی استفاده شه. در نتیجه VAE توانایی تولید دادههای جدید که به دادههای آموزشی شباهت دارن رو پیدا میکنه.
اتوانکودرهای پاکسازی برای بهبود کیفیت دادههای ورودی که دچار نویز شدن، طراحی شده. در این نوع اول به دادههای ورودی نویز نویز اضافه میشه و بعد به مدل داده میشن و مدل با حذف نویز، سعی میکنه دادههای ورودی اصلی رو بازسازی کنه.
اتوانکودرهای کانولوشنال مخصوصا برای دادههایی با توپولوژی شبکهای مثل تصاویر طراحی شدن. این مدلها از لایههای کانولوشن به جای لایههای کاملاً متصل استفاده میکنن تا ویژگیهای محلی دادهها رو بهتر یاد بگیرن و در نتیجه بازسازی دقیقتری از دادههای ورودی ارائه بدن.
#Deep_Learning
#AutoEncoders
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👌2👨💻1