def upsample( inputs , scale , dim , upsample_method = "subpixel" , activation_fn = None , regularization_scale = 0.0 ):
"upsample layer"
act = activation_fn
if act == None:
act = tf.identity
#with tf.variable_scope(scope) as scope :
if upsample_method == "subpixel":
if scale == 2 :
outputs = conv2d( inputs , dim * 2**2, 3 , 1 , he_init = (activation_fn == tf.nn.relu ) , activation_fn = activation_fn , regularization_scale = regularization_scale )
outputs = tf.depth_to_space( outputs , 2 )
outputs = act( outputs )
elif scale == 3 :
outputs = conv2d( inputs , dim * 3**2 , 3 , 1 , he_init = (activation_fn == tf.nn.relu ) , activation_fn = activation_fn , regularization_scale = regularization_scale )
outputs = tf.depth_to_space( outputs , 3 )
outputs = act( outputs )
elif scale == 4 :
outputs = conv2d( inputs , dim * 2**2, 3 , 1 , regularization_scale = regularization_scale )
outputs = tf.depth_to_space( outputs , 2 )
outputs = conv2d( outputs , dim * 2**2 , 3 , 1 , he_init = (activation_fn == tf.nn.relu ) , activation_fn = activation_fn , regularization_scale = regularization_scale )
outputs = tf.depth_to_space( outputs , 2 )
outputs = act( outputs )
elif upsample_method == "conv_transpose":
if scale == 2 :
outputs = utils.conv2d_transpose( inputs , dim , 3 , 2 , he_init = (activation_fn == tf.nn.relu ) , activation_fn = activation_fn , regularization_scale = regularization_scale )
outputs = act( outputs )
elif scale == 3:
outputs = utils.conv2d_transpose( inputs , dim , 3 , 3 , he_init = (activation_fn == tf.nn.relu ) , activation_fn = activation_fn , regularization_scale = regularization_scale )
outputs = act( outputs )
elif scale == 4:
outputs = utils.conv2d_transpose( inputs , dim , 3 , 2 , regularization_scale = regularization_scale )
outputs = utils.conv2d_transpose( outputs , dim , 3 , 2 , he_init = (activation_fn == tf.nn.relu ) , activation_fn = activation_fn , regularization_scale = regularization_scale )
outputs = act( outputs )
return outputs
评论列表
文章目录