मान लें कि मेरे पास 3 चैनलों के साथ (7,7,3) छवि है। मैं इस तरह की छवि का उपयोग करके एक मैट्रिक्स ए कैसे बना सकता हूं कि प्रत्येक पंक्ति में पड़ोसी पिक्सेल के जोड़ीदार कनेक्शन शामिल हैं? मुझे पता है कि यह आसानी से छोरों के लिए अजगर के साथ किया जा सकता है लेकिन हम एक टेंसरफ्लो ग्राफ के भीतर यह कैसे कर सकते हैं?
मैट्रिक्स ए का उदाहरण:
[[pixel1 pixel2],
[pixel1 pixel3],
[pixel1 pixel4],
.....so on ]]
उत्तर:
जवाब के लिए 3 № 1आप कुछ मैट्रिक्स बीजगणित का उपयोग करके ऐसा कर सकते हैं। विचार को स्पष्ट करने के लिए, मान लीजिए कि आप 1 डी वेक्टर के लिए ऐसा करना चाहते हैं।
आप पड़ोसियों के जोड़े प्राप्त करने के लिए स्वयं के स्थानांतरित संस्करण के साथ वेक्टर को ढेर कर सकते हैं
n = 5
a = tf.range(n)
left = tf.stack([a[1:], a[:n-1]])
left = tf.transpose(left)
पूंछ को काटकर और अलग-अलग ऑफसेट के लिए दोहराकर आप बाएं पड़ोसियों और सही पड़ोसियों को प्राप्त कर सकते हैं
right = tf.stack([a[:n-1], a[1:]])
right = tf.transpose(right)
किनारे के प्रभावों को अनदेखा करने के लिए आप छोरों को काट सकते हैं और रैंक -3 मैट्रिक्स में फिर से स्टैक कर सकते हैं
stacked_neighbors = tf.stack([left[:-1], right[1:]])
अब पड़ोसियों को इंटरलेव करने के लिए हम ट्रांसपोज़ और रिशेप के साथ एक चाल का उपयोग कर सकते हैं।
stacked_neighbors = tf.transpose(stacked_neighbors, [1, 0, 2])
चूंकि डेटा संग्रहण पंक्ति-प्रमुख क्रम में है, मूल की तुलना में कम आयामों में फेरबदल, बाईं ओर अतिरिक्त आयामों को फिर से आकार देता है
stacked_neighbors = tf.reshape(stacked_neighbors, [6,2])