TensorScatterAdd

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

'সূচক' অনুযায়ী বিদ্যমান টেনসরে স্পার্স `আপডেট` যোগ করে।

এই ক্রিয়াকলাপটি `টেনসর`-এ পাস করা স্পার্স `আপডেট` যোগ করে একটি নতুন টেনসর তৈরি করে। এই ক্রিয়াকলাপটি `tf.scatter_nd_add`-এর মতোই, আপডেটগুলি একটি বিদ্যমান টেনসরে যোগ করা ছাড়া (একটি পরিবর্তনশীলের বিপরীতে)। যদি বিদ্যমান টেনসরের মেমরিটি পুনরায় ব্যবহার করা না যায় তবে একটি অনুলিপি তৈরি এবং আপডেট করা হয়।

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

indices.shape[-1] <= tensor.shape.rank

`সূচক` এর শেষ মাত্রা উপাদানগুলির মধ্যে সূচকের সাথে মিলে যায় (যদি `indices.shape[-1] = tensor.shape.rank`) বা স্লাইস (যদি `indices.shape[-1] < tensor.shape.rank` হয়) `tensor.shape` এর মাত্রা `indices.shape[-1]` বরাবর। `আপডেট` হল আকৃতি সহ একটি টেনসর

indices.shape[:-1] + tensor.shape[indices.shape[-1]:]

tensor_scatter_add-এর সহজতম রূপ হল সূচক দ্বারা একটি টেনসরে পৃথক উপাদান যোগ করা। উদাহরণস্বরূপ, বলুন আমরা 8টি উপাদান সহ একটি র্যাঙ্ক-1 টেনসরে 4টি উপাদান যুক্ত করতে চাই।

পাইথনে, এই স্ক্যাটার অ্যাড অপারেশনটি দেখতে এইরকম হবে:

indices = tf.constant([[4], [3], [1], [7]])
     updates = tf.constant([9, 10, 11, 12])
     tensor = tf.ones([8], dtype=tf.int32)
     updated = tf.tensor_scatter_nd_add(tensor, indices, updates)
     print(updated)
 
ফলে টেনসরটি দেখতে এইরকম হবে:

[1, 12, 1, 11, 10, 1, 1, 13]

আমরা একই সাথে উচ্চতর র্যাঙ্কের টেনসরের সম্পূর্ণ স্লাইস সন্নিবেশ করতে পারি। উদাহরণস্বরূপ, যদি আমরা একটি র‍্যাঙ্ক-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]]])
     tensor = tf.ones([4, 4, 4],dtype=tf.int32)
     updated = tf.tensor_scatter_nd_add(tensor, indices, updates)
     print(updated)
 
ফলে টেনসরটি দেখতে এইরকম হবে:

[[[6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8], [9, 9, 9, 9]], [[1, 1, 1] , 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[6, 6, 6, 6], [7, 7 , 7, 7], [8, 8, 8, 8], [9, 9, 9, 9]], [[1, 1, 1, 1], [1, 1, 1, 1], [1 , 1, 1, 1], [1, 1, 1, 1]]]

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

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

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

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

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

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

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

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

পাবলিক স্ট্যাটিক TensorScatterAdd <T> তৈরি করুন ( Scope scope, Operand <T> tensor, Operand <U> সূচক, Operand <T> আপডেট)

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

পরামিতি
সুযোগ বর্তমান সুযোগ
টেনসর কপি/আপডেট করার জন্য টেনসর।
সূচক সূচক টেনসর।
আপডেট আউটপুট মধ্যে ছড়িয়ে ছিটিয়ে আপডেট.
রিটার্নস
  • TensorScatterAdd এর একটি নতুন উদাহরণ

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

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