টেনসরফ্লো :: অপস:: BatchToSpaceND

#include <array_ops.h>

T টাইপের ND টেনসরের জন্য BatchToSpace।

সারাংশ

এই অপারেশনটি "ব্যাচ" ডাইমেনশন 0 কে M + 1 আকার block_shape + [batch] এর আকারে পরিবর্তন করে, এই ব্লকগুলিকে স্থানিক মাত্রা [1, ..., M] দ্বারা সংজ্ঞায়িত গ্রিডে ফেরত দেয়, যাতে ফলাফল পাওয়া যায়। ইনপুট হিসাবে একই পদে. এই মধ্যবর্তী ফলাফলের স্থানিক মাত্রাগুলি তারপরে আউটপুট উত্পাদন করার জন্য crops অনুসারে ক্রপ করা হয়। এটি SpaceToBatch এর বিপরীত। একটি সুনির্দিষ্ট বিবরণের জন্য নীচে দেখুন.

যুক্তি:

  • স্কোপ: একটি স্কোপ অবজেক্ট
  • ইনপুট: ND আকৃতির সাথে input_shape = [batch] + spatial_shape + remaining_shape , যেখানে স্থানিক_shape-এর M মাত্রা আছে।
  • ব্লক_শেপ: আকৃতি [M] সহ 1-D, সমস্ত মান হতে হবে >= 1।
  • ফসল: 2-D আকৃতি [M, 2] সহ, সমস্ত মান অবশ্যই >= 0 হতে হবে crops[i] = [crop_start, crop_end] ইনপুট ডাইমেনশন i + 1 থেকে ক্রপ করার পরিমাণ নির্দিষ্ট করে, যা স্থানিক মাত্রা i এর সাথে মিলে যায়। এটা প্রয়োজন যে crop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1]

এই অপারেশনটি নিম্নলিখিত ধাপগুলির সমতুল্য:

  1. আকৃতির reshaped input পুনরায় আকার দিন: [block_shape[0], ..., block_shape[M-1], batch/prod(block_shape), input_shape[1], ..., input_shape[N-1]]
  2. আকৃতির permuted তৈরি করতে reshaped পারমিউট মাত্রা [ব্যাচ / প্রোড(ব্লক_শেপ), ইনপুট_শেপ[1], ব্লক_শেপ[0], ..., ইনপুট_শেপ[M], ব্লক_শেপ[M-1],ইনপুট_শেপ[M+1], ..., input_shape[N-1]]
  3. আকৃতি [ব্যাচ / প্রোড(ব্লক_শেপ), ইনপুট_শেপ[1] * ব্লক_শেপ[0], ..., ইনপুট_শেপ[ permuted reshaped_permuted * ব্লক_শেপ[M-1],ইনপুট_শেপ[M+1], .. ., input_shape[N-1]]
  4. আকৃতির আউটপুট তৈরি করতে crops অনুসারে reshaped_permuted মাত্রার শুরু এবং শেষ [1, ..., M] কাটুন: [ব্যাচ / প্রোড(ব্লক_শেপ), ইনপুট_শেপ[1] * ব্লক_শেপ[0] - ফসল[0, 0] - ফসল[0,1], ..., ইনপুট_শেপ[M] * ব্লক_শেপ[M-1] - ফসল[M-1,0] - ফসল[M-1,1],ইনপুট_শেপ[M+1] , ..., input_shape[N-1]]

কিছু উদাহরণ:

(1) আকৃতির নিম্নলিখিত ইনপুটের জন্য [4, 1, 1, 1] , block_shape = [2, 2] , এবং crops = [[0, 0], [0, 0]] :

[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]

আউটপুট টেনসরের আকৃতি রয়েছে [1, 2, 2, 1] এবং মান:

x = [[[[1], [2]], [[3], [4]]]]

(2) আকৃতির নিম্নলিখিত ইনপুটের জন্য [4, 1, 1, 3] , block_shape = [2, 2] , এবং crops = [[0, 0], [0, 0]] :

[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]

আউটপুট টেনসরের আকৃতি রয়েছে [1, 2, 2, 3] এবং মান:

x = [[[[1, 2, 3], [4, 5, 6]],
      [[7, 8, 9], [10, 11, 12]]]]

(3) আকৃতির নিম্নলিখিত ইনপুটের জন্য [4, 2, 2, 1] , block_shape = [2, 2] , এবং crops = [[0, 0], [0, 0]] :

x = [[[[1], [3]], [[9], [11]]],
     [[[2], [4]], [[10], [12]]],
     [[[5], [7]], [[13], [15]]],
     [[[6], [8]], [[14], [16]]]]

আউটপুট টেনসরের আকৃতি [1, 4, 4, 1] এবং মান রয়েছে:

x = [[[[1],   [2],  [3],  [4]],
     [[5],   [6],  [7],  [8]],
     [[9],  [10], [11],  [12]],
     [[13], [14], [15],  [16]]]]

(4) আকৃতির নিম্নলিখিত ইনপুটের জন্য [8, 1, 3, 1] , block_shape = [2, 2] , এবং crops = [[0, 0], [2, 0]] :

x = [[[[0], [1], [3]]], [[[0], [9], [11]]],
     [[[0], [2], [4]]], [[[0], [10], [12]]],
     [[[0], [5], [7]]], [[[0], [13], [15]]],
     [[[0], [6], [8]]], [[[0], [14], [16]]]]

আউটপুট টেনসরের আকৃতি [2, 2, 4, 1] এবং মান রয়েছে:

x = [[[[1],   [2],  [3],  [4]],
      [[5],   [6],  [7],  [8]]],
     [[[9],  [10], [11],  [12]],
      [[13], [14], [15],  [16]]]]

রিটার্ন:

  • Output : আউটপুট টেনসর।

কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর

BatchToSpaceND (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input block_shape, :: tensorflow::Input crops)

পাবলিক বৈশিষ্ট্য

operation
output

পাবলিক ফাংশন

node () const
::tensorflow::Node *
operator::tensorflow::Input () const
operator::tensorflow::Output () const

পাবলিক বৈশিষ্ট্য

অপারেশন

Operation operation

আউটপুট

::tensorflow::Output output

পাবলিক ফাংশন

BatchToSpaceND

 BatchToSpaceND(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input block_shape,
  ::tensorflow::Input crops
)

নোড

::tensorflow::Node * node() const 

অপারেটর::টেনসরফ্লো::ইনপুট

 operator::tensorflow::Input() const 

অপারেটর::টেনসরফ্লো::আউটপুট

 operator::tensorflow::Output() const