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
بازدید کنندگان همچنین می توانید با بولی، int32، complex64 و 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 همچنین مجموعه ای از روش راحتی برای ایجاد تانسورها تصادفی، تانسورها پر شده با یک مقدار خاص، تانسورها از فراهم می کند HTMLImageElement
بازدید کنندگان، و بسیاری دیگر که شما می توانید پیدا اینجا .
تغییر شکل یک تانسور
تعدادی از عناصر در یک 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());
عملیات
در حالی که تانسورها به شما اجازه می دهند داده ها را ذخیره کنید، عملیات (ops) به شما امکان می دهد آن داده ها را دستکاری کنید. 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();
از آنجایی که تانسورها تغییر ناپذیر هستند، این عملیات ها مقادیر خود را تغییر نمی دهند. در عوض، عملیات بازگشت همیشه جدید بازگشت 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()
: اطلاعات مربوط به چه مقدار حافظه در حال حاضر اختصاص داده باشد. شما می توانید اطلاعات بیشتری در اینجا .