Source code for tensorlayer.layers.noise

#! /usr/bin/python
# -*- coding: utf-8 -*-

import tensorflow as tf

from tensorlayer.layers.core import Layer

from tensorlayer import logging

from tensorlayer.decorators import deprecated_alias

__all__ = [
    'GaussianNoiseLayer',
]


[docs]class GaussianNoiseLayer(Layer): """ The :class:`GaussianNoiseLayer` class is noise layer that adding noise with gaussian distribution to the activation. Parameters ------------ prev_layer : :class:`Layer` Previous layer. mean : float The mean. Default is 0. stddev : float The standard deviation. Default is 1. is_train : boolean Is trainable layer. If False, skip this layer. default is True. seed : int or None The seed for random noise. name : str A unique layer name. Examples ---------- >>> import tensorflow as tf >>> import tensorlayer as tl >>> x = tf.placeholder(tf.float32, shape=(100, 784)) >>> net = tl.layers.InputLayer(x, name='input') >>> net = tl.layers.DenseLayer(net, n_units=100, act=tf.nn.relu, name='dense3') >>> net = tl.layers.GaussianNoiseLayer(net, name='gaussian') (64, 100) """ @deprecated_alias(layer='prev_layer', end_support_version=1.9) # TODO remove this line for the 1.9 release def __init__( self, prev_layer, mean=0.0, stddev=1.0, is_train=True, seed=None, name='gaussian_noise_layer', ): super(GaussianNoiseLayer, self).__init__(prev_layer=prev_layer, name=name) if is_train is False: logging.info(" skip GaussianNoiseLayer") self.outputs = prev_layer.outputs else: logging.info("GaussianNoiseLayer %s: mean: %f stddev: %f" % (self.name, mean, stddev)) with tf.variable_scope(name): # noise = np.random.normal(0.0 , sigma , tf.to_int64(self.inputs).get_shape()) noise = tf.random_normal(shape=self.inputs.get_shape(), mean=mean, stddev=stddev, seed=seed) self.outputs = self.inputs + noise self._add_layers(self.outputs)