Существует некоторая проблема с пониманием функции map
. Функция карты применяет логику внутри нее отдельно к каждому элементу, но набор данных создается только один раз. random.uniform(0, 1)
генерирует случайное значение с плавающей точкой. Поэтому, когда вы используете random.uniform()
внутри функции карты, набор данных создается с фиксированной числовой константой с плавающей точкой. Теперь каждый раз, когда это же числовое значение будет добавляться к каждому элементу внутри функции карты.
Чтобы преодолеть эту проблему, вы должны использовать tf.random.uniform()
, который соединит тензор в наборе данных. Этот тензор будет оцениваться каждый раз, когда функция map
применяется к каждому элементу, генерируя разные случайные значения, хотя набор данных создается только один раз.
Итак, ваш код должен быть:
import tensorflow as tf
import numpy as np
import random
dx = tf.data.Dataset.from_tensor_slices([10.0, 20.0, 30.0])
dx = dx.map(lambda x: x + tf.random.uniform([], 0, 1)).repeat(2)
for next_element in dx:
print(next_element.numpy())