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



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

нормированному
нормальному распреде­
лению (unit normal distribution): нормальному распределению с математическим 
ожиданием = 0 и среднеквадратичным отклонением = 1. Например:
> const x = tf.randomNormal([2, 3]);
> x.print():
Tensor
[[-0.2772508, 0.63506 , 0.3080665],
[0.7655841 , 2.5264773, 1.142776 ]]
При потребности в отличных от используемых по умолчанию математическом 
ожидании или среднеквадратичном отклонении можно указать их в качестве вто­
рого и третьего входных аргументов соответственно. Например, следующий вызов 
создает тензор, в котором элементы подчиняются нормальному распределению 
с математическим ожиданием = –20 и среднеквадратичным отклонением = 0,6:
> const x = tf.randomNormal([2, 3], -20, 0.6);
> x.print();
Tensor
[[-19.0392246, -21.2259483, -21.2892818],
[-20.6935596, -20.3722878, -20.1997948]]

Для тех читателей, которые хорошо разбираются в статистике: значения элементов неза­
висимы друг от друга.


Приложение Б. Краткое руководство по тензорам и операциям над ними
561
С помощью функции 
tf.randomUniform()
можно создавать случайные тензоры 
с равномерно распределенными значениями элементов. По умолчанию равномерное 
распределение — нормированное, то есть его нижняя граница равна 0, а верхняя 
граница — 1:
> const x = tf.randomUniform([3, 3]);
> x.print();
Tensor
[[0.8303654, 0.3996494, 0.3808384],
[0.0751046, 0.4425731, 0.2357403],
[0.4682371, 0.0980235, 0.7004037]]
Если же требуется, чтобы элементы подчинялись ненормированному равномер­
ному распределению, можно указать нижнюю и верхнюю границы в виде второго 
и третьего аргументов функции 
tf.randomUniform()
соответственно. Например:
> const x = tf.randomUniform([3, 3], -10, 10);
создает тензор, значения в котором случайно равномерно распределены по интер­
валу 
[-10,
10)
:
> x.print();
Tensor
[[-7.4774652, -4.3274679, 5.5345411 ],
[-6.767087 , -3.8834026, -3.2619202],
[-8.0232048, 7.0986223 , -1.3350322]]
Функцию 
tf.randomUniform()
можно использовать для создания тензоров типа 
int32 со случайными значениями. Это удобно при необходимости генерации случай­
ных меток. Например, следующий код создает вектор длиной 10, значения в котором 
случайным образом выбраны из целых чисел от 0 до 100 (интервал 
[0,
100)
):
> const x = tf.randomUniform([10], 0, 100, 'int32');
> x.print();
Tensor
[92, 16, 65, 60, 62, 16, 77, 24, 2, 66]
Обратите внимание, что главное в этом примере — аргумент 
'int32'
. Без него 
тип значений в тензоре будет float32, а не int32.
Б.2. Основные операции над тензорами
От тензоров не было бы никакого проку, если бы над ними нельзя было произво­
дить различные операции. TensorFlow.js поддерживает множество операций над 
тензорами. Список их, вместе со всей документацией, можно найти по адресу 
https://
js.tensorflow.org/api/latest
. Описывать их все утомительно и излишне. Поэтому мы лишь 
приведем примеры чаще всего используемых из них. Наиболее используемые опе­
рации над тензорами делятся на два типа: унарные и бинарные. 
Унарная
операция 
получает на входе один тензор и возвращает также один тензор, а 
бинарная
получает 
на входе два тензора и возвращает новый тензор.


562
Приложения
Б.2.1. Унарные операции
Рассмотрим операцию получения отрицательного тензора для данного, то есть тен­
зора, все значения элементов которого отрицательны по отношению к соответству­
ющим элементам исходного тензора, — и формирования нового тензора такой же 
формы и с таким же dtype. Сделать это можно с помощью функции 
tf.neg()
:
> const x = tf.tensor1d([-1, 3, 7]);
> const y = tf.neg(x);
> y.print();
Tensor
[1, -3, -7]
Функциональные API и цепочечные API
В предыдущем примере мы вызвали функцию 
tf.neg()
с тензором 
x
в качестве аргу­
мента. TensorFlow.js позволяет описывать математически эквивалентную операцию 
более лаконично, с помощью метода 
neg()
самого объекта тензора, вместо функции 
из пространства имен 
tf.*
:
> const y = x.neg();
В таком простом примере мы, кажется, не так уж много сэкономили кода благо­
даря этому новому API. Впрочем, в случаях, когда применяется одна операция за 
другой, второй вариант API демонстрирует значительное превосходство над первым. 
Например, представьте себе гипотетический алгоритм, в котором необходимо найти 
отрицательный к 
x
тензор, затем вычислить обратный (тензор, в котором каждый 
элемент равен 1, деленной на соответствующий элемент исходного) к полученному 
тензору и применить к нему функцию активации ReLU. Для реализации указанного 
алгоритма с помощью первого API понадобится следующий код:
> const y = tf.relu(tf.reciprocal(tf.neg(x)));
Напротив, при использовании второго API код выглядит так:
> const y = x.neg().reciprocal().relu();
Вторая реализация превосходит первую в нескольких аспектах.
z
z
Необходимо набрать меньше символов кода, а потому меньше и вероятность 
ошибиться в нем.
z
z
Не нужно заботиться о правильном числе вложенных пар открывающихся и за­
крывающихся скобок (хотя большинство современных редакторов кода значи­
тельно упрощает это для разработчика).
z
z
Что важнее, порядок указания методов в коде соответствует порядку соответству­
ющих математических операций (обратите внимание, что в первом варианте по­
рядок операций — обратный). Благодаря этому удобочитаемость кода во втором 
варианте выше.
Мы будем называть первый API 

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