I implemented a certain type of neural network (GAN: Generative Adversarial Networks) in tensorflow .
It worked as expected until I decided to add the following level of batch normalization in the generator(z) method (see full code below):
out = tf.contrib.layers.batch_norm(out, is_training=False)
as I get the following error:
G_sample = generator(Z) File "/Users/Florian/Documents/DeepLearning/tensorflow_stuff/tensorflow_stuff/DCGAN.py", line 84, in generator out = tf.contrib.layers.batch_norm(out, is_training=False) File "/Users/Florian/anaconda2/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args return func(*args, **current_args) File "/Users/Florian/anaconda2/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/layers.py", line 551, in batch_norm outputs = layer.apply(inputs, training=is_training) File "/Users/Florian/anaconda2/lib/python2.7/site-packages/tensorflow/python/layers/base.py", line 381, in apply return self.__call__(inputs, **kwargs) File "/Users/Florian/anaconda2/lib/python2.7/site-packages/tensorflow/python/layers/base.py", line 328, in __call__ self.build(input_shapes[0]) File "/Users/Florian/anaconda2/lib/python2.7/site-packages/tensorflow/python/layers/normalization.py", line 143, in build input_shape) ValueError: ('Input has undefined `axis` dimension. Input shape: ', TensorShape([Dimension(None), Dimension(None), Dimension(None), Dimension(None)]))
The problem seems to be related to the form [None, None, None, None] input out , but I don't know how I can fix it.
Here is the complete code:
from __future__ import division from __future__ import division from __future__ import print_function import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data from tensorflow.contrib.layers import batch_norm import numpy as np import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec import os def leaky_relu(x, alpha): return tf.maximum(alpha * x, x) def discriminator(x): with tf.variable_scope('discriminator', reuse=True):