সতর্কতা: প্রতিস্থাপন স্থিতিশীল হওয়ার পরে এই API টি অবচয় করা হয়েছে এবং টেনসরফ্লোয়ের ভবিষ্যতের সংস্করণে সরানো হবে।

ScatterNd

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

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

নির্দিষ্ট `সূচক`-এ পৃথক মান অনুযায়ী স্পারস `আপডেট` ছড়িয়ে দিয়ে ইনপুট টেনসর আপডেট করুন। এই অপটি আপনার নির্দিষ্ট করা `আকৃতি` সহ একটি `আউটপুট` টেনসর প্রদান করে। এই অপটি হল tf.gather_nd অপারেটরের বিপরীত যা একটি প্রদত্ত টেনসর থেকে মান বা স্লাইস বের করে।

এই ক্রিয়াকলাপটি tf.tensor_scatter_nd_add এর অনুরূপ, tf.tensor_scatter_nd_add জিরো-ইনিশিয়ালাইজ করা ছাড়া। tf.scatter_nd(indices, values, shape) কল করা `tf.tensor_scatter_nd_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>
আউটপুট হিসাবে ()
একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে।
স্ট্যাটিক <U, T প্রসারিত সংখ্যা> ScatterNd <U>
তৈরি করুন ( স্কোপ স্কোপ, অপারেন্ড <T> সূচক, অপারেন্ড <U> আপডেট, অপারেন্ড <T> আকার)
একটি নতুন ScatterNd অপারেশন মোড়ানো একটি ক্লাস তৈরি করার কারখানার পদ্ধতি।
আউটপুট <U>
আউটপুট ()
প্রদত্ত আকার এবং সূচক অনুযায়ী প্রয়োগ করা আপডেট সহ একটি নতুন টেনসর।

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

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

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

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

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

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

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

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

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

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