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


Рис. Б.3. Трехмерный тензор данных  для временных рядов Рис. Б.4



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

Рис. Б.3.
Трехмерный тензор данных 
для временных рядов
Рис. Б.4.
Четырехмерный тензор 
данных для изображений


558
Приложения
В некоторых фреймворках измерение цветовых каналов предшествует высо­
те и ширине по соглашению NCHW. Мы не станем использовать это соглашение 
в нашей книге, но не удивляйтесь, если встретите где­то тензор с формой наподобие 
[128,
3,
256,
256]
.
Видеоданные
Неформатированные видеоданные — одна из немногих разновидностей встреча­
ющихся на практике данных, для которых вам понадобятся тензоры ранга 5. Ви­
деоданные можно рассматривать как последовательность кадров, каждый из кото­
рых представляет собой цветное изображение. А поскольку подобный кадр можно 
хранить в тензоре ранга 3 
[высота,
ширина,
цветовойКанал]
, то последовательность 
кадров можно хранить в четырехмерном тензоре формы 
[кадры,
высота,
ширина,
цветовойКанал]
, а значит, батч различных изображений можно хранить в пятимерном 
тензоре формы 
[примерыДанных,
кадры,
высота,
ширина,
цветовойКанал]
.
Например, 60­секундный видеоролик из YouTube в разрешении 144 
×
256, с дис­
кретизацией четыре кадра в секунду содержит 240 кадров. Батч из четырех таких 
видеороликов можно хранить в тензоре формы 
[4,
240,
144,
256,
3]
. Суммарно 
106 168 320 значений! При dtype этого тензора 
'float32'
каждое значение зани­
мает 32 бита, так что тензор будет содержать 405 Мбайт данных. Изрядный объем! 
Встречающиеся на практике видеофайлы обычно занимают намного меньше места, 
поскольку не хранятся в float32 и обычно достаточно сильно сжаты (например, 
хранятся в формате MPEG).
Б.1.7. Создание тензоров из тензорных буферов
Мы показали, как создавать тензоры из JavaScript­массивов, с помощью таких функ­
ций, как 
tf.tensor2d()
и 
tf.tensor()
. Для этого необходимо определить значения 
всех элементов и указать их заранее в JavaScript­массиве. В некоторых случаях, 
впрочем, создавать подобные JavaScript­массивы с нуля достаточно утомительно. 
Например, пусть нам нужно создать матрицу 5 
×
5, в которой все внедиагональные 
элементы — нули, а диагональные элементы формируют нарастающий ряд данных, 
каждый элемент которого равен индексу строки (столбца) плюс 1:
[[1, 0, 0, 0, 0],
[0, 2, 0, 0, 0],
[0, 0, 3, 0, 0],
[0, 0, 0, 4, 0],
[0, 0, 0, 0, 5]]
Код создания вложенного JavaScript­массива, соответствующего этим требова­
ниям, выглядит примерно следующим образом:
const n = 5;
const matrixArray = [];
for (let i = 0; i < 5; ++i) {


Приложение Б. Краткое руководство по тензорам и операциям над ними
559
const row = [];
for (let j = 0; j < 5; ++j) {
row.push(j === i ? i + 1 : 0);
}
matrixArray.push(row);
}
После этого наконец можно преобразовать вложенный JavaScript­массив 
mat-
rixArray
в двумерный тензор:
> const matrix = tf.tensor2d(matrixArray);
Весьма длинный код, включающий два вложенных цикла 
for
. Можно ли как­то 
его упростить? Да, безусловно: можно воспользоваться методом 
tf.tensorBuffer()
для создания объекта 
TensorBuffer
. Элементы объекта 
TensorBuffer
можно задавать 
по индексам и менять их значения с помощью метода 
set()
, в отличие от тензорных 
объектов в TensorFlow.js, значения элементов которых — 
неизменяемые
(immutable). 
По завершении задания значений всех нужных элементов 
TensorBuffer
можно легко 
преобразовать 
TensorBuffer
в настоящий тензорный объект с помощью его метода 
toTensor()
. Следовательно, новый код, использующий метод 
tf.tensorBuffer()
для 
создания такого же тензора, как и в предыдущем коде, будет иметь вид:
Таким образом, благодаря методу 
tf.tensorBuffer()
число строк снизилось 
с десяти до пяти.
Б.1.8. Создание тензоров, содержащих одних нули 
и одни единицы
Очень часто бывает нужно создать тензор заданной формы, все элементы которого 
равны 0. Для этого предназначена функция 
tf.zeros()
. При ее вызове необходимо 
указать желаемую форму тензора в качестве аргумента:
> const x = tf.zeros([2, 3, 3]);
> x.print();
Tensor
[[[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]]


560
Приложения
Тензор был создан с dtype по умолчанию (float32). Для создания содержащих 
одни нули тензоров с другими dtype необходимо указать dtype в качестве второго 
аргумента функции 
tf.zeros()
.
Кроме того, существует функция 
tf.zerosLike()
, с помощью которой можно 
создать содержащий одни нули тензор с такой же формой и dtype, как и уже суще­
ствующий. Например, вызов:
> const y = tf.zerosLike(x);
эквивалентен:
> const y = tf.zeros(x.shape, x.dtype);
но более лаконичен.
Аналогичные методы существуют для создания тензоров, в которых все элемен­
ты равны 1: 
tf.ones()
и 
tf.onesLike()
.
Б.1.9. Создание тензоров со случайными значениями
Во многих случаях может пригодиться возможность создавать тензоры со случай­
ными значениями, например, для инициализации весовых коэффициентов. Чаще 
всего для этой цели применяются функции 
tf.randomNormal()
и 
tf.randomUniform()

Синтаксис у этих двух функций схожий, различаются только вероятностные распре­
деления значений элементов. Как ясно из названия, 
tf.randomNormal()
возвращает 
тензоры, в которых элементы подчиняются нормальному (гауссовому) распределе­
нию
1
. При вызове этой функции только с одним аргументом — формой, получится 
тензор, элементы которого подчиняются 

Download 30,75 Mb.

Do'stlaringiz bilan baham:
1   ...   449   450   451   452   453   454   455   456   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