`সূচক` অনুযায়ী `আপডেট`কে `আকার` আকারের টেনসরে ছড়িয়ে দেয়।
নির্দিষ্ট `সূচক`-এ পৃথক মান অনুযায়ী স্পারস `আপডেট` ছড়িয়ে দিন। এই অপটি আপনার নির্দিষ্ট করা `আকৃতি` সহ একটি আউটপুট টেনসর প্রদান করে। এই op হল tf.gather_nd
অপারেটরের বিপরীত যা একটি প্রদত্ত টেনসর থেকে মান বা স্লাইস বের করে।
এই ক্রিয়াকলাপটি tf.tensor_scatter_nd_add
এর অনুরূপ, টেনসরটি শূন্য-সূচনা ছাড়া। tf.scatter_nd(indices, updates, shape)
কল করা `tf.tensor_scatter_nd_add(tf.zeros(shape, updates.dtype), সূচক, আপডেট)' কল করার অনুরূপ।
যদি `সূচক`-এ সদৃশ থাকে, তাহলে সংশ্লিষ্ট `আপডেট` আউটপুট টেনসরে জমা হয় (সংক্ষেপিত)।
সতর্কতা : ফ্লোটিং-পয়েন্ট ডেটা প্রকারের জন্য, আউটপুট অনির্ধারিত হতে পারে। এর কারণ হল যে ক্রম অনুসারে আপডেটগুলি প্রয়োগ করা হয় তা অনির্ধারিত এবং যখন ফ্লোটিং-পয়েন্ট সংখ্যাগুলিকে বিভিন্ন ক্রমগুলিতে যুক্ত করা হয় ফলে সংখ্যাসূচক অনুমান ত্রুটি কিছুটা আলাদা হতে পারে। যাইহোক, tf.config.experimental.enable_op_determinism
এর মাধ্যমে op determinism সক্রিয় করা হলে আউটপুটটি নির্ধারক হবে।
`সূচক` একটি পূর্ণসংখ্যা টেনসর যা আউটপুট টেনসরের মধ্যে সূচক রয়েছে। `সূচক` এর শেষ মাত্রা সর্বাধিক `আকৃতি` র্যাঙ্ক হতে পারে:
indices.shape[-1] <= shape.rank
`সূচক` এর শেষ মাত্রা উপাদানের সূচকের সাথে মিলে যায় (যদি `indices.shape[-1] = shape.rank`) অথবা স্লাইস (যদি `indices.shape[-1] < shape.rank`) মাত্রা `সূচকের সাথে .shape[-1]` of `shape`।
`আপডেট` আকৃতি সহ একটি টেনসর:
indices.shape[:-1] + shape[indices.shape[-1]:]
স্ক্যাটার অপের সহজতম রূপ হল সূচক দ্বারা একটি টেনসরে পৃথক উপাদান সন্নিবেশ করা। একটি উদাহরণ বিবেচনা করুন যেখানে আপনি 8টি উপাদান সহ একটি র্যাঙ্ক-1 টেনসরে 4টি বিক্ষিপ্ত উপাদান সন্নিবেশ করতে চান।

পাইথনে, এই স্ক্যাটার অপারেশনটি দেখতে এরকম হবে:
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 টেনসরের প্রথম ডাইমেনশনে দুটি স্লাইস সন্নিবেশ করতে পারেন নতুন মানের দুটি ম্যাট্রিস সহ।

পাইথনে, এই স্ক্যাটার অপারেশনটি দেখতে এরকম হবে:
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]]]
মনে রাখবেন যে CPU-তে, আউট অফ বাউন্ড সূচক পাওয়া গেলে, একটি ত্রুটি ফেরত দেওয়া হয়। GPU-তে, আউট অফ বাউন্ড সূচক পাওয়া গেলে, সূচকটি উপেক্ষা করা হয়।
পাবলিক পদ্ধতি
আউটপুট <U> | আউটপুট হিসাবে () একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে। |
static <U, T প্রসারিত সংখ্যা> ScatterNd <U> | |
আউটপুট <U> | আউটপুট () প্রদত্ত আকার এবং সূচক অনুযায়ী প্রয়োগ করা আপডেট সহ একটি নতুন টেনসর। |
উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতি
পাবলিক পদ্ধতি
সর্বজনীন আউটপুট <U> হিসাবে আউটপুট ()
একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে।
TensorFlow অপারেশনের ইনপুট হল অন্য TensorFlow অপারেশনের আউটপুট। এই পদ্ধতিটি একটি সিম্বলিক হ্যান্ডেল পেতে ব্যবহৃত হয় যা ইনপুটের গণনার প্রতিনিধিত্ব করে।
পাবলিক স্ট্যাটিক ScatterNd <U> তৈরি করুন ( স্কোপ স্কোপ, অপারেন্ড <T> সূচক, অপারেন্ড <U> আপডেট, অপারেন্ড <T> আকার)
একটি নতুন ScatterNd অপারেশন মোড়ানো একটি ক্লাস তৈরি করার কারখানার পদ্ধতি।
পরামিতি
সুযোগ | বর্তমান সুযোগ |
---|---|
সূচক | সূচকের টেনসর। |
আপডেট | আউটপুট টেনসরে বিক্ষিপ্ত মান। |
আকৃতি | 1-ডি. আউটপুট টেনসরের আকৃতি। |
রিটার্নস
- ScatterNd এর একটি নতুন উদাহরণ