`अद्यतनों` को `सूचकांकों` के अनुसार `आकार` के टेंसर में बिखेरता है।
निर्दिष्ट `सूचकांकों` पर अलग-अलग मानों के अनुसार विरल `अपडेट` बिखेरें। यह ऑप आपके द्वारा निर्दिष्ट `आकार` के साथ एक आउटपुट टेंसर लौटाता है। यह ऑप tf.gather_nd
ऑपरेटर का उलटा है जो किसी दिए गए टेंसर से मान या स्लाइस निकालता है।
यह ऑपरेशन tf.tensor_scatter_nd_add
के समान है, सिवाय इसके कि टेंसर शून्य-प्रारंभिक है। tf.scatter_nd(indices, updates, shape)
कॉल करना `tf.tensor_scatter_nd_add(tf.zeros(shape, update.dtype), सूचकांक, अद्यतन)` को कॉल करने के समान है
यदि `सूचकांक` में डुप्लिकेट हैं, तो संबंधित `अपडेट` आउटपुट टेंसर में जमा (संक्षेपित) हो जाते हैं।
चेतावनी : फ़्लोटिंग-पॉइंट डेटा प्रकारों के लिए, आउटपुट गैर-नियतात्मक हो सकता है। ऐसा इसलिए है क्योंकि जिस क्रम में अद्यतन लागू किए जाते हैं वह गैर-नियतात्मक होता है और जब फ़्लोटिंग-पॉइंट संख्याओं को अलग-अलग क्रम में जोड़ा जाता है तो परिणामी संख्यात्मक सन्निकटन त्रुटि थोड़ी भिन्न हो सकती है। हालाँकि, यदि ऑप नियतिवाद को tf.config.experimental.enable_op_determinism
के माध्यम से सक्षम किया गया है तो आउटपुट नियतात्मक होगा।
`सूचकांक` एक पूर्णांक टेंसर है जिसमें आउटपुट टेंसर में सूचकांक होते हैं। `सूचकांकों` का अंतिम आयाम अधिकतम `आकार` की रैंक हो सकता है:
सूचकांक.आकार[-1] <= आकार.रैंक
`सूचकांक` का अंतिम आयाम तत्वों के सूचकांक से मेल खाता है (यदि `सूचकांक.आकार[-1] = आकार.रैंक`) या स्लाइस (यदि `सूचकांक.आकार[-1] <आकार.रैंक`) आयाम `सूचकांकों के साथ .shape[-1]` का `shape`।
`अद्यतन` आकार वाला एक टेंसर है:
सूचकांक.आकार[:-1] + आकार[सूचकांक.आकार[-1]:]
स्कैटर ऑप का सबसे सरल रूप इंडेक्स द्वारा टेंसर में अलग-अलग तत्वों को सम्मिलित करना है। एक उदाहरण पर विचार करें जहां आप 8 तत्वों वाले रैंक-1 टेंसर में 4 बिखरे हुए तत्व सम्मिलित करना चाहते हैं।
![](https://tensorflow.google.cn/images/ScatterNd1.png?authuser=1&hl=hi)
पायथन में, यह स्कैटर ऑपरेशन इस तरह दिखेगा:
indices = tf.constant([[4], [3], [1], [7]])
updates = tf.constant([9, 10, 11, 12])
shape = tf.constant([8])
scatter = tf.scatter_nd(indices, updates, shape)
print(scatter)
परिणामी टेंसर इस तरह दिखेगा:[0, 11, 0, 10, 9, 0, 0, 12]
आप एक उच्च रैंक टेंसर के पूरे स्लाइस को एक साथ भी सम्मिलित कर सकते हैं। उदाहरण के लिए, आप नए मानों के दो मैट्रिक्स के साथ रैंक-3 टेंसर के पहले आयाम में दो स्लाइस डाल सकते हैं।
![](https://tensorflow.google.cn/images/ScatterNd2.png?authuser=1&hl=hi)
पायथन में, यह स्कैटर ऑपरेशन इस तरह दिखेगा:
indices = tf.constant([[1], [3]])
updates = tf.constant([[[5, 5, 5, 5], [6, 6, 6, 6],
[7, 7, 7, 7], [8, 8, 8, 8]],
[[5, 5, 5, 5], [6, 6, 6, 6],
[7, 7, 7, 7], [8, 8, 8, 8]]])
shape = tf.constant([4, 4, 4])
scatter = tf.scatter_nd(indices, updates, shape)
print(scatter)
परिणामी टेंसर इस तरह दिखेगा:[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[5, 5, 5 , 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]], [[0, 0, 0, 0], [0, 0 , 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[5, 5, 5, 5], [6, 6, 6, 6], [7 , 7, 7, 7], [8, 8, 8, 8]]]
ध्यान दें कि सीपीयू पर, यदि कोई आउट ऑफ बाउंड इंडेक्स पाया जाता है, तो एक त्रुटि वापस आ जाती है। जीपीयू पर, यदि कोई आउट ऑफ बाउंड इंडेक्स पाया जाता है, तो इंडेक्स को नजरअंदाज कर दिया जाता है।
सार्वजनिक तरीके
आउटपुट <यू> | आउटपुट के रूप में () टेंसर का प्रतीकात्मक हैंडल लौटाता है। |
स्थिर <यू, टी संख्या> स्कैटरएनडी <यू> का विस्तार करता है | |
आउटपुट <यू> | आउटपुट () सूचकांकों के अनुसार दिए गए आकार और अपडेट के साथ एक नया टेंसर लागू किया गया। |
विरासत में मिली विधियाँ
सार्वजनिक तरीके
सार्वजनिक आउटपुट <यू> आउटपुट के रूप में ()
टेंसर का प्रतीकात्मक हैंडल लौटाता है।
TensorFlow संचालन के इनपुट किसी अन्य TensorFlow ऑपरेशन के आउटपुट हैं। इस पद्धति का उपयोग एक प्रतीकात्मक हैंडल प्राप्त करने के लिए किया जाता है जो इनपुट की गणना का प्रतिनिधित्व करता है।
सार्वजनिक स्थैतिक स्कैटरएनडी <यू> बनाएं ( स्कोप स्कोप, ऑपरेंड <टी> सूचकांक, ऑपरेंड <यू> अपडेट, ऑपरेंड <टी> आकार)
एक नए स्कैटरएनडी ऑपरेशन को लपेटकर एक क्लास बनाने की फ़ैक्टरी विधि।
पैरामीटर
दायरा | वर्तमान दायरा |
---|---|
सूचकांक | सूचकांकों का टेंसर. |
अपडेट | आउटपुट टेंसर में बिखरने के लिए मान। |
आकार | 1-डी. आउटपुट टेंसर का आकार. |
रिटर्न
- स्कैटरएनडी का एक नया उदाहरण
सार्वजनिक आउटपुट <यू> आउटपुट ()
सूचकांकों के अनुसार दिए गए आकार और अपडेट के साथ एक नया टेंसर लागू किया गया।