টেনার এবং অপারেশন

TensorFlow.js হল জাভাস্ক্রিপ্টে টেনসর ব্যবহার করে গণনা সংজ্ঞায়িত এবং চালানোর একটি কাঠামো। একজন টেন্সর ভেক্টর এবং উচ্চতর মাত্রা ম্যাট্রিক্সের একটি সাধারণীকরণ হয়।

টেনসর

TensorFlow.js ডাটা কেন্দ্রীয় একক tf.Tensor এক বা একাধিক মাত্রার একটি অ্যারের মধ্যে আকৃতির মানগুলির সেট। tf.Tensor গুলি খুব বহুমাত্রিক অ্যারে একই রকম।

একজন tf.Tensor নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • rank : সংজ্ঞায়িত কত মাত্রা টেন্সর রয়েছে
  • shape : কোন তথ্য প্রতিটি আয়তনের আকার সংজ্ঞায়িত
  • dtype : কোন টেন্সর এর ডাটা টাইপ সংজ্ঞায়িত করে।

একজন tf.Tensor সঙ্গে একটি অ্যারে থেকে তৈরি করা যেতে পারে tf.tensor() পদ্ধতি:

// Create a rank-2 tensor (matrix) matrix tensor from a multidimensional array.
const a = tf.tensor([[1, 2], [3, 4]]);
console.log('shape:', a.shape);
a.print();

// Or you can create a tensor from a flat array and specify a shape.
const shape = [2, 2];
const b = tf.tensor([1, 2, 3, 4], shape);
console.log('shape:', b.shape);
b.print();

ডিফল্টরূপে, tf.Tensor করা একটি থাকবে float32 dtype. tf.Tensor গুলি এছাড়াও bool,, int32, complex64, এবং STRING dtypes সঙ্গে তৈরি করা যেতে পারে:

const a = tf.tensor([[1, 2], [3, 4]], [2, 2], 'int32');
console.log('shape:', a.shape);
console.log('dtype', a.dtype);
a.print();

TensorFlow.js এছাড়াও র্যান্ডম tensors তৈরি করার জন্য সুবিধার পদ্ধতি, একটি নির্দিষ্ট মান দিয়ে পূর্ণ tensors থেকে tensors একটি সেট প্রদান করে HTMLImageElement s, এবং আরো অনেক যা আপনি জানতে পারেন এখানে

একটি টেনসরের আকৃতি পরিবর্তন করা হচ্ছে

একটি উপাদানের সংখ্যা tf.Tensor তার আকৃতি মধ্যে আকারের পণ্য। প্রায়ই বার একই আকার সঙ্গে একাধিক আকার হতে পারে যেহেতু, এটা প্রায়ই একটি পুনর্নির্মাণ পাবে দরকারী tf.Tensor একই আকারের সাথে অন্য আকৃতি হবে। এই সঙ্গে অর্জন করা যেতে পারে reshape() পদ্ধতি:

const a = tf.tensor([[1, 2], [3, 4]]);
console.log('a shape:', a.shape);
a.print();

const b = a.reshape([4, 1]);
console.log('b shape:', b.shape);
b.print();

একটি টেনসর থেকে মান পাওয়া

এছাড়াও আপনি একটি থেকে মানগুলি পেতে পারেন tf.Tensor ব্যবহার Tensor.array() বা Tensor.data() পদ্ধতি:

 const a = tf.tensor([[1, 2], [3, 4]]);
 // Returns the multi dimensional array of values.
 a.array().then(array => console.log(array));
 // Returns the flattened data that backs the tensor.
 a.data().then(data => console.log(data));

আমরা এই পদ্ধতিগুলির সিঙ্ক্রোনাস সংস্করণগুলিও সরবরাহ করি যা ব্যবহার করা সহজ, তবে আপনার অ্যাপ্লিকেশনে কর্মক্ষমতা সমস্যা সৃষ্টি করবে৷ উত্পাদন অ্যাপ্লিকেশনগুলিতে আপনার সর্বদা অ্যাসিঙ্ক্রোনাস পদ্ধতি পছন্দ করা উচিত।

