'সূচক' অনুযায়ী বিদ্যমান টেনসরে স্পার্স `আপডেট` যোগ করে।
এই ক্রিয়াকলাপটি `টেনসর`-এ পাস করা স্পার্স `আপডেট` যোগ করে একটি নতুন টেনসর তৈরি করে। এই ক্রিয়াকলাপটি `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-তে, আউট অফ বাউন্ড সূচক পাওয়া গেলে, সূচকটি উপেক্ষা করা হয়।
ধ্রুবক
স্ট্রিং | OP_NAME | এই অপের নাম, টেনসরফ্লো কোর ইঞ্জিন দ্বারা পরিচিত |
পাবলিক পদ্ধতি
আউটপুট <T> | আউটপুট হিসাবে () টেনসরের প্রতীকী হ্যান্ডেল ফেরত দেয়। |
স্ট্যাটিক <T TType প্রসারিত করে > TensorScatterNdAdd <T> | |
আউটপুট <T> | আউটপুট () টেনসর থেকে অনুলিপি করা একটি নতুন টেনসর এবং সূচক অনুযায়ী আপডেট যোগ করা হয়েছে। |
উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতি
ধ্রুবক
সর্বজনীন স্ট্যাটিক চূড়ান্ত স্ট্রিং OP_NAME
এই অপের নাম, টেনসরফ্লো কোর ইঞ্জিন দ্বারা পরিচিত
পাবলিক পদ্ধতি
সর্বজনীন আউটপুট <T> হিসাবে আউটপুট ()
টেনসরের প্রতীকী হ্যান্ডেল ফেরত দেয়।
TensorFlow অপারেশনের ইনপুট হল অন্য TensorFlow অপারেশনের আউটপুট। এই পদ্ধতিটি একটি প্রতীকী হ্যান্ডেল পেতে ব্যবহৃত হয় যা ইনপুটের গণনাকে প্রতিনিধিত্ব করে।
পাবলিক স্ট্যাটিক TensorScatterNdAdd <T> তৈরি করুন ( Scope scope, Operand <T> tensor, Operand <? TNumber > indices, Operand <T> আপডেটগুলি প্রসারিত করে)
একটি নতুন TensorScatterNdAdd অপারেশন মোড়ানো একটি ক্লাস তৈরি করার কারখানার পদ্ধতি।
পরামিতি
সুযোগ | বর্তমান সুযোগ |
---|---|
টেনসর | কপি/আপডেট করতে টেনসর। |
সূচক | সূচক টেনসর। |
আপডেট | আউটপুট মধ্যে ছড়িয়ে ছিটিয়ে আপডেট. |
রিটার্নস
- TensorScatterNdAdd এর একটি নতুন উদাহরণ
সর্বজনীন আউটপুট <T> আউটপুট ()
টেনসর থেকে অনুলিপি করা একটি নতুন টেনসর এবং সূচক অনুযায়ী আপডেট যোগ করা হয়েছে।