मैं tf.nn.conv2d
यहाँ के बारे में टेंसरफ़्लो के डॉक्स को देख रहा था । लेकिन मैं यह नहीं समझ सकता कि यह क्या करता है या इसे हासिल करने की कोशिश कर रहा है। यह डॉक्स पर कहता है,
# 1: फ़िल्टर को आकार के साथ 2-D मैट्रिक्स में समतल करता है
[filter_height * filter_width * in_channels, output_channels]
।
तो वह क्या करता है? क्या यह तत्व-वार गुणा या सिर्फ सादा मैट्रिक्स गुणन है? मैं डॉक्स में उल्लिखित अन्य दो बिंदुओं को भी नहीं समझ सका। मैंने उन्हें नीचे लिखा है:
# 2: आकृति के आभासी टेंसर बनाने के लिए इनपुट टेंसर से छवि पैच निकालता है
[batch, out_height, out_width, filter_height * filter_width * in_channels]
।# 3: प्रत्येक पैच के लिए, फ़िल्टर मैट्रिक्स और छवि पैच वेक्टर को राइट-गुणा करता है।
यह वास्तव में उपयोगी होगा यदि कोई भी एक उदाहरण दे सकता है, कोड का एक टुकड़ा (अत्यंत सहायक) हो सकता है और समझा सकता है कि वहां क्या चल रहा है और ऑपरेशन इस तरह क्यों है।
मैंने एक छोटे हिस्से को कोड करने और ऑपरेशन के आकार को प्रिंट करने की कोशिश की है। फिर भी, मैं नहीं समझ सकता।
मैंने कुछ इस तरह की कोशिश की:
op = tf.shape(tf.nn.conv2d(tf.random_normal([1,10,10,10]),
tf.random_normal([2,10,10,10]),
strides=[1, 2, 2, 1], padding='SAME'))
with tf.Session() as sess:
result = sess.run(op)
print(result)
मैं बिट्स और कंसिस्टेंट न्यूरल नेटवर्क के टुकड़ों को समझता हूं। मैंने यहां उनका अध्ययन किया । लेकिन टेंसोफ़्लो पर कार्यान्वयन वह नहीं है जिसकी मुझे उम्मीद थी। तो इसने सवाल उठाया।
संपादित करें : इसलिए, मैंने एक बहुत सरल कोड लागू किया है। लेकिन मैं समझ नहीं पा रहा हूं कि क्या हो रहा है। मेरा मतलब है कि परिणाम इस तरह कैसे हैं। यह बहुत मददगार होगा अगर कोई मुझे बता सके कि इस प्रक्रिया से क्या पैदावार होती है।
input = tf.Variable(tf.random_normal([1,2,2,1]))
filter = tf.Variable(tf.random_normal([1,1,1,1]))
op = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='SAME')
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
print("input")
print(input.eval())
print("filter")
print(filter.eval())
print("result")
result = sess.run(op)
print(result)
उत्पादन
input
[[[[ 1.60314465]
[-0.55022103]]
[[ 0.00595062]
[-0.69889867]]]]
filter
[[[[-0.59594476]]]]
result
[[[[-0.95538563]
[ 0.32790133]]
[[-0.00354624]
[ 0.41650501]]]]
tf.nn.conv2d()
, इसलिए जब हमuse_cudnn_on_gpu=False
स्पष्ट रूप से निर्दिष्ट नहीं करते हैं, तब तक विधि का उपयोग तब नहीं किया जाता है जब हम जीपीयू समर्थन के साथ टीएफ का उपयोग करते हैं ।