یادگیری TensorFlow به روش ساده (بخش اول)

این مطلب قسمت اول از سری مقالات در مورد چگونگی شروع کار با TensorFlow می باشد.

با توجه به گرایشات اخیر در زمینه یادگیری عمیق، غالباً بحثی داغی که در میان دانشمندان حوزه داده به جریان می افتد این است که که کدام چهارچوب یا فریمورک بهتر از سایر گزینه ها است؟ این مسئله مانند بسیاری از موارد دیگر در این زمینه امری کاملاً شخصی و ذهنی است.

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

TensorFlow یک ساختار انعطاف پذیر است که امکان استقرار آسان محاسبات یادگیری ماشین را در انواع پلتفرم ها (CPU ، GPU ، TPU) از دسکتاپ و کلاستر هایی از سرورها گرفته تا  تلفن های همراه و دستگاه های اینترنت اشیاء ( IoT ) فراهم می کند.

در این مجموعه قصد داریم پیچ و خم کار با Tensorflow با خلق تجسم هایی جالب و پروژه های جانبی زیاد برای کار بر روی آن آموزش دهیم.

مقاله مرتبط :

پیش نیاز ها

برای استفاده بیشتر و بهتر از این آموزش فرض را بر این می گذاریم که کاربران پیش نیازهای زیر را داشته باشند:

۱- داشتن درک اساسی از زبان برنامه نویسی پایتون

۲- داشتن پیش زمینه ای از مبانی یادگیری ماشین

۳- آشنایی با نوت بوک های Jupyter

در این مجموعه، یادگیری Tensorflow به روش ساده طی قسمت های زیر پوشش خواهیم داد.

یادگیری تنسورفلو به زبان ساده jupyter notebook
نوت بوک Jupyter

قسمت ۱: نصب و تنظیم Tensorflow، سینتکس ها و نمودارها

قسمت ۲: متغیرها در Tensorflow

قسمت سوم: اجرای یک نمونه رگرسیون در Tensorflow

قسمت ۴: اجرای طبقه بندی در Tensorflow

قسمت ۱: نصب و تنظیم Tensorflow ، سینتکس ها و نمودارها

نصب و راه اندازی:

Tensorflow از سیستم عامل های ۶۴ بیتی زیر پشتیبانی می کند.

  • سیتم عامل Ubuntu 16.04 و نسخه های بالاتر آن
  • ویندوز ۷ و نسخه های بالاتر آن
  •  macOS 10.12.6 (سیرا) و نسخه های بالاتر (بدون پشتیبانی GPU )
  • سیستم عامل Raspbian 9.0 و نسخه های بالاتر آن

نصب نسخه pip این برنامه  به نرم افزار پایتون نسخه ی ۲٫۷ ، ۳٫۴ ، ۳٫۵ یا ۳٫۶ نیاز دارد. با استفاده از دستورات زیر می توانید نسخه Python و pip خود را بررسی کنید:

python3 --version
pip3 --version

با این کار نسخه های پایتون و pip شما مشخص می شود. توصیه می شود که برای این کار یک محیط مجازی راه اندازی کنید. ما از محیط برنامه نویسی Anaconda استفاده می کنیم که بسیاری از وابستگی های Tensorflow را پشتیبانی می کند. همچنین می توان از دستور conda جهت ایجاد یک محیط مجازی در بستر Python 3.5 استفاده کنید.

conda create -n py35 python=3.5

این کار امکان دارد مدتی طول بکشد. اکنون می توانید با استفاده دستور زیر محیط کاربری را تغییر دهید:

source
activate py35

زمانی که در محیط تازه ایجاد شده خود قرار گرفتید، می توانید Tensorflow را با دستور pip نصب کنید.

pip install -- tensorflow==1.3

اکنون یک نوت بوک Jupyter را با استفاده از دستور jupyter notebook باز می کنیم و Tensorflow را با استفاده از دستور زیر import می کنیم.

import tensorflow as tf
print("Tensorflow version: {}".format(tf.__version__))


Output:
Tensorflow version: 1.3.0

توجه داشته باشید که این آموزش برای نسخه ۱٫۳٫۰ ساخته شده است و در صورت استفاده از نسخه های قبلی Tensorflow  سینتکس آن ممکن است متفاوت باشد.

مبانی :Tensorflow سینتکس و نمودار

آشنایی با مفهوم “تنسور” در TensorFlow

