Tensorflow(@CVision)
#آموزش from keras.utils import plot_model برای رسم گرافیکی گراف مدلتان در #keras در ویندوز علاوه بر نصب پکیج مورد تیاز با conda install pydot graphviz نیاز دارید مسیر نصب هم در PATH ویندوز اضافه کنید. بمسیر فایل اجرایی در جایی مثل زیر خواهد شد: C:\A…
#سوال ؟
به نظر شما
بر اساس تعریف اینجا:
https://t.me/cvision/955
بر اساس این گراف مدل ، مدل را symbolic نوشته بودم یا با روش Imperative؟ چرا؟
به نظر شما
بر اساس تعریف اینجا:
https://t.me/cvision/955
بر اساس این گراف مدل ، مدل را symbolic نوشته بودم یا با روش Imperative؟ چرا؟
Telegram
Tensorflow
#آموزش
Imperative (or Model Subclassing) APIs
این سبک API در ابتدا توسط فریم ورک Chainer در سال 2015 معرفی شد و در سال 2017 چندین چارچوب دیگر آن را به کار گرفت (از جمله موارد ذکر شده در اینجا). در چارچوب Keras، شوله، توسعه دهنده کراس آن را "API Subclassing…
Imperative (or Model Subclassing) APIs
این سبک API در ابتدا توسط فریم ورک Chainer در سال 2015 معرفی شد و در سال 2017 چندین چارچوب دیگر آن را به کار گرفت (از جمله موارد ذکر شده در اینجا). در چارچوب Keras، شوله، توسعه دهنده کراس آن را "API Subclassing…
Tensorflow(@CVision)
Photo
#آموزش #keras
#سوال:
به نظر شما چرا انقدر loss و accuracy دیتای validation نوسان دارد و از 0 تا 100 دائما نوسان میکند؟
#پاسخ احتمالی 1:
ممکن است بگویید lr زیاده! اما دیتای train نوسانی نداره. پس این جواب اشتباهه.
راهنمایی #پاسخ درست:
به اندزهی سایز batch در validation_generator و تعداد عکسهایی که این generator پیدا کرده دقت کنید!
#سوال:
به نظر شما چرا انقدر loss و accuracy دیتای validation نوسان دارد و از 0 تا 100 دائما نوسان میکند؟
#پاسخ احتمالی 1:
ممکن است بگویید lr زیاده! اما دیتای train نوسانی نداره. پس این جواب اشتباهه.
راهنمایی #پاسخ درست:
به اندزهی سایز batch در validation_generator و تعداد عکسهایی که این generator پیدا کرده دقت کنید!
#سوال:
روی یک کامپیوتر چند GPU دارم. چه طور مدلی که با keras ایجاد کردم را روی همه GPU ها آموزش دهم؟
#پاسخ:
طبق این دستور العمل به راحتی میتوانید با استفاده از تابع
#سوال:
قبلا (بیش از 1 سال پیش) در این پست کانال و این پست نوشتیم که از تنسرفلو 1.4 به بعد میشه مدل را به #estimator تنسرفلو تبدیل کرد.
خب esetimator که multi_GPU داره و با این روش هم میشه مدلو توزیع شده و یا رو چند GPU اجرا کرد.
آیا روشی که در بالا معرفی شد نسبت به آن روش مزیتی دارد؟
#پاسخ:
وقتی یک مدل #Keras را به estimator تبدیل میکنید، فقط معماری مدل را تبدیل کرده و متدهای #callback ی که برای این مدلتون تعریف کردید، نظیر تغییر Learning rate طبق سیاست هایی که نوشتید از کار میوفته!
اما متد
روی یک کامپیوتر چند GPU دارم. چه طور مدلی که با keras ایجاد کردم را روی همه GPU ها آموزش دهم؟
#پاسخ:
طبق این دستور العمل به راحتی میتوانید با استفاده از تابع
multi_gpu_model
مدل خود را به مدل multi_GPU تبدیل کرده و این مدل را آموزش دهید. در این صورت از تمام GPU های سیستم میتوانید استفاده کنید.#سوال:
قبلا (بیش از 1 سال پیش) در این پست کانال و این پست نوشتیم که از تنسرفلو 1.4 به بعد میشه مدل را به #estimator تنسرفلو تبدیل کرد.
خب esetimator که multi_GPU داره و با این روش هم میشه مدلو توزیع شده و یا رو چند GPU اجرا کرد.
آیا روشی که در بالا معرفی شد نسبت به آن روش مزیتی دارد؟
#پاسخ:
وقتی یک مدل #Keras را به estimator تبدیل میکنید، فقط معماری مدل را تبدیل کرده و متدهای #callback ی که برای این مدلتون تعریف کردید، نظیر تغییر Learning rate طبق سیاست هایی که نوشتید از کار میوفته!
اما متد
multi_gpu_model
بازهم یک مدل #keras به شما برمیگرداند، نه estimator و در نتیجه تمامی خاصیت های مدل از جمله callback method ها را حفظ خواهد کرد.Telegram
Tensorflow
#آموزش
#multi_GPU
from keras.utils import multi_gpu_model
https://www.tensorflow.org/api_docs/python/tf/keras/utils/multi_gpu_model
#multi_GPU
from keras.utils import multi_gpu_model
https://www.tensorflow.org/api_docs/python/tf/keras/utils/multi_gpu_model
#سوال :
آیا میتوان شبکه ای که با ورودی 224 در 224 آموزش دیده را با سایز ورودی دیگری آموزش داد ؟
#پاسخ :
بله. اگر معماری شبکه متشکل از لایه globalAveragePool باشد این کار امکان پذیر میباشد. در این لایه به دلیل نمونه برداری عمقی از لایه کانولوشن مستقل از سایز سطر در ستون کانولوشن بوده و برای مپ کردن به لایه تمام متصل بعدی برخلاف flatten مشکلی ایجاد نخواهد شد
مثال : شبکه resnet
#نحوه انجام کار :
برای تغییر سایز ورودی شبکه ترین شده در keras آن را لود کرده و به صورت زیر سایز ورودی شبکه را تغییر میدهیم.
در نهایت با دستور زیر نیز میتوانید سایز ورودی لایه و تمام لایه های شبکه را مشاهده نمایید
#کاربرد :
1 - ابتدا شبکه را با سایز ورودی کوچک آموزش داده و پس از چند ایپاک که به درصد دقت مناسبی رسیدیم سایز ورودی را بزرگ کرده و ادامه دهیم یا بر عکس.
2 - متناسب با کاربرد مسیله خود شبکه از قبل آموزش دیده روی دیتاست های بزرگ و جامع تر را با سایز ورودی مناسب تر فاین تیون کنیم.
توضیحات بیشتر :
https://www.aparat.com/v/YgEDH
آیا میتوان شبکه ای که با ورودی 224 در 224 آموزش دیده را با سایز ورودی دیگری آموزش داد ؟
#پاسخ :
بله. اگر معماری شبکه متشکل از لایه globalAveragePool باشد این کار امکان پذیر میباشد. در این لایه به دلیل نمونه برداری عمقی از لایه کانولوشن مستقل از سایز سطر در ستون کانولوشن بوده و برای مپ کردن به لایه تمام متصل بعدی برخلاف flatten مشکلی ایجاد نخواهد شد
مثال : شبکه resnet
#نحوه انجام کار :
برای تغییر سایز ورودی شبکه ترین شده در keras آن را لود کرده و به صورت زیر سایز ورودی شبکه را تغییر میدهیم.
model = load_model('checkpoint.h5')
input_layer = InputLayer(input_shape=(img_width, img_hight, channel), name="input_1")
model.layers[0] = input_layer
model.save("checkpoint-reshaped.h5")
در نهایت با دستور زیر نیز میتوانید سایز ورودی لایه و تمام لایه های شبکه را مشاهده نمایید
model.summary()
#کاربرد :
1 - ابتدا شبکه را با سایز ورودی کوچک آموزش داده و پس از چند ایپاک که به درصد دقت مناسبی رسیدیم سایز ورودی را بزرگ کرده و ادامه دهیم یا بر عکس.
2 - متناسب با کاربرد مسیله خود شبکه از قبل آموزش دیده روی دیتاست های بزرگ و جامع تر را با سایز ورودی مناسب تر فاین تیون کنیم.
توضیحات بیشتر :
https://www.aparat.com/v/YgEDH
آپارات - سرویس اشتراک ویدیو
مباحث ویژه 2 - جلسه 6
در این جلسه Global Pooling و Adaptive pooling مطرح شد و به ایده آموزش یک شبکه با تصاویر با سایز متفاوت در ایپاک های مختلف در فریم ورک FastAI پرداخته شد.
#آموزش و طرح #ابهام مستندات چند نخی در کراس - بخش 1 از دو
استفاده از use_multiprocessing و workers در fit_generator کراس
طرح یک ابهام در داکیومنت های #Keras !
#سوال:
احتمالا میدونید که اگر با دیتاست های خیلی بزرگ تصویری سر و کار داشته باشید، خیلی وقت ها bottleneck فرآیند آموزش خواندن تصاویر از هارد و augmentation توی pipeline آموزش CPU میشه و GPU معطل دیتا میمونه و بیکار میمونه و Utilization سیستم میاد پایین!
راهکارتون چیه؟
#پاسخ:
استفاده از پارامتر use_multiprocessing=True اجازه میده که process-based threading فعال بشه و با چند نخ و موازی دیتا خوانده و augment بشه
اما یه پارامتر دیگه هم باید ست کنید؛ و اونم عددی برای workers هستش.
توضیحات در داکیومنت:
Maximum number of processes to spin up when using process-based threading.
با این دو پارامتر میتونید به صورت موازی دیتا را خوانده و پیش پردازش کنید و با افزایش سرعت آماده کردن دیتا میتونید از بیکار بودن GPU جلوگیری کرده و utilization اونو افزایش بدید.
اما
#ابهام داکیومنت کجاست حالا؟
اگر دقت کنید نوشته:
workers: Integer. Maximum number of processes to spin up when using process-based threading.
از طرفی داشتیم:
use_multiprocessing: Boolean. If True, use process-based threading.
من به شخصه وقتی این دو جمله را میخونم برداشتم اینه که عددی که جلوی workers مینویسم فقط برای وقتیه که use_multiprocessing را True ست کرده باشم.
برداشت دیگه ای میشه داشت؟؟
مشاهده داکیومنت: https://keras.io/models/sequential/
ادامه در: https://t.me/cvision/1360
استفاده از use_multiprocessing و workers در fit_generator کراس
طرح یک ابهام در داکیومنت های #Keras !
#سوال:
احتمالا میدونید که اگر با دیتاست های خیلی بزرگ تصویری سر و کار داشته باشید، خیلی وقت ها bottleneck فرآیند آموزش خواندن تصاویر از هارد و augmentation توی pipeline آموزش CPU میشه و GPU معطل دیتا میمونه و بیکار میمونه و Utilization سیستم میاد پایین!
راهکارتون چیه؟
#پاسخ:
استفاده از پارامتر use_multiprocessing=True اجازه میده که process-based threading فعال بشه و با چند نخ و موازی دیتا خوانده و augment بشه
اما یه پارامتر دیگه هم باید ست کنید؛ و اونم عددی برای workers هستش.
توضیحات در داکیومنت:
Maximum number of processes to spin up when using process-based threading.
با این دو پارامتر میتونید به صورت موازی دیتا را خوانده و پیش پردازش کنید و با افزایش سرعت آماده کردن دیتا میتونید از بیکار بودن GPU جلوگیری کرده و utilization اونو افزایش بدید.
اما
#ابهام داکیومنت کجاست حالا؟
اگر دقت کنید نوشته:
workers: Integer. Maximum number of processes to spin up when using process-based threading.
از طرفی داشتیم:
use_multiprocessing: Boolean. If True, use process-based threading.
من به شخصه وقتی این دو جمله را میخونم برداشتم اینه که عددی که جلوی workers مینویسم فقط برای وقتیه که use_multiprocessing را True ست کرده باشم.
برداشت دیگه ای میشه داشت؟؟
مشاهده داکیومنت: https://keras.io/models/sequential/
ادامه در: https://t.me/cvision/1360
Telegram
Tensorflow
#آموزش و طرح #ابهام مستندات چند نخی در کراس - بخش 2 از دو
بخش 1 در
https://t.me/cvision/1359
اما وقتی کدها را ببینید عملا مشاهده میشه که کراس تو حالتی که use_multiprocessing را هم False داده باشیم داره از پارامتر workers استفاده میکنه
https://github.com/keras…
بخش 1 در
https://t.me/cvision/1359
اما وقتی کدها را ببینید عملا مشاهده میشه که کراس تو حالتی که use_multiprocessing را هم False داده باشیم داره از پارامتر workers استفاده میکنه
https://github.com/keras…
#آموزش
نزدیک یک ماه پیش مهندس قریشی پستی در کانال منتشر کردند که با این سوال شروع شده بود:
آیا میتوان شبکه ای که با ورودی 224 در 224 آموزش دیده را با سایز ورودی دیگری آموزش داد ؟
سایت pyimagesearch پنج روز پیش پستی با عنوان Change input shape dimensions for fine-tuning with Keras منتشر کرده که همین موضوع را توضیح داده است:
Q. Can I fine-tune a CNN on image dimensions *smaller* than what it was originally trained on?
A. Yes, you can!
https://www.pyimagesearch.com/2019/06/24/change-input-shape-dimensions-for-fine-tuning-with-keras/
مطلب مرتبط در کانال:
https://t.me/cvision/1295
نزدیک یک ماه پیش مهندس قریشی پستی در کانال منتشر کردند که با این سوال شروع شده بود:
آیا میتوان شبکه ای که با ورودی 224 در 224 آموزش دیده را با سایز ورودی دیگری آموزش داد ؟
سایت pyimagesearch پنج روز پیش پستی با عنوان Change input shape dimensions for fine-tuning with Keras منتشر کرده که همین موضوع را توضیح داده است:
Q. Can I fine-tune a CNN on image dimensions *smaller* than what it was originally trained on?
A. Yes, you can!
https://www.pyimagesearch.com/2019/06/24/change-input-shape-dimensions-for-fine-tuning-with-keras/
مطلب مرتبط در کانال:
https://t.me/cvision/1295
Telegram
Tensorflow
#سوال :
آیا میتوان شبکه ای که با ورودی 224 در 224 آموزش دیده را با سایز ورودی دیگری آموزش داد ؟
#پاسخ :
بله. اگر معماری شبکه متشکل از لایه globalAveragePool باشد این کار امکان پذیر میباشد. در این لایه به دلیل نمونه برداری عمقی از لایه کانولوشن مستقل از سایز…
آیا میتوان شبکه ای که با ورودی 224 در 224 آموزش دیده را با سایز ورودی دیگری آموزش داد ؟
#پاسخ :
بله. اگر معماری شبکه متشکل از لایه globalAveragePool باشد این کار امکان پذیر میباشد. در این لایه به دلیل نمونه برداری عمقی از لایه کانولوشن مستقل از سایز…
#سوال
آیا میتوان روی یک سیستم، دو نسخه متفاوت از cuda داشت؟!
پاسخ
بله، مثلا میشه همزمان کودا ۱۰.۰ و ۱۰.۱ و ۱۰.۲ روی ماشینتون نصب کنید.
و مثلا همزمان تنسرفلو ۱.۱۴ و ۲.۲.۰ هم توی محیطهای مجزا داشته باشید که هر کدام از نسخه کودا مورد نیاز استفاده کنند و بدون مشکل کار کنن.
نصب کودا رو میتونید با خود ریپوها انجام بدید
فقط مثلا تو سیستم عامل لینوکس، توی .bashrc برید و مسیرهای کوداها رو برای هر نسخه جدا اضافه کنید به ld_library_path.
کودا بدون پیشوند هم یه سافتلینکه به نسخهٔ آخری که نصب میکنید. ولی میتونید خودتون برید اون چیزی که دوست دارید پیشفرض باشه را بذارید.
🙏Thanks to: @samehraboon
Tensorflow(@cvision)
آیا میتوان روی یک سیستم، دو نسخه متفاوت از cuda داشت؟!
پاسخ
بله، مثلا میشه همزمان کودا ۱۰.۰ و ۱۰.۱ و ۱۰.۲ روی ماشینتون نصب کنید.
و مثلا همزمان تنسرفلو ۱.۱۴ و ۲.۲.۰ هم توی محیطهای مجزا داشته باشید که هر کدام از نسخه کودا مورد نیاز استفاده کنند و بدون مشکل کار کنن.
نصب کودا رو میتونید با خود ریپوها انجام بدید
فقط مثلا تو سیستم عامل لینوکس، توی .bashrc برید و مسیرهای کوداها رو برای هر نسخه جدا اضافه کنید به ld_library_path.
کودا بدون پیشوند هم یه سافتلینکه به نسخهٔ آخری که نصب میکنید. ولی میتونید خودتون برید اون چیزی که دوست دارید پیشفرض باشه را بذارید.
🙏Thanks to: @samehraboon
Tensorflow(@cvision)