آرایهها در تنسورفلو
در جلسه سوم آموزش تنسورفلو (متغیرها در تنسورفلو) در مورد متغیرها و ثابتها توضیح داده شد و به توضیح دستورات tf.Variable، tf.constant و tf.placeholder پرداختیم. در این جلسه میخواهیم در مورد نحوه تعریف آرایهها در تنسورفلو صحبت کنیم. آرایهها در یادگیری ماشین، شبکههای عصبی و بهخصوص بینایی کامپیوتر کاربرد بسیار زیادی دارند، بههمین دلیل در چهارمین جلسه از آموزش تنسورفلو به نحوه کار با آرایهها در تنسورفلو خواهیم پرداخت. با هوسم همراه باشید…
آرایهها مجموعهای از اعداد هستند که به شکلی منظم در قالب سطرها و ستونهایی قرار گرفتهاند. بردارها (آرایههای یک بعدی)، ماتریسها (آرایههای دو بعدی) دو عضو معروف از خانواده آرایهها هستند، درحالیکه آرایهها میتوانند ابعاد بالاتر از دو هم داشته باشند و اتفاقا در بحث شبکههای عصبی عمیق هم آرایههای چند بعدی بسیار پرکاربرد هستند. برای تعریف آرایهها میتوان از tf.constant، tf.Variable و tf.placeholder استفاده نمود که در ادامه توضیح داده شده است.
tf.constant
در مورد این دستور در جلسه سوم توضیح داده شد. برای تعریف آرایههای ثابت بهصورت زیر، آرایه موردنظر به عنوان اولین ورودی در دستور tf.constant قرار میگیرد. در زیر یک بردار ورودی ثابت به ابعاد 4 تعریف شده است. یادآوری میکنیم که این بردار چون ثابت است، بعدا قابل تغییر نیست.
a = tf.constant([1, 3, 8, -2])
tf.placeholder
در تعریف این دستور در جلسه سوم، گفتیم که tf.placeholder بخشی از حافظه رم را برای کارهای بعدی رزرو میکند. قبلا فقط یک جای خالی برای اسکالر در نظر گرفتیم، اما همانطور که در کدهای زیر مشاهده میکنید، میتوانیم ابعاد آرایه مدنظرمان را مشخص و بعدا آنها را پر کنیم. در اولین دستور، یک بردار بهطول 5 تعریف شده است. در دومین دستور، یک ماتریس 10×10 و درنهایت در سومین دستور یک آرایه سهبعدی به ابعاد 3×20×20 تعریف شده است.
b = tf.placeholder(tf.float32, 5) c = tf.placeholder(tf.float32, [10,10]) d = tf.placeholder(tf.int32, [20,20,3])
tf.Variable
برای تعریف متغیرها از دستور tf.Variable استفاده میکنیم. نحوه تعریف آرایه در tf.Variable بسیار شبیه tf.constant است و همانطور که در کدهای زیر مشاهده میکنید، آرایههای با ابعاد متفاوتی تعریف شده است. متغیر e، برداری به طول 3 و متغیر f برداری به ابعاد 3×2 است.
e = tf.Variable([5, 1, -1]) f = tf.Variable([[1, 1, 1], [2, 2, 2]])
اما ممکن است شما نیاز به مقداردهی آرایههای با ابعاد بزرگ داشته باشید. مثلا میخواهید یک ماتریس به ابعاد 200×200 با مقادیر تماما صفر یا تماما یک تعریف کنید؛ یا ممکن است نیاز به آرایههای با مقادیر رندوم داشته باشید. در این حالتها هم در تنسورفلو دستوراتی در نظر گرفته شده که در ادامه آنها را معرفی میکنیم.
tf.zeros
با استفاده از این دستور میتوانیم آرایههای صفر با هر ابعادی تعریف کنیم. ماتریس صفر، همانند آنچه در متلب وجود دارد، در کتابخانه تنسورفلو هم در نظر گرفته شده است. در ادامه مثالی از تعریف یک ماتریس صفر به ابعاد 10×10 به همراه جواب آن را مشاهده مینمایید. عدد اول، تعداد سطرها و عدد دوم نشاندهنده تعداد ستونهاست.
zero_mat = tf.zeros([10,10]) sess = tf.Session() sess.run(zero_mat) array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]], dtype=float32)
tf.ones
با استفاده از این دستور، آرایهای با ابعاد دلخواه شامل مقادیر 1 میتوانیم تعریف کنیم. در زیر یک تنسور سهبعدی به ابعاد 3×4×5 تعریف شده است:
ones_mat= tf.ones([5,4,3]) sess.run(ones_mat) array([[[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]], [[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]], [[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]], [[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]], [[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]]], dtype=float32)
tf.range
اگر یک بازه از اعداد با گامهای ثابت میخواهید، میتوانید از این دستور استفاده کنید. همانطور که در مثال زیر آورده شده است، از تنسورفلو میخواهیم که بین بازه [16 6] یک مجموعه اعداد با فاصله 3 به ما بدهد. خروجی یک بردار است که در زیر نشان داده شده است:
g = tf.range(5,16,3) sess.run(g) array([ 5, 8, 11, 14])
tf.random_uniform
اگر یک آرایه از اعداد تصادفی میخواهید، میتوانید با دستور tf.random_uniform یک مجموعه عدد تصادفی با توزیع یکنواخت تولید کنید. مطمئنا، این دستور یکی از پرکاربردترین دستورات در زمینه یادگیری عمیق خواهد بود.
h = tf.random_normal([5]) sess.run(h) array([ 0.97898144, 0.82024717, -0.80006266, 0.27656975, 0.43732926], dtype=float32)
آیا تنها همین دستورات در تنسورفلو در نظر گرفته شده است؟ خیر، دستورات زیادی برای تعریف آرایههای مختلف در نظر گرفته شده که در اینجا به بعضی از مهمترین آنها اشاره کردیم. حال به عنوان تمرین شما میتوانید دستورات مفید دیگری را پیدا کنید و حتی در بخش کامنتها این دستورات را به همراه عملکردشان به اشتراک بگذارید. جلسه چهارم آموزش تنسورفلو با عنوان ماتریسها در تنسورفلو تمام شد و امیدواریم که آموزش مفیدی بوده باشد. نظرات و سوالات خود را در مورد این آموزش کامنت کنید…
دیدگاهتان را بنویسید