TensorScatterSub

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

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

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

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

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]:]

tensor_scatter_sub-এর সহজতম রূপ হল সূচক দ্বারা একটি টেনসর থেকে পৃথক উপাদান বিয়োগ করা। উদাহরণস্বরূপ, বলুন আমরা 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_sub(tensor, indices, updates)
     print(updated)
 
ফলে টেনসরটি দেখতে এইরকম হবে:

[1, -10, 1, -9, -8, 1, 1, -11]

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

[[[-4, -4, -4, -4], [-5, -5, -5, -5], [-6, -6, -6, -6], [-7, -7] , -7, -7]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]] , [[-4, -4, -4, -4], [-5, -5, -5, -5], [-6, -6, -6, -6], [-7, -7 , -7, -7]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]] ]

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

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

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

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

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

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

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

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

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

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

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

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

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