I'm trying to add Gaussian noise to a layer of my network in the following way.
def Gaussian_noise_layer(input_layer, std):
noise = tf.random_normal(shape = input_layer.get_shape(), mean = 0.0, stddev = std, dtype = tf.float32)
return input_layer + noise
I'm getting the error:
ValueError: Cannot convert a partially known TensorShape to a Tensor: (?, 2600, 2000, 1)
My minibatches need to be of different sizes sometimes, so the size of the input_layer tensor will not be known until the execution time.
If I understand correctly, someone answering Cannot convert a partially converted tensor in TensorFlow suggested to set shape to tf.shape(input_layer). However then, when I try to apply a convolutional layer to that noisy layer I get another error:
ValueError: dims of shape must be known but is None
What is the correct way of achieving my goal of adding Gaussian noise to the input layer of a shape unknown until the execution time?
To dynamically get the shape of a tensor with unknown dimensions you need to use
tf.shape()
For instance