جستجو برای:
  • دوره‌های آموزشی
  • وبلاگ
  • آموزش‌های رایگان
    • آموزش پایتون رایگان
    • آموزش یادگیری ماشین رایگان
    • آموزش یادگیری عمیق رایگان
    • آموزش pytorch رایگان
    • آموزش رایگان matplotlib
    • آموزش گوگل کولب
  • نقشه راه AI
  • کلاس خصوصی
  • همکاری با ما💚
  • حساب کاربری
  • اساتید
  • درباره ما
     
    • 0902-546-9248
    • howsam.mail@gmail.com
    آکادمی هوش مصنوعی هوسم
    • دوره‌های آموزشی
    • آموزش‌های رایگان
      • آموزش پایتون
      • آموزش یادگیری ماشین رایگان
      • آموزش یادگیری عمیق رایگان
      • آموزش pytorch رایگان
      • آموزش گوگل کولب
    • نقشه راه AI
    • وبلاگ
    • درباره ما
      • اساتید
      • پشتیبانی
    0
    ورود / عضویت

    بلاگ

    آکادمی هوش مصنوعی هوسم وبلاگ دسته‌بندی نشده متغیرها در تنسورفلو

    متغیرها در تنسورفلو

    2017/11/14
    ارسال شده توسط هوسم
    دسته‌بندی نشده
    3.98k بازدید

    در جلسه دوم آموزش تنسورفلو، در مورد شروع کار با تنسورفلو و همچنین یکسری مفاهیم اولیه توضیح داده شد. از این جلسه می‌خواهیم دستورات تنسورفلو را به شما معرفی کنیم. در جلسه سوم آموزش تنسورفلو، می‌خواهیم در مورد متغیرها در تنسورفلو توضیح دهیم و نحوه تعریف متغیرها (variables) و ثابت‌ها (constants) دو بخش اصلی این آموزش هستند. توصیه می‌کنیم که همراه با آموزش‌ها، تمرین کنید تا تنسورفلو را زودتر یاد بگیرید. سومین جلسه از آموزش تنسورفلو همراه با هوسم همراه باشید…

    فهرست مطالب نمایش
    1. tf.constant
    2. tf.placeholder
    3. tf.variable

    tf.constant

    برای تعریف یک عدد ثابت در تنسورفلو، از دستور tf.constant استفاده می‌شود. همان‌طور که می‌دانید، ثابت‌ها یک‌بار مقداردهی می‌شوند و پس از آن دیگر قابلیت مقداردهی ندارند. tf.constant شامل ورودی‌های متعددی است که در زیر چند نمونه تعریف ثابت آورده شده است. در مثال اول، ثابت x تنها یک ورودی دارد که آن‌هم عددی است که می‌خواهیم به x نسبت دهیم. بنابراین، دستور tf.constant قابلیت داشتن تنها یک ورودی را هم دارد و نیازی نیست که تمامی ورودی‌های این تابع را مشخص کنید.متغیرها در تنسورفلو

    a = tf.constant(4.0)

    برای چاپ مقدار a باید از مباحث گفته شده در جلسه دوم استفاده کنیم. یادتان می‌آید برای چاپ مقادیر در تنسورفلو چه راهی را پیشنهاد کردیم؟ بر فرض می‌خواهیم از دستور ساده print استفاده کنیم، دراینصورت نتیجه زیر حاصل خواهد شد:

    Tensor("Const_1:0", shape=(), dtype=float32)

    با نوشتن دستور بالا، تنها ما یک آبجکت می‌بینیم که یک تنسور از نوع ثابت، بدون ابعاد خاصی (shape) و همچنین نوع داده float32 هست. اما مطابق گفته‌های جلسه دوم، اگر از دستور tf.Session استفاده کنیم، می‌توانیم مقدار دقیق a را مشاهده کنیم.

    sess = tf.Session()
    print(sess.run(a)
    4.0

    در مثال دوم، دستور tf.variable شامل 2 ورودی است که ورودی دوم، نوع داده را مشخیص می‌کند؛ اگر مشخص نشود، به‌صورت پیش‌فرض نوع داده مشابه مثال بالا float32 در نظر گرفته می‌شود. متغیرها در تنسورفلو

    b = tf.constant(3.0, dtype=tf.int32)
    sess = tf.Session() print(sess.run(b) 3.0

    تاکنون، نحوه تعریف ثابت را یاد گرفته‌ایم، حال بیایید یک شبکه کوچک بسازیم. یک شبکه کوچک می‌سازیم که در آن دو ورودی ثابت با هم جمع و در خروجی نشان داده شوند. با استفاده از دستور tf.add دو ثابت را با هم جمع می‌کنیم. در مورد دستور tf.add و سایر عملیات ریاضی در جلسه‌های بعدی توضیح خواهیم داد. در کدهای زیر دو ثابت تعریف شده که با هم جمع شده‌اند:

    node1 = tf.constant(4.0) node2 = tf.constant(3.0)
    node3 = tf.add(node1, node2)
    print(node3) print(sess.run(node3)) Tensor("Add:0", shape=(), dtype=float32) 7.0

    اما شبکه‌ای که طراحی کردیم، به چه شکلی است؟ ابزارهایی مانند تنسوربورد (tensorboard) وجود دارد که به ما کمک می‌کنند تا گرافی را که طراحی کرده‌ایم، مشاهده نماییم. در تصویر زیر می‌توانید شبکه کوچکی که طراحی کردیم را مشاهده کنید:

     

    اولین شبکه خود را طراحی کردیم. اما این شبکه خیلی با اهداف مدنظر ما فاصله دارد و بسیار ساده است و البته معایب زیادی هم دارد. یکی از بزرگترین ضعف‌های آن، ثابت بودن ورودی‌هاست. چون ورودی‌ها از نوع ثابت هستند، ما اصلا نمی‌توانیم مقدار جدیدی به این شبکه بدهیم. یعنی ما یک شبکه ساخته‌ایم که نه‌تنها بسیار ساده است، بلکه مقادیر ورودی و خروجی آن نیز همواره ثابت است! ما شبکه‌ای را می‌پسندیم که هر مقدار ورودی که می‌خواهیم به شبکه بدهیم و شبکه هم خروجی را به ما نشان دهد. بنابراین، به نظر می‌رسد مشکل از ثابت‌هاست، باید بجای ثابت‌ها از دستور دیگری استفاده کنیم. در ادامه، دستور جدیدی تعریف شده که به ما این امکان را می‌دهد که ورودی‌های متفاوت و دلخواه به شبکه بدهیم.متغیرها در تنسورفلو

    tf.placeholder

    placeholder، یکی دیگر از راه‌های تعریف ورودی است. متاسفانه نتوانستیم برای placeholder یک معادل فارسی مناسب بیابیم، البته شما می‌توانید به ما در انتخاب نام مناسب کمک کنید. placeholder را می‌توان بدون هیچ‌گونه مقدار اولیه‌ای تعریف کرد و صرفا مشخص کرد که نوع داده چیست. درحقیقت، placeholder برای ما یک فضای خالی در رم اختصاص می‌دهد و بعدا می‌توانیم در آن مقدار قرار دهیم و بارها مقدارش را تغییر دهیم. در زیر دو تعریف a و b از نوع placeholder داریم که با هم جمع شده‌اند تا دوباره ما شبکه کوچک خود را بسازیم. این‌بار انتظار داریم که بتوانیم ورودی‌های دلخواه به شبکه بدهیم.

    a = tf.placeholder(tf.float32)
    b = tf.placeholder(tf.float32)
    adder_node = a + b

    حال سوال اینجاست که چگونه به این شبکه ورودی بدهیم؟ نحوه چاپ خروجی به صورت قبل و براساس tf.Session هست، اما ورودی‌ها را هم باید در همین دستور بگنجانیم. در دستورات زیر، مشاهده می‌کنید که ورودی دلخواه در داخل علامت‌های {} قرار داده شده است. شما هم دقیقا به همین شکل ورودی‌های جدید بدهید و تمرین کنید:

    print(sess.run(adder_node, {a: 3, b: 4.5}))
    7.5

    tf.variable

    تا به اینجا دو تعریف constant و placeholder را توضیح دادیم، اما یک نوع تعریف دیگر بنام variable هم هست که از اهمیت و کاربرد بالایی برخوردار است. می‌دانیم که وقتی صحبت از یادگیری ماشین و شبکه‌های عصبی است، یعنی الگوریتم‌های ما باید آموزش داده شوند. یعنی یک‌سری پارامترهایی داریم که در فرآیند آموزش آنقدر تغییر می‌کنند تا به بهترین جواب ممکن برسیم. به‌عنوان مثال وزن‌ها (w) و بایاس‌ها (b) در شبکه‌های عصبی باید از یک مقدار اولیه تغییر کنند و به سمت مقدار بهینه بروند. برای این پارامترها که یک مقدار اولیه دارند و در فرآیند آموزش بارها و بارها تغییر می‌کنند، variable-ها در تنسورفلو بهترین گزینه هستند. به عنوان مثال، در زیر ورودی (x) در وزن‌ها (w) ضرب شده و درنهایت با بایاس (b) جمع شده است. ورودی (x) از نوع placeholder و وزن‌ها (w) و بایاس‌ها (b) از نوع variable است.

    W = tf.Variable(0.3, dtype=tf.float32)
    b = tf.Variable(-0.3, dtype=tf.float32)
    x = tf.placeholder(tf.float32)
    linear_model = W*x + b
    sess = tf.Session()

    یک نکته جدیدی که باید گفته شود این است که، برای اینکه مقادیر اولیه درون w و b ریخته شوند، حتما باید از دو دستور زیر استفاده کنید:متغیرها در تنسورفلو

    init = tf.global_variables_initializer()
    sess.run(init)

    چرا؟ یادتان باشد هرگاه در برنامه تنسورفلوی خود، متغیر داشتید حتما باید از دستور tf.global_variables_initializer و سپس sess.run استفاده کنید که مقادیر اولیه در متغیرهای مربوطه قرار گیرند. درنهایت، مشابه قبل با استفاده از دستور زیر، به x مقدار ورودی می‌دهیم و خروجی شبکه را بدست می‌آوریم:

    print(sess.run(linear_model, {x: 4}))
    0.90000004

    جلسه سوم آموزش تنسورفلو (متغیرها در تنسورفلو) هم به پایان رسید. در این جلسه به معرفی tf.variable، tf.constant و tf.placeholder پرداختیم. اگر در برنامه بخواهیم ثابت‌هایی برای یک بار تعریف کنیم، بهترین گزینه  tf.constant هست. اگر در برنامه تنسورفلو بخواهیم ورودی‌ها را تعریف کنیم، بهترین گزینه tf.placeholder هست. درنهایت، اگر بخواهیم متغیرهایی در برنامه داشته باشیم، tf.variable برای این کار مناسب خواهد بود. تاکنون، فقط نحوه تعریف اعداد اسکالر را یاد گرفته‌ایم، اما اگر بخواهیم ماتریس یا برداری تعریف کنیم، باید چه کنیم؟ این سوالی است که در جلسه چهارم به آن پاسخ داده شده است. در پایان، خوشحال می‌شویم که نظرات خود را در مورد این جلسه از آموزش با ما در میان بگذارید.

     

    اشتراک گذاری:

    مطالب زیر را حتما مطالعه کنید

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

    5 دیدگاه

    به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

    • بهاره گفت:
      2022/08/27 در 12:10 ب.ظ

      سلام وقتتون بخیر
      خواستم ازتون صمیمانه تشکر کنم بابت مطالب خوبی که به اشتراک میگذارید
      ممنون

      پاسخ
    • فائزه گفت:
      2021/07/12 در 5:30 ب.ظ

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

      پاسخ
      • تیم هوسم گفت:
        2021/07/12 در 10:00 ب.ظ

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

        پاسخ
    • پیمان گفت:
      2021/05/18 در 1:08 ق.ظ

      امورش خیلی روونیه. خیلی ممنونم.

      پاسخ
      • تیم هوسم گفت:
        2021/05/18 در 1:54 ب.ظ

        سلام
        سپاس

        پاسخ

    دیدگاهتان را بنویسید لغو پاسخ

    جستجو برای:
    فهرست مطالب دوره
    • معرفی دوره آموزش تنسورفلو
    • جلسه 2: شروع کار با تنسورفلو
    • جلسه 3: متغیرها در تنسورفلو
    • جلسه 4: آرایه‌ها در تنسورفلو
    • جلسه 5: عملیات جبری در تنسورفلو
    • جلسه 6: ساخت شبکه در تنسورفلو
    دوره‌های جامع هوسم
    • مسابقه Kaggle: تحلیل و پیش‌بینی رفتار با داده‌های چندحسگری سری زمانی
    • پیاده‌سازی ChatGPT از صفر با پایتورچ
    • آموزش OpenCV: از پردازش تا بینایی
    • دیپ کاتالیست: دوره افزایش مهارت
    • پایتون برای هوش مصنوعی 🤖
    • یادگیری ماشین جامع: از مفاهیم تا پیاده‌سازی🔥
    • یادگیری عمیق جامع: از مفاهیم تا پیاده‌سازی
    درباره هوسم

    آکادمی هوش مصنوعی هوسم با آموزش‌های تخصصی در حوزه هوش مصنوعی در خدمت شماست. روی کمک هوسم حساب کنید…

    • گیلان- شهرستان رودسر- شهرک انصاری- کوچه لاله 9
    • 09025469248
    • howsam.mail@gmail.com
    دسترسی سریع
    • صفحه اصلی
    • وبلاگ
    • حساب کاربری
    • سبد خرید
    شبکه‌های اجتماعی

     

    logo-samandehi
    تمامی حقوق برای آکادمی هوسم محفوظ است.
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      ورود
      استفاده از موبایل
      استفاده از آدرس ایمیل
      آیا هنوز عضو نیستید؟ اکنون عضو شوید
      بازنشانی رمز عبور
      استفاده از موبایل
      استفاده از آدرس ایمیل
      عضویت
      استفاده از موبایل
      استفاده از ایمیل
      قبلا عضو شدید؟ اکنون وارد شوید

      ورود

      رمز عبور را فراموش کرده اید؟

      هنوز عضو نشده اید؟ عضویت در سایت