@ -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 } )