تنسور ها به سادگی مجموعه ای از اعداد یا توابع هستند که بر طبق برخی از قوانین با تغییر مختصات تغییر می یابند. ما به طور معمول آن ها را در روابطی مانند ضرب نقطه ای (ضرب داخلی)، ضرب برداری (ضرب خارجی) و نگاشت خطی مشاهده می کنیم.

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

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

نمودارها در Tensorflow

Tensorflow روی تنسور ها و جریان عملکردی آن ها از طریق نمودار محاسباتی کار می کند. از این رو نام آن از ترکیب این دو لغت گرفته شده است؛

تنسور +جریان = Tensorflow!

نمودار محاسباتی مجموعه ای از عملیات های TensorFlow است که در نموداری از گره ها قرار گرفته است.

در ابتدا ما مدلی را ایجاد می کنیم که شامل یک نمودار محاسباتی است که در آن تنسور ها، شیء در نظر گرفته می شوند. سپس بخشی را ایجاد می کنیم که محاسبات را یکجا انجام دهد. اگر توضیحات این بخش نامفهوم شد نگران نباشید. بگذارید همین کار را به صورت کد پیاده سازی کنیم تا بهتر آن را درک کنید:

import tensorflow as tf

first_string = tf.constant('Analytics')
second_string = tf.constant(' Vidhya')

حال اگر نوع متغیرها را با دستور (type(first_string بررسی کنید، باید متوجه شده باشید که این یک شیء از نوع تنسور است نه از نوع رشته.

Out []: tensorflow.python.framework.ops.Tensor

اکنون ، بیایید سعی کنیم هر دو رشته را اضافه کرده و سعی کنیم آن را چاپ کنیم. نوع آن ها یکسان است اما ، خروجی چیزی نیست که انتظار می رود.

combined_string = (first_string + second_string)
print (type(combined_string))
print (combined_string)

Out []: <class 'tensorflow.python.framework.ops.Tensor'>
        Tensor("add:0", shape=(), dtype=string)

 

چگونگی عملکرد نمودار محاسباتی بدین شکل است. دستور combined_string مستقیماً نتیجه اضافه شدن دو رشته نیست بلکه فقط عملی است که باید انجام شود. Tensorflow بر همین اساس کار می کند. ابتدا باید مسیری را تعیین کنید و سپس نحوه پیمودن آن مسیر را مشخص کنید.

حال ، برای دیدن نتایج مورد انتظار بخش مربوط به محاسبات را اجرا کنیم. می توان این کار را با استفاده از دستور زیر انجام داد؛

with tf.Session() as sess:
    result = sess.run(combined_string)
    print (result)

Out []: b'Analytics Vidhya'

 

دلیل استفاده از دستور ()with tf.Session این است که این دستور بطور خوکار بخش اجرای محاسبات را برای ما باز و بسته می کند.

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

Matrix_1 = tf.constant([ [1,3],
                          [۲,۶]])
Matrix_2 = tf.constant([ [13,26],
                          [۲۳,۵۲]])
print("The Shape of Matrix 1 is {} and of Matrix 2 is {}".format(Matrix_1.get_shape(), Matrix_2.get_shape()))

MatMul = tf.matmul(Matrix_1, Matrix_2)

with tf.Session() as sess:
    result = sess.run(MatMul)

print(">> Output")
print(result)


Out []: The Shape of Matrix 1 is (2, 2) and of Matrix 2 is (2, 2)
        >> Output
        [[ ۸۲ ۱۸۲]
        [۱۶۴ ۳۶۴]]

 

بنابراین به طور کلی باید موارد زیر را به خاطر بسپارید :

  1. نمودار ها مجموعه ای از گره ها هستند
  2. از اتصالات با عنوان لبه ها یاد می شود
  3. در Tensorflow، هر گره در واقع انجام عملی با برخی از ورودی ها است که پس از اجرا، خروجی را ارائه می دهد.

به پایان این بخش معرفی رسیدیم. نوت بوک Jupyter در وبسایت GitHub موجود است. سعی خواهیم کرد مفاهیم بعدی را در قسمت های بعد پوشش دهیم.

بیشتر بخوانید:

منبع Medium

همچنین ببینید

فناوری تشخیص چهره و کاربردهای آن، تاریخچه تکنولوژی تشخیص چهره

فناوری تشخیص چهره و کاربردهای آن + تاریخچه

فناوری تشخیص چهره یک فناوری بیومتریک است که با استفاده از تجزیه و تحلیل الگوهایی …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *