تفاوت دامنه نام و دامنه متغیر در جریان تنسور چیست؟

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

هنگام کار با TensorFlow، درک مفاهیم دامنه نام و دامنه متغیر مهم است. این دو مفهوم در انجام پروژه های پایتون ممکن است گیج کننده باشند، اما برای سازماندهی و مدیریت کد TensorFlow شما ضروری هستند.

دامنه نام و دامنه متغیر هر دو برای گروه بندی عملیات و متغیرهای مرتبط با هم در TensorFlow استفاده می شوند . با این حال، آنها اهداف متفاوتی را دنبال می کنند و قوانین متفاوتی برای نحوه کار خود دارند.

دستورالعمل نصب و راه اندازی در پروژه پایتون :

کد زیر را برای نصب کتابخانه TensorFlow اجرا کنید.

pip install tensorflow

محدوده نام:

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

برای ایجاد یک نام دامنه در TensorFlow، از تابع ()tf.name_scope استفاده می کنید.

دامنه نام برای سازماندهی عملیات در نمودار تحت یک پیشوند نام مشترک استفاده می شود. برای اشکال زدایی و تجسم نمودار مفید است. نام دامنه با استفاده از () tf.name_scope ایجاد می شود. متغیرهای ایجاد شده در محدوده نام به طور خودکار به محدوده اضافه نمی شوند.

نکته مهمی که باید به آن توجه داشت این است که دامنه نام بر نام متغیرها تأثیر نمی گذارد. اگر متغیری را در محدوده نام تعریف کنید، همچنان همان نامی خواهد داشت که در خارج از محدوده نام تعریف شده است.

پیاده سازی کد:

import tensorflow as tf

  

:with tf.name_scope(“my_scope”)

    var1 = tf.Variable([1.0, 2.0], name=”a”)     

    var2 = tf.Variable(2.0, name=”b”)     

  

print(var1.name)

print(var2.name)

خروجی :

my_scope/a:0

my_scope/b:0

دامنه متغیر

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

هنگام انجام پروژه پایتون، دامنه متغیر با ایجاد فضای نام برای متغیرها به مدیریت این امر کمک می کند. در محدوده متغیر، می‌توانید متغیرها را با نام‌های ساده مانند «وزن» یا «بایاس» تعریف کنید، و TensorFlow به طور خودکار برای هر متغیر بر اساس محدوده، نام منحصر به فردی ایجاد می‌کند.

برای ایجاد یک محدوده متغیر در TensorFlow، از تابع ()tf.variable_scope استفاده می کنید.

دامنه متغیر برای مدیریت متغیرها و اشتراک گذاری آنها در بخش های مختلف نمودار استفاده می شود. متغیرهای ایجاد شده در محدوده متغیر به طور خودکار به scope اضافه می شوند و نام آنها به طور خودکار با نام scope پیشوند می شود. دامنه متغیر با استفاده از ()tf.variable_scope ایجاد می شود.

نکته مهمی که باید به آن توجه داشت این است که دامنه متغیرها نیز بر نام عملیات تأثیر می گذارد. هر عملیاتی که در محدوده متغیر تعریف شود، نام آنها با نام دامنه متغیر پیشوند خواهد بود. این می تواند برای اشکال زدایی مفید باشد، زیرا مشخص می کند که کدام متغیرها و عملیات با یکدیگر مرتبط هستند.

 

import tensorflow as tf       

 Disable the eager execution#       

()tf.compat.v1.disable_eager_execution       

  

:with tf.compat.v1.variable_scope(“my_vars”)       

     Define two variables with simple names#       

    w = tf.compat.v1.get_variable(“weights”, shape=(2, 2))       

    b = tf.compat.v1.get_variable(“biases”, shape=(2,))       

      

    Use the variables to define an operation#       

    x = tf.compat.v1.placeholder(tf.float32, shape=(None, 2))       

    y = tf.matmul(x, w) + b       

      

print(‘w:’,w.name)

print(‘b:’,b.name)

print(‘x:’,x.name)

print(‘y:’,y.name)

print(‘x:’,x.consumers())

print(‘y:’,y.consumers())

خروجی :

w: my_vars/weights:0

b: my_vars/biases:0

x: my_vars/Placeholder:0

y: my_vars/add:0

x: [<tf.Operation ‘my_vars/MatMul’ type=MatMul>]

[]:y

 

مثال:

در برنامه زیر یک تابع ()create_graph برای ایجاد گراف TensorFlow تعریف می کنیم. در داخل تابع، دو محدوده ایجاد می کنیم:

یک محدوده متغیر با نام var_scope و یک نام scope با نام name_scope در داخل محدوده متغیر، با ضرب var1 در یک ثابت اسکالر، یک متغیر var1 با استفاده از متد() tf.get_variable و یک عملیات op1 ایجاد می کنیم. در داخل محدوده نام، یک متغیر var2 با استفاده از متد ()tf.Variable و یک عملیات op2 با ضرب var2 در یک ثابت اسکالر ایجاد می کنیم.

خارج از هر محدوده ای، با افزودن op1 و op2 عملیات دیگری op3 ایجاد می کنیم. در نهایت عملیات خروجی op3 را از تابع برمی گردانیم.

سپس با فراخوانی تابع ()create_graph یک نمودار TensorFlow ایجاد می کنیم و عملیات خروجی را در یک متغیر output_op ذخیره می کنیم. سپس یک جلسه TensorFlow ایجاد می کنیم و با استفاده از tf متغیرها را مقداردهی اولیه می کنیم. () global_variables_initializer. در نهایت عملیات خروجی را با استفاده از روش ()sess.run ارزیابی کرده و خروجی را چاپ می کنیم.

 

import tensorflow as tf

() tf.compat.v1.disable_eager_execution()

# Defining a function to create a TensorFlow graph#

:()def create_graph

 : with tf.compat.v1.variable_scope(“var_scope”)         

     Creating a variable#

        var1 = tf.compat.v1.get_variable(“var1”, shape=[1], dtype=tf.float32)

         Creating an operation#

        op1 = var1 * 2

          

  :  with tf.name_scope(“name_scope”):

        Creating a variable#

        var2 = tf.Variable([1.0], name=”var2″)

         Creating an operation#

        op2 = var2 * 3

          

   Creating an operation outside any scope#

    op3 = op1 + op2

    return op3

  

 Creating a TensorFlow graph#

() output_op = create_graph

  

 Creating a TensorFlow session#

:with tf.compat.v1.Session() as sess

   Initializing the variables#

    sess.run(tf.compat.v1.global_variables_initializer())

  Evaluating the output operation#

    output = sess.run(output_op)

  Printing the output#

    print(“Output: “, output)

خروجی :

Output: [2.2647586]

جمع بندی:

دامنه های نام و دامنه های متغیر هر دو برای گروه بندی عملیات و متغیرهای مرتبط با هم در TensorFlow استفاده می شوند. دامنه نام برای سازماندهی کد شما استفاده می شود، در حالی که محدوده متغیر برای مدیریت نام متغیرها و عملیات استفاده می شود. درک این مفاهیم برای نوشتن کد TensorFlow تمیز و منظم ضروری است.

 

 

منابع:

w3schools.com

geeksforgeeks.org

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

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

این زمینه را پر کنید
این زمینه را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

هشت − 6 =

سفارش پروژه