ScatterNd

পাবলিক ফাইনাল ক্লাস ScatterNd

`সূচক` অনুযায়ী একটি নতুন টেনসরে `আপডেট` ছড়িয়ে দিন।

সূচক অনুযায়ী প্রদত্ত `আকৃতি`-এর একটি টেনসরের মধ্যে (প্রাথমিকভাবে সাংখ্যিকের জন্য শূন্য, স্ট্রিংয়ের জন্য খালি) পৃথক মানগুলিতে স্পারস `আপডেট` প্রয়োগ করে একটি নতুন টেনসর তৈরি করে। এই অপারেটরটি `tf.gather_nd` অপারেটরের বিপরীত যা একটি প্রদত্ত টেনসর থেকে মান বা স্লাইস বের করে।

এই ক্রিয়াকলাপটি tensor_scatter_add-এর অনুরূপ, টেনসরটি শূন্য-সূচনা ছাড়া। `tf.scatter_nd(সূচক, মান, আকৃতি)` কল করা `tensor_scatter_add(tf.zeros(shape, values.dtype), সূচক, মান)' এর সাথে অভিন্ন।

যদি `সূচক`-এ সদৃশ থাকে, তাহলে তাদের আপডেটগুলি জমা হয় (সংখ্যা)।

সতর্কতা : যে ক্রম অনুসারে আপডেটগুলি প্রয়োগ করা হয় তা অনির্ধারিত, তাই আউটপুট অনির্ধারিত হবে যদি `সূচক`-এ সদৃশ থাকে -- কিছু সংখ্যাগত আনুমানিক সমস্যার কারণে, বিভিন্ন ক্রমে সংকলিত সংখ্যাগুলি ভিন্ন ফলাফল দিতে পারে।

`সূচক` হল একটি পূর্ণসংখ্যার টেনসর যাতে সূচকগুলিকে আকৃতির একটি নতুন টেনসর `আকৃতি`তে পরিণত করে। `সূচক` এর শেষ মাত্রা সর্বাধিক `আকৃতি` র‍্যাঙ্ক হতে পারে:

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([[0], [2]])
     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)
 
ফলে টেনসরটি দেখতে এইরকম হবে:

[[[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]], [[0, 0, 0, 0], [0, 0, 0, 0], [0 , 0, 0, 0], [0, 0, 0, 0]]]

মনে রাখবেন যে CPU-তে, আউট অফ বাউন্ড সূচক পাওয়া গেলে, একটি ত্রুটি ফেরত দেওয়া হয়। GPU-তে, আউট অফ বাউন্ড সূচক পাওয়া গেলে, সূচকটি উপেক্ষা করা হয়।

পাবলিক পদ্ধতি

আউটপুট <U>
আউটপুট হিসাবে ()
একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে।
static <U, T প্রসারিত সংখ্যা> ScatterNd <U>
তৈরি করুন ( স্কোপ স্কোপ, অপারেন্ড <T> সূচক, অপারেন্ড <U> আপডেট, অপারেন্ড <T> আকার)
একটি নতুন ScatterNd অপারেশন মোড়ানো একটি ক্লাস তৈরি করার কারখানার পদ্ধতি।
আউটপুট <U>
আউটপুট ()
প্রদত্ত আকার এবং সূচক অনুযায়ী প্রয়োগ করা আপডেট সহ একটি নতুন টেনসর।

উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতি

পাবলিক পদ্ধতি

সর্বজনীন আউটপুট <U> হিসাবে আউটপুট ()

একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে।

TensorFlow অপারেশনের ইনপুট হল অন্য TensorFlow অপারেশনের আউটপুট। এই পদ্ধতিটি একটি প্রতীকী হ্যান্ডেল পেতে ব্যবহৃত হয় যা ইনপুটের গণনাকে প্রতিনিধিত্ব করে।

পাবলিক স্ট্যাটিক ScatterNd <U> তৈরি করুন ( স্কোপ স্কোপ, অপারেন্ড <T> সূচক, অপারেন্ড <U> আপডেট, অপারেন্ড <T> আকার)

একটি নতুন ScatterNd অপারেশন মোড়ানো একটি ক্লাস তৈরি করার কারখানার পদ্ধতি।

পরামিতি
সুযোগ বর্তমান সুযোগ
সূচক সূচক টেনসর।
আপডেট আউটপুট মধ্যে ছড়িয়ে ছিটিয়ে আপডেট.
আকৃতি 1-ডি. ফলে টেনসরের আকৃতি।
রিটার্নস
  • ScatterNd এর একটি নতুন উদাহরণ

সর্বজনীন আউটপুট <U> আউটপুট ()

প্রদত্ত আকার এবং সূচক অনুযায়ী প্রয়োগ করা আপডেট সহ একটি নতুন টেনসর।