Python 估计输入函数随机噪声处理
在Tensorflow 1.9中使用自定义估计器。 我的估计器训练输入函数遵循典型模式,但我想确定我在做我认为我在做的事情。我有这个函数,我想应用于每个数据集示例Python 估计输入函数随机噪声处理,python,tensorflow,dataset,Python,Tensorflow,Dataset,在Tensorflow 1.9中使用自定义估计器。 我的估计器训练输入函数遵循典型模式,但我想确定我在做我认为我在做的事情。我有这个函数,我想应用于每个数据集示例 def add_noise(data, label): tile = data['tile'] sigma_noise = tf.pow(10.0, -SNR/20.0) noise = tf.random_normal(shape=tf.shape(tile), mean=0.0, stddev=sigma_
def add_noise(data, label):
tile = data['tile']
sigma_noise = tf.pow(10.0, -SNR/20.0)
noise = tf.random_normal(shape=tf.shape(tile), mean=0.0, stddev=sigma_noise, dtype=tf.float32)
tile += noise
return {'tile' : tile}, label
因此,使用dataset API:
dataset = dataset.shuffle(buffer_size=70001)
dataset = dataset.map(parse_function)
dataset = dataset.map(add_noise)
dataset = dataset.batch(32)
dataset = dataset.repeat()
iterator = dataset.make_one_shot_iterator()
我的函数add_noise是否在每个历元都应用于整个数据集,以便在训练过程中每个输出示例都会无限期地应用一个新的随机噪声
谢谢大家:)来自
map
方法的TensorFlowtf.data.Dataset
:
映射此数据集元素的map_func
此转换将map_func
应用于此数据集的每个元素,
并在
与它们在输入中出现的顺序相同
因此,
dataset.map(add\u noise)
中的数据集只应用了一次随机噪声,因此,dataset.make\u one\u shot\u iterator()
返回的迭代器只应用了一次随机噪声。如果在每个历元之后,您重复代码,对数据进行洗牌并应用随机噪声等,那么每个历元都将应用一个新的随机噪声,这就是您想要的。谢谢您的回答。dataset.repeat()应该允许无限个历元,我想知道它是否重复数据集操作(每个历元都会生成噪声),或者它是否只是循环第一个生成的数据集..好的,我已经阅读了更多的文档和我所看到的,我认为map
方法保留函数,并在每次调用数据时对函数进行新调用,但我不确定。测试函数是否每次都被调用的一种快速方法是在add_noise
函数中打印一个随机数,并使用一些伪数据运行程序。类似于print(np.random.rand(1))
map(
map_func,
num_parallel_calls=None
)