const a = tf.tensor([[1, 2], [3, 4]]);
// Returns the multi dimensional array of values.
console.log(a.arraySync());
// Returns the flattened data that backs the tensor.
console.log(a.dataSync());

অপারেশন

যখন টেনসর আপনাকে ডেটা সঞ্চয় করতে দেয়, অপারেশন (অপস) আপনাকে সেই ডেটা ম্যানিপুলেট করার অনুমতি দেয়। TensorFlow.js রৈখিক বীজগণিত এবং মেশিন লার্নিংয়ের জন্য উপযোগী বিভিন্ন ধরনের অপারেশনও প্রদান করে যা টেনসরগুলিতে করা যেতে পারে।

উদাহরণ: কম্পিউটিং এক্স একটি সব উপাদান এর 2 tf.Tensor :

const x = tf.tensor([1, 2, 3, 4]);
const y = x.square();  // equivalent to tf.square(x)
y.print();

উদাহরণ: যোগ দুই উপাদান tf.Tensor গুলি উপাদান-অনুযায়ী:

const a = tf.tensor([1, 2, 3, 4]);
const b = tf.tensor([10, 20, 30, 40]);
const y = a.add(b);  // equivalent to tf.add(a, b)
y.print();

যেহেতু টেনসরগুলি অপরিবর্তনীয়, এই অপ্সগুলি তাদের মান পরিবর্তন করে না। পরিবর্তে, অপস সবসময় নতুন আসতে return tf.Tensor গুলি।

আপনি অপারেশন TensorFlow.js সমর্থন একটি তালিকা খুঁজে পেতে পারেন এখানে

স্মৃতি

WebGL এর ব্যাকএন্ড ব্যবহার করার সময়, tf.Tensor মেমরির স্পষ্টভাবে পরিচালিত হতে হবে (এটি একটি যাক যথেষ্ট নয় tf.Tensor সুযোগ বাইরে যেতে তার স্মৃতি রিলিজ করা হবে)।

একটি tf.Tensor স্মৃতির ধ্বংস করার জন্য, আপনি ব্যবহার করতে পারেন dispose() পদ্ধতি বা tf.dispose() :

const a = tf.tensor([[1, 2], [3, 4]]);
a.dispose(); // Equivalent to tf.dispose(a)

একটি অ্যাপ্লিকেশনে একাধিক অপারেশন একসাথে চেইন করা খুবই সাধারণ। সমস্ত মধ্যবর্তী ভেরিয়েবলের একটি রেফারেন্স রাখা তাদের নিষ্পত্তি করার জন্য কোড পাঠযোগ্যতা হ্রাস করতে পারে। এই সমস্যা সমাধানের জন্য, TensorFlow.js একটি উপলব্ধ tf.tidy() পদ্ধতি যা আপ সাফ করে সব tf.Tensor গুলি এটি নির্বাহ পর ফাংশন দ্বারা ফিরিয়ে দেওয়া না হয়, পথ স্থানীয় ভেরিয়েবল পরিষ্কার যখন একটি ফাংশন মৃত্যুদন্ড কার্যকর করা হয় অনুরূপ:

const a = tf.tensor([[1, 2], [3, 4]]);
const y = tf.tidy(() => {
  const result = a.square().log().neg();
  return result;
});

এই উদাহরণে, ফল square() এবং log() স্বয়ংক্রিয়ভাবে বিন্যস্ত হবে। ফলে neg() যেমন tf.tidy ফেরত মান () হল বিন্যস্ত করা হবে না।

আপনি TensorFlow.js দ্বারা ট্র্যাক করা টেনসরের সংখ্যাও পেতে পারেন:

console.log(tf.memory());

বস্তু দ্বারা মুদ্রিত tf.memory() কত স্মৃতি বর্তমানে বরাদ্দ করা হয় সম্পর্কে তথ্য উপস্থিত থাকবে। আপনি আরও তথ্য পেতে পারেন এখানে