'সূচক' অনুযায়ী বিদ্যমান টেনসর থেকে স্পার্স `আপডেট` বিয়োগ করে।
এই ক্রিয়াকলাপটি 'টেনসর'-এ পাস করা স্পার্স 'আপডেট' থেকে বিয়োগ করে একটি নতুন টেনসর তৈরি করে। এই ক্রিয়াকলাপটি `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-তে, আউট অফ বাউন্ড সূচক পাওয়া গেলে, সূচক উপেক্ষা করা হয়।
পাবলিক পদ্ধতি
আউটপুট <টি> | asOutput () একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে। |
স্ট্যাটিক <টি, ইউ প্রসারিত number> TensorScatterSub <টি> | |
আউটপুট <টি> | আউটপুট () একটি নতুন টেনসর টেনসর থেকে অনুলিপি করা হয়েছে এবং সূচক অনুসারে বিয়োগ করা আপডেটগুলি। |
উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতি
পাবলিক পদ্ধতি
পাবলিক আউটপুট <টি> asOutput ()
একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে।
TensorFlow অপারেশনের ইনপুট হল অন্য TensorFlow অপারেশনের আউটপুট। এই পদ্ধতিটি একটি সিম্বলিক হ্যান্ডেল পেতে ব্যবহৃত হয় যা ইনপুটের গণনার প্রতিনিধিত্ব করে।
পাবলিক স্ট্যাটিক TensorScatterSub <টি> তৈরি করুন ( ব্যাপ্তি সুযোগ প্রতীক <টি> টেন্সর, প্রতীক <u> সূচকের, প্রতীক <টি> আপডেট)
একটি নতুন TensorScatterSub অপারেশন মোড়ানো একটি ক্লাস তৈরি করার কারখানার পদ্ধতি।
পরামিতি
সুযোগ | বর্তমান সুযোগ |
---|---|
টেনসর | কপি/আপডেট করতে টেনসর। |
সূচক | সূচক টেনসর। |
আপডেট | আউটপুট মধ্যে ছড়িয়ে ছিটিয়ে আপডেট. |
রিটার্নস
- TensorScatterSub এর একটি নতুন উদাহরণ
পাবলিক আউটপুট <টি> আউটপুট ()
একটি নতুন টেনসর টেনসর থেকে অনুলিপি করা হয়েছে এবং সূচক অনুসারে বিয়োগ করা আপডেটগুলি।