JavaScript для глубокого обучения 2021 TensorFlow js Ббк



Download 30,75 Mb.
Pdf ko'rish
bet449/457
Sana27.03.2022
Hajmi30,75 Mb.
#513488
1   ...   445   446   447   448   449   450   451   452   ...   457
Bog'liq
Цэй Ш., Байлесчи С., и др. - JаvaScript для глубокого обучения (Библиотека программиста) - 2021

тензор
— просто контейнер для данных. У любого тензора есть два 
фундаментальных свойства: тип данных (dtype) и форма. 
dtype
определяет, какие 
виды значений можно хранить в данном тензоре. Конкретный тензор способен хра­
нить ровно один вид значений. На момент написания данной книги (версия 0.13.5) 
в TensorFlow.js поддерживались следующие dtype: float32, int32 и bool.
Б
Краткое руководство 
по тензорам и операциям 
над ними в TensorFlow.js


550
Приложения
Форма (shape) — это массив целых чисел, определяющий количество элементов 
тензора и то, как они организованы. Ее можно считать «формой и размером» кон­
тейнера­тензора (рис. Б.1).
Рис. Б.1.
Примеры тензоров ранга 0, 1, 2, 3 и 4
Длина формы называется 
рангом
(rank) тензора. Например, ранг одномерного 
тензора 
(вектора)
равен 1. У одномерного тензора форма представляет собой мас­
сив, содержащий одно число, соответствующее длине этого одномерного тензора. 
При увеличении ранга на 1 получается двумерный тензор, который можно наглядно 
изобразить в виде сетки чисел на двумерной плоскости (в качестве примера можно 
привести изображение в оттенках серого). Форма двумерного тензора состоит из 
двух чисел, описывающих высоту и ширину этой сетки. При дальнейшем увеличении 
ранга на 1 получается трехмерный тензор. Как показано в примере на рис. Б.1, трех­
мерный тензор можно наглядно изобразить в виде трехмерной сетки чисел. Форма 
трехмерного тензора состоит из трех чисел, соответствующих размерам этой сетки 
по трем измерениям. Думаем, закономерность уже ясна. Тензоры ранга 4 (четырех­
мерные тензоры) непосредственно визуализировать сложнее, поскольку мы живем 
в трехмерном мире. Четырехмерные тензоры применяются во множестве моделей, 
например в глубоких сверточных сетях. TensorFlow.js поддерживает тензоры вплоть 
до ранга 6. На практике тензоры ранга 5 используются лишь в некоторых нишевых 
сценариях (например, при работе с видеоданными), а тензоры ранга 6 — еще реже.
Б.1.1. Скаляры (тензоры ранга 0)
Скаляр — это тензор, форма которого представляет собой пустой массив (
[]
). У него 
нет осей координат, и он содержит только одно значение. Создать новый скаляр мож­
но с помощью функции 
tf.scalar()
. В консоли JavaScript (опять же предполагая, 
что TensorFlow.js загружен и доступен под псевдонимом 
tf
), сделайте следующее:


Приложение Б. Краткое руководство по тензорам и операциям над ними
551
> const myScalar = tf.scalar(2018);
1
1
> myScalar.print();
Tensor
2018
> myScalar.dtype;
"float32"
> myScalar.shape;
[]
> myScalar.rank;
0
Мы создали скалярный тензор, содержащий одно значение 
2021
. Его форма — 
пустой список, как и следовало ожидать. dtype у него по умолчанию — 
"float32"

Чтобы dtype был целым числом, необходимо указать дополнительный аргумент 
'int32'
при вызове функции 
tf.scalar()
:
> const myIntegerScalar = tf.scalar(2021, 'int32');
> myIntegerScalar.dtype;
"int32"
Для извлечения данных обратно из тензора можно воспользоваться асинхрон­
ным методом 
data()
. Этот метод асинхронный, поскольку в общем случае тензор 
может храниться не только в основной памяти, а, например, в GPU, в виде тексту­
ры WebGL. Извлечение значений подобных тензоров требует операций, которые 
могут не выполняться сразу же, а нам не хотелось бы, чтобы они блокировали 
основной поток выполнения JavaScript. Именно поэтому метод 
data()
— асин­
хронный. Существует также синхронная функция, предназначенная для извлечения 
значений тензоров с помощью опроса: 
dataSync()
. Этот метод удобен, но блокирует 
основной поток выполнения JavaScript, так что использовать его следует осмотри­
тельно (например, во время отладки). Лучше использовать везде, где можно, асин­
хронный метод 
data()
:
> arr = await myScalar.data();
Float32Array [2018]
> arr.length
1
> arr[0]
2018
Пример использования 
dataSync()
:
> arr = myScalar.dataSync();
Float32Array [2018]
> arr.length
1
> arr[0]
2018

Обратите внимание, что ради экономии места и большей ясности мы опустили строки, 
выведенные в консоль JavaScript в результате присваиваний, поскольку они для наших 
целей неважны.


552
Приложения
Как видим, для тензоров типа float32 методы 
data()
и 
dataSync()
возвращают 
значения в виде типа 
Float32Array
JavaScript. Наверное, это удивит вас, особенно 
если вы ждали обычное число, но представляется логичным, если учесть, что для 
тензоров других типов может понадобиться вернуть контейнер, содержащий не­
сколько чисел. Для типа int32 и тензоров булева типа 
data()
и 
dataSync()
возвра­
щают 
Int32Array
и 
Uint8Array
соответственно.
Обратите внимание, что, хотя скаляр содержит всегда ровно один элемент, об­
ратное неверно. Тензор ранга больше 0 может также содержать ровно один элемент, 
если произведение чисел в его форме равно 1. Например, двумерный тензор формы 
[1,
1]
содержит один элемент, но обладает двумя осями координат.
Б.1.2. tensor1d (тензоры ранга 1)
Одномерные тензоры иногда называют тензорами ранга 1 или векторами. Одно­
мерный тензор включает ровно одну ось координат, а его форма — массив длиной 1. 
Следующий код создает вектор в консоли:
> const myVector = tf.tensor1d([-1.2, 0, 19, 78]);
> myVector.shape;
[4]
> myVector.rank;
1
> await myVector.data();
Float32Array(4) [-1.2, 0, 19, 78]
Этот одномерный тензор содержит четыре элемента, а потому его можно на­
звать четырехмерным вектором. Не путайте четырехмерный 

Download 30,75 Mb.

Do'stlaringiz bilan baham:
1   ...   445   446   447   448   449   450   451   452   ...   457




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish