`सूचकांकों` के अनुसार `अपडेट्स` को मौजूदा टेंसर में बिखेरें।
यह ऑपरेशन पास किए गए `टेंसर` में विरल `अपडेट` लागू करके एक नया टेंसर बनाता है। यह ऑपरेशन `tf.scatter_nd` के समान है, सिवाय इसके कि अपडेट मौजूदा टेंसर पर बिखरे हुए हैं (शून्य-टेंसर के विपरीत)। यदि मौजूदा टेंसर की मेमोरी का पुन: उपयोग नहीं किया जा सकता है, तो एक प्रतिलिपि बनाई और अद्यतन की जाती है।
यदि `सूचकांक` में डुप्लिकेट हैं, तो उनके अपडेट संचित (संक्षेपित) किए जाते हैं।
चेतावनी : जिस क्रम में अद्यतन लागू किए जाते हैं वह गैर-नियतात्मक है, इसलिए यदि `सूचकांक` में डुप्लिकेट हैं तो आउटपुट गैर-नियतात्मक होगा - कुछ संख्यात्मक सन्निकटन मुद्दों के कारण, अलग-अलग क्रम में संख्याओं को जोड़ने पर अलग-अलग परिणाम मिल सकते हैं।
`सूचकांक` एक पूर्णांक टेंसर है जिसमें सूचकांक `आकार` के एक नए टेंसर में समाहित होते हैं। `सूचकांकों` का अंतिम आयाम अधिकतम `आकार` की रैंक हो सकता है:
सूचकांक.आकार[-1] <= आकार.रैंक
`सूचकांक` का अंतिम आयाम तत्वों में सूचकांक से मेल खाता है (यदि `सूचकांक.आकार[-1] = आकार.रैंक`) या स्लाइस (यदि `सूचकांक.आकार[-1] <आकार.रैंक`) आयाम `सूचकांकों के साथ .shape[-1]` का `shape`। `अपडेट` आकार वाला एक टेंसर है
सूचकांक.आकार[:-1] + आकार[सूचकांक.आकार[-1]:]
स्कैटर का सबसे सरल रूप सूचकांक द्वारा व्यक्तिगत तत्वों को टेंसर में सम्मिलित करना है। उदाहरण के लिए, मान लें कि हम 8 तत्वों वाले रैंक-1 टेंसर में 4 बिखरे हुए तत्व सम्मिलित करना चाहते हैं।

पायथन में, यह स्कैटर ऑपरेशन इस तरह दिखेगा:
>>> सूचकांक = tf.constant([[4], [3], [1], [7]]) >>> अद्यतन = tf.constant([9, 10, 11, 12]) >>> टेंसर = tf.ones([8], dtype=tf.int32) >>> print(tf.tensor_scatter_nd_update(tensor, indices, update)) tf.Tensor([ 1 11 1 10 9 1 1 12], आकार=(8 ,), dtype=int32)
हम एक उच्च रैंक टेंसर के पूरे स्लाइस को एक साथ भी सम्मिलित कर सकते हैं। उदाहरण के लिए, यदि हम रैंक-3 टेंसर के पहले आयाम में नए मानों के दो मैट्रिक्स के साथ दो स्लाइस सम्मिलित करना चाहते हैं।
पायथन में, यह स्कैटर ऑपरेशन इस तरह दिखेगा:
>>> सूचकांक = tf.constant([[0], [2]]) >>> अद्यतन = 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]]]) >>> टेंसर = tf.ones([4, 4, 4], dtype=tf.int32) >>> प्रिंट (tf.tensor_scatter_nd_update(tensor, indices, update).numpy()) [[[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[1 1 1 1] [1 1 1 1] [1 1 1 1] [1 1 1 1]] [[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[1 1 1 1] [1 1 1 1] [1 1 1 1] [1 1 1 1]]]
ध्यान दें कि सीपीयू पर, यदि कोई आउट ऑफ बाउंड इंडेक्स पाया जाता है, तो एक त्रुटि वापस आ जाती है। जीपीयू पर, यदि कोई आउट ऑफ बाउंड इंडेक्स पाया जाता है, तो इंडेक्स को नजरअंदाज कर दिया जाता है।
सार्वजनिक तरीके
| आउटपुट <T> | आउटपुट के रूप में () टेंसर का प्रतीकात्मक हैंडल लौटाता है। |
| स्थिर <T, U संख्या बढ़ाता है> TensorScatterUpdate <T> | |
| आउटपुट <T> | आउटपुट () सूचकांकों के अनुसार दिए गए आकार और अपडेट के साथ एक नया टेंसर लागू किया गया। |
विरासत में मिली विधियाँ
सार्वजनिक तरीके
सार्वजनिक आउटपुट <T> asOutput ()
टेंसर का प्रतीकात्मक हैंडल लौटाता है।
TensorFlow संचालन के इनपुट किसी अन्य TensorFlow ऑपरेशन के आउटपुट हैं। इस पद्धति का उपयोग एक प्रतीकात्मक हैंडल प्राप्त करने के लिए किया जाता है जो इनपुट की गणना का प्रतिनिधित्व करता है।
सार्वजनिक स्थैतिक TensorScatterUpdate <T> बनाएं ( स्कोप स्कोप, ऑपरेंड <T> टेंसर, ऑपरेंड <U> इंडेक्स, ऑपरेंड <T> अपडेट)
एक नया TensorScatterUpdate ऑपरेशन लपेटकर एक क्लास बनाने की फ़ैक्टरी विधि।
पैरामीटर
| दायरा | वर्तमान दायरा |
|---|---|
| टेन्सर | कॉपी/अपडेट करने के लिए टेंसर। |
| सूचकांक | सूचकांक टेंसर. |
| अपडेट | आउटपुट में बिखरने के लिए अद्यतन। |
रिटर्न
- TensorScatterUpdate का एक नया उदाहरण
सार्वजनिक आउटपुट <T> आउटपुट ()
सूचकांकों के अनुसार दिए गए आकार और अपडेट के साथ एक नया टेंसर लागू किया गया।