TensorFlow.js предоставляет мощные средства для работы с многомерными
массивами данных — тензорами. Одной из важных возможностей является
генерация случайных тензоров, которые широко применяются в инициализации
весов нейронных сетей, тестировании алгоритмов и симуляции данных.
Основными функциями для этих целей являются
tf.randomNormal и
tf.randomUniform.
tf.randomNormalФункция tf.randomNormal создаёт тензор,
элементы которого распределены по нормальному (гауссовскому) закону.
Сигнатура функции:
tf.randomNormal(shape, mean = 0, stdDev = 1, dtype = 'float32', seed)
shape — массив целых чисел,
определяющий форму тензора. Например, [2, 3] создаёт
матрицу 2x3.mean — математическое ожидание
распределения (по умолчанию 0).stdDev — стандартное отклонение (по
умолчанию 1).dtype — тип данных элементов тензора,
обычно 'float32'.seed — необязательный параметр для
фиксирования генерации случайных чисел, полезный при повторяемости
экспериментов.Пример использования:
const t = tf.randomNormal([2, 3], 0, 1);
t.print();
Особенности:
seed позволяет создавать воспроизводимые
эксперименты: каждый запуск с одинаковым seed и формой тензора даст
идентичный результат.tf.randomUniformФункция tf.randomUniform генерирует
тензор, элементы которого равномерно распределены в заданном
диапазоне.
Сигнатура функции:
tf.randomUniform(shape, minval = 0, maxval = 1, dtype = 'float32', seed)
shape — форма создаваемого
тензора.minval — минимальное значение
диапазона (включительно, по умолчанию 0).maxval — максимальное значение
диапазона (не включительно, по умолчанию 1).dtype — тип данных,
'float32' или 'int32'.seed — фиксирует генерацию случайных
чисел.Пример использования:
const u = tf.randomUniform([3, 3], -1, 1);
u.print();
Особенности:
[minval, maxval).dtype = 'int32' значения округляются до целых чисел
в диапазоне [minval, maxval).| Параметр | tf.randomNormal |
tf.randomUniform |
|---|---|---|
| Тип распределения | Нормальное (гауссовское) | Равномерное |
| Концентрация значений | Вблизи среднего | Равномерно по диапазону |
| Контроль диапазона | Нет точного контроля | Есть точный контроль через minval и
maxval |
| Использование | Инициализация весов, статистические модели | Инициализация весов, случайные выборки, генерация данных |
Пример совместного использования:
const normalTensor = tf.randomNormal([2, 2], 0, 0.5);
const uniformTensor = tf.randomUniform([2, 2], -1, 1);
const combined = normalTensor.add(uniformTensor);
combined.print();
Такое сочетание позволяет моделировать более сложные распределения данных, комбинируя случайность двух типов.
Для исследований, требующих стабильных результатов, крайне важно
использовать параметр seed. Пример:
const t1 = tf.randomNormal([2, 2], 0, 1, 'float32', 42);
const t2 = tf.randomNormal([2, 2], 0, 1, 'float32', 42);
console.log(t1.equal(t2).all().dataSync()[0]); // true
Без задания seed результаты генерации будут разными при
каждом запуске.
Функции tf.randomNormal и tf.randomUniform
предоставляют гибкий инструмент для создания случайных тензоров
различной природы и формы. Их комбинации, настройка параметров
распределения и контроль повторяемости делают их незаменимыми в
разработке и тестировании нейронных сетей и алгоритмов машинного
обучения.