@ -193,9 +193,11 @@ class Generator (GNet):
fake = args [ ' fake ' ]
fake = args [ ' fake ' ]
label = args [ ' label ' ]
label = args [ ' label ' ]
y_hat_fake = self . discriminator . network ( inputs = fake , label = label )
y_hat_fake = self . discriminator . network ( inputs = fake , label = label )
all_regs = tf . get_collection ( tf . GraphKeys . REGULARIZATION_LOSSES )
#all_regs = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
all_regs = tf . compat . v1 . get_collection ( tf . compat . v1 . GraphKeys . REGULARIZATION_LOSSES )
loss = - tf . reduce_mean ( y_hat_fake ) + sum ( all_regs )
loss = - tf . reduce_mean ( y_hat_fake ) + sum ( all_regs )
tf . add_to_collection ( ' glosses ' , loss )
#tf.add_to_collection('glosses', loss)
tf . compat . v1 . add_to_collection ( ' glosses ' , loss )
return loss , loss
return loss , loss
def load_meta ( self , column ) :
def load_meta ( self , column ) :
super ( ) . load_meta ( column )
super ( ) . load_meta ( column )
@ -281,10 +283,12 @@ class Discriminator(GNet):
grad = tf . gradients ( y_hat , [ x_hat ] ) [ 0 ]
grad = tf . gradients ( y_hat , [ x_hat ] ) [ 0 ]
slopes = tf . sqrt ( tf . reduce_sum ( tf . square ( grad ) , 1 ) )
slopes = tf . sqrt ( tf . reduce_sum ( tf . square ( grad ) , 1 ) )
gradient_penalty = tf . reduce_mean ( ( slopes - 1. ) * * 2 )
gradient_penalty = tf . reduce_mean ( ( slopes - 1. ) * * 2 )
all_regs = tf . get_collection ( tf . GraphKeys . REGULARIZATION_LOSSES )
#all_regs = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
all_regs = tf . compat . v1 . get_collection ( tf . compat . v1 . GraphKeys . REGULARIZATION_LOSSES )
w_distance = - tf . reduce_mean ( y_hat_real ) + tf . reduce_mean ( y_hat_fake )
w_distance = - tf . reduce_mean ( y_hat_real ) + tf . reduce_mean ( y_hat_fake )
loss = w_distance + 10 * gradient_penalty + sum ( all_regs )
loss = w_distance + 10 * gradient_penalty + sum ( all_regs )
tf . add_to_collection ( ' dlosses ' , loss )
#tf.add_to_collection('dlosses', loss)
tf . compat . v1 . add_to_collection ( ' dlosses ' , loss )
return w_distance , loss
return w_distance , loss
class Train ( GNet ) :
class Train ( GNet ) :
@ -333,10 +337,12 @@ class Train (GNet):
fake = self . generator . network ( inputs = z , label = label )
fake = self . generator . network ( inputs = z , label = label )
if stage == ' D ' :
if stage == ' D ' :
w , loss = self . discriminator . loss ( real = real , fake = fake , label = label )
w , loss = self . discriminator . loss ( real = real , fake = fake , label = label )
losses = tf . get_collection ( ' dlosses ' , scope )
#losses = tf.get_collection('dlosses', scope)
losses = tf . compat . v1 . get_collection ( ' dlosses ' , scope )
else :
else :
w , loss = self . generator . loss ( fake = fake , label = label )
w , loss = self . generator . loss ( fake = fake , label = label )
losses = tf . get_collection ( ' glosses ' , scope )
#losses = tf.get_collection('glosses', scope)
losses = tf . compat . v1 . get_collection ( ' glosses ' , scope )
total_loss = tf . add_n ( losses , name = ' total_loss ' )
total_loss = tf . add_n ( losses , name = ' total_loss ' )
@ -370,8 +376,10 @@ class Train (GNet):
with tf . name_scope ( ' %s _ %d ' % ( ' TOWER ' , i ) ) as scope :
with tf . name_scope ( ' %s _ %d ' % ( ' TOWER ' , i ) ) as scope :
( real , label ) = iterator . get_next ( )
( real , label ) = iterator . get_next ( )
loss , w = self . loss ( scope = scope , stage = stage , real = self . _REAL , label = self . _LABEL )
loss , w = self . loss ( scope = scope , stage = stage , real = self . _REAL , label = self . _LABEL )
tf . get_variable_scope ( ) . reuse_variables ( )
#tf.get_variable_scope().reuse_variables()
vars_ = tf . get_collection ( tf . GraphKeys . TRAINABLE_VARIABLES , scope = stage )
tf . compat . v1 . get_variable_scope ( ) . reuse_variables ( )
#vars_ = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=stage)
vars_ = tf . compat . v1 . get_collection ( tf . compat . v1 . GraphKeys . TRAINABLE_VARIABLES , scope = stage )
grads = opt . compute_gradients ( loss , vars_ )
grads = opt . compute_gradients ( loss , vars_ )
tower_grads . append ( grads )
tower_grads . append ( grads )
per_gpu_w . append ( w )
per_gpu_w . append ( w )
@ -394,9 +402,11 @@ class Train (GNet):
train_g , _ , iterator_g , features_placeholder_g , labels_placeholder_g = self . network ( stage = ' G ' , opt = opt_g )
train_g , _ , iterator_g , features_placeholder_g , labels_placeholder_g = self . network ( stage = ' G ' , opt = opt_g )
# saver = tf.train.Saver()
# saver = tf.train.Saver()
saver = tf . compat . v1 . train . Saver ( )
saver = tf . compat . v1 . train . Saver ( )
init = tf . global_variables_initializer ( )
# init = tf.global_variables_initializer()
init = tf . compat . v1 . global_variables_initializer ( )
logs = [ ]
logs = [ ]
with tf . Session ( config = tf . ConfigProto ( allow_soft_placement = True , log_device_placement = False ) ) as sess :
#with tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=False)) as sess:
with tf . compat . v1 . Session ( config = tf . compat . v1 . ConfigProto ( allow_soft_placement = True , log_device_placement = False ) ) as sess :
sess . run ( init )
sess . run ( init )
sess . run ( iterator_d . initializer ,
sess . run ( iterator_d . initializer ,
feed_dict = { features_placeholder_d : REAL , labels_placeholder_d : LABEL } )
feed_dict = { features_placeholder_d : REAL , labels_placeholder_d : LABEL } )