Deep Learning – 03 – Placeholders, Tensor board

Placeholders

Placeholders என்பவை தரவுகள் வரவிருக்கின்றன எனும் குறிப்பை மட்டும் நமக்கு உணர்த்தப் பயன்படுகின்றன. உண்மையான தரவுகளை session இயங்கிக் கொண்டிருக்கும்போது run-timeல் பெற்றுக்கொள்கின்றன. feed_dict எனும் argument மூலமாக இவை தரவுகளைப் பெற்றுக்கொள்கின்றன. Variables என்பதற்கு ஏதாவதொரு துவக்க மதிப்பு தேவைப்படுகிறது. இதை வைத்துத் தான் பின்னர் இயங்கத் தொடங்கும். ஆனால் placeholdersஇயங்குவதற்கு எந்த ஒரு துவக்க மதிப்பும் தேவையில்லை. session இயங்கிக் கொண்டிருக்கும்போது மதிப்புகளை அளித்தால் போதுமானது. கீழ்க்கண்ட உதாரணத்தில், வெறும் பெயர் மற்றும் தரவுவகையைக் கொடுத்து x, y எனும் 2 placeholders உருவாக்கப்பட்டுள்ளன. x-ன் மதிப்பை வைத்து y-ன் மதிப்பைக் கணக்கிடுவதற்கான விதியும் கொடுக்கப்பட்டுள்ளது. பின்னர் அதற்கான மதிப்புகள் session இயங்கிக் கொண்டிருக்கும்போது x-க்கு 100, 200, 300 மற்றும் random முறையில் அமைந்த 1 முதல் 10 வரையிலான எண்கள் என மாற்றி மாற்றி அளிக்கப்படுகின்றன. ஒவ்வொன்றுக்குமான y-ன் மதிப்பு கணக்கிடப்பட்டு அவை பிரிண்ட் செய்யப்பட்டுள்ளன.


import tensorflow as tf
import numpy as np
x = tf.placeholder(tf.float32,name="x")
y = tf.placeholder(tf.float32,[1],name="y")
z = tf.constant(2.0)
y = x * z
print (x)
with tf.Session() as s:
print (s.run(y,feed_dict={x:[100]}))
print (s.run(y,{x:[200]}))
print (s.run(y,{x: np.random.rand(1, 10)}))
print (s.run(tf.pow(x, 2),{x:[300]}))

நிரலுக்கான வெளியீடு:

Tensor(“x:0”, dtype=float32)
[200.]
[400.]
[[1.5783005 0.30819204 0.26068646 1.8491662 1.0529723 1.7923148
0.9828862 1.5377688 0.06250755 1.2727137 ]]
[90000.]

பொதுவாக நியூரல் நெட்வொர்க்கில் பயிற்சியின் போது அளிக்கப்படும் மாதிரித் தரவுகளின் வடிவங்களை நம்மால் திட்டமிட்டுக் கூற முடியாது. இதுபோன்ற இடங்களில் placeholders-ஐப் பயன்படுத்தலாம். ஏனெனில் variables-ஐ வரையறுக்கும்போது அதன் வடிவத்தை நாம் திட்டமிட்டுக் கூற வேண்டியிருக்கும். அதாவது எத்தனை rows & columns இருக்கும் என்பதைக் கூறவேண்டி இருக்கும். இந்தப் பிரச்சனை placeholders-ல் இல்லை. Run-timeல் மாதிரித் தரவுகள் வர வர அதை அப்படியே ஒவ்வொரு நியூரானுக்கும் செலுத்துவதற்கு இவை பெரிதும் பயன்படுகின்றன.

Tensor board

Tensor board என்பது பல்வேறு டென்சார்களுக்கிடையில் நிகழும் கணக்கீடுகளை வரைபடமாக வரைந்து காட்ட உதவும் கருவி ஆகும். கீழ்க்கண்ட எடுத்துக்காட்டில் x1, y1, c எனும் 3 டென்சார்களுக்கிடையில் நிகழ்ந்துள்ள கணக்கீடு பின்வருமாறு.

f = x1.y1 + squared(x1) + y1 + c
= 5*6 + squared(5) + 6 + 5
= 30 + 25 + 6 + 5
= 66

இவற்றை வரைபடமாக வரைந்து காட்ட tf.summary.FileWriter() எனும் class பயன்படுகிறது. இது ‘tensorboard_example’ என்ற பெயரில் நம்முடைய தற்போதைய directory-ல் ஒரு folder-ஐ உருவாக்கும். இதற்குள் அனைத்து நிகழ்வுகளின் சுருக்கங்களையும் (events & summaries) சேமித்து வைக்கும். இதுவே s.graph மூலம் வரைபடமாக வரைந்து காட்டப்படும்.


import tensorflow as tf
x1 = tf.get_variable("a", dtype=tf.int32, initializer=tf.constant([5]))
y1 = tf.get_variable("b", dtype=tf.int32, initializer=tf.constant([6]))
c = tf.constant([5], name ="c")
f = tf.multiply(x1, y1) + tf.pow(x1, 2) + y1 + c
with tf.Session() as s:
summary_writer = tf.summary.FileWriter('tensorboard_example',s.graph)
s.run(tf.global_variables_initializer())
print (s.run(f))

[66]

இப்போது வரைபடத்துக்கான நிரலை எழுதி விட்டோம். அடுத்து tensorboard-ஐ இயக்க பின்வரும் கட்டளையை அளிக்கவும். இது 6006 port-ல் இதனை இயக்கும். இதன் வெளியீடு

TensorBoard 1.13.1 at shrinivasan-Lenovo-Z50-70:6006 (Press CTRL+C to quit)

என்பது போன்று அமைந்தால், tensorboard இயங்கிக் கொண்டிருக்கிறது என்று அர்த்தம். அந்த url-ல் சென்று பார்த்தால் வரைபடம் காணப்படும்.

$ tensorboard –logdir=tensorboard_example

கீழ்க்கண்ட வரைபடம் Tensor flow graph என்று அழைக்கப்படும். இது nodes மற்றும் edges எனும் இரண்டு அம்சங்களைப் பெற்றிருக்கும். add, mul, pow போன்றவை nodes என்று அழைக்கப்படும். இது கணித செயல்பாடுகளைக் குறிக்கும். a,b,c எனப் பெயர் கொண்ட variables, constants ஆகியவை edges என்று அழைக்கப்படும். இது டென்சாரைக் குறிக்கும்.

%d bloggers like this: