Spec-Zone.ru › TensorFlow 2.9

tf.random.experimental.index_shuffle

Возвращает позицию index в перестановке [0, ..., max_index].

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительных сведений.

tf.compat.v1.random.experimental.index_shuffle

tf.random.experimental.index_shuffle(
    index, seed, max_index
)

Для каждого возможного seed и max_index существует одна псевдослучайная перестановка последовательности S=[0, ..., max_index]. Вместо того, чтобы создавать весь массив, мы можем вычислить новое положение любого отдельного элемента в S. Это может быть полезно для очень больших max_index.

Входной index и выходные данные могут быть использованы в качестве индексов для перемешивания вектора. Например:

vector = tf.constant(['e0', 'e1', 'e2', 'e3'])
indices = tf.random.experimental.index_shuffle(tf.range(4), [5, 9], 3)
shuffled_vector = tf.gather(vector, indices)
print(shuffled_vector)
tf.Tensor([b'e2' b'e0' b'e1' b'e3'], shape=(4,), dtype=string)

Более полезно использовать его в потоковом (также онлайн) сценарии, таком как tf.data, где каждый элемент vector обрабатывается индивидуально, и весь vector никогда не загружается в память.

dataset = tf.data.Dataset.range(10)
dataset = dataset.map(
 lambda idx: tf.random.experimental.index_shuffle(idx, [5, 8], 9))
print(list(dataset.as_numpy_iterator()))
[3, 8, 0, 1, 2, 7, 6, 9, 4, 5]

Эта операция является бессостоятельной (как и другие функции tf.random.stateless_*), что означает, что выход полностью определяется seed (при равных других входах). Каждый выбор seed соответствует одной перестановке, поэтому при многократном вызове этой функции для одного и того же перемешивания убедитесь, что используется тот же seed. Например:

seed = [5, 9]
idx0 = tf.random.experimental.index_shuffle(0, seed, 3)
idx1 = tf.random.experimental.index_shuffle(1, seed, 3)
idx2 = tf.random.experimental.index_shuffle(2, seed, 3)
idx3 = tf.random.experimental.index_shuffle(3, seed, 3)
shuffled_vector = tf.gather(vector, [idx0, idx1, idx2, idx3])
print(shuffled_vector)
tf.Tensor([b'e2' b'e0' b'e1' b'e3'], shape=(4,), dtype=string)
Аргументы
index Численный скалярный тензор или вектор со значениями в [0, max_index]. Он может рассматриваться как значение v в последовательности S=[0, ..., max_index] для перестановки или как индекс элемента e в перемешанном векторе.
seed Тензор формы [2] или [n, 2] с типом данных int32/uint32/int64/uint64. Зерно генератора случайных чисел. Если ранг неизвестен во время построения графа, он должен быть 1 во время выполнения.
max_index Неотрицательный тензор с той же формой и типом данных, что и index. Верхняя граница (включительно).
Возвращаемые значения
Если все входные данные были скалярными (форма [2] для seed), то выход будет скалярным с тем же типом данных, что и у index. Выход можно рассматривать как новую позицию v в S или как индекс e в векторе до перемешивания. Если один или несколько входных данных были векторами (форма [n, 2] для seed), то выход будет вектором той же размерности, где каждый элемент перемешивается независимо. Скалярные значения в этом случае транслируются.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/random/experimental/index_shuffle

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API