title: module 'tensorflow' has no attribute 'random_uniform'
body: <p>I tried to perform some deep learning application and got a module 'tensorflow' has no attribute 'random_uniform' error. On CPU the code works fine but it is really slow. In order to run the code on GPU i needed to change some definitions.  Here is my code below. Any ideas?</p>
  
  <pre><code>def CapsNet(input_shape, n_class, routings):
  
     x = tf.keras.layers.Input(shape=input_shape)
  
     # Layer 1: Just a conventional Conv2D layer
     conv1 = tf.keras.layers.Convolution2D(filters=256, kernel_size=9, strides=1, padding='valid', activation='relu', name='conv1')(x)
  
     # Layer 2: Conv2D layer with `squash` activation, then reshape to [None, num_capsule, dim_capsule]
     primarycaps = PrimaryCap(conv1, dim_capsule=8, n_channels=32, kernel_size=9, strides=2, padding='valid')
  
     # Layer 3: Capsule layer. Routing algorithm works here.
     digitcaps = CapsuleLayer(num_capsule=n_class, dim_capsule=16, routings=routings,
     name='digitcaps')(primarycaps)
  
     # Layer 4: This is an auxiliary layer to replace each capsule with its length. Just to match the true label's shape.
     # If using tensorflow, this will not be necessary. :)
     out_caps = Length(name='capsnet')(digitcaps)
  
     # Decoder network.
     y = tf.keras.layers.Input(shape=(n_class,))
     masked_by_y = Mask()([digitcaps, y]) # The true label is used to mask the output of capsule layer. For training
     masked = Mask()(digitcaps) # Mask using the capsule with maximal length. For prediction
  
     # Shared Decoder model in training and prediction
     decoder = tf.keras.models.Sequential(name='decoder')
     decoder.add(tf.keras.layers.Dense(512, activation='relu', input_dim=16*n_class))
     decoder.add(tf.keras.layers.Dense(1024, activation='relu'))
     decoder.add(tf.keras.layers.Dense(np.prod(input_shape), activation='sigmoid'))
     decoder.add(tf.keras.layers.Reshape(target_shape=input_shape, name='out_recon'))
  
     # Models for training and evaluation (prediction)
     train_model = tf.keras.models.Model([x, y], [out_caps, decoder(masked_by_y)])
     eval_model = tf.keras.models.Model(x, [out_caps, decoder(masked)])
  
     # manipulate model
     noise = tf.keras.layers.Input(shape=(n_class, 16))
     noised_digitcaps = tf.keras.layers.Add()([digitcaps, noise])
     masked_noised_y = Mask()([noised_digitcaps, y])
     manipulate_model = tf.keras.models.Model([x, y, noise], decoder(masked_noised_y))
     return train_model, eval_model, manipulate_model
  
  
  def margin_loss(y_true, y_pred):
  
     L = y_true * K.square(K.maximum(0., 0.9 - y_pred)) + \
     0.5 * (1 - y_true) * K.square(K.maximum(0., y_pred - 0.1))
  
     return K.mean(K.sum(L, 1))
  
  model, eval_model, manipulate_model = CapsNet(input_shape=train_x_temp.shape[1:], n_class=len(np.unique(np.argmax(train_y, 1))), routings=3)
  </code></pre>