def deconv_block(input_key, output_key, n_feat, name): try: layer_dict[output_key] = \ L.transpose_conv(layer_dict[input_key], out_dim=n_feat, name=name, ) except KeyError: pass
def _create_deconv(self, layer_dict, data_dict={}): def deconv_block(input_key, output_key, n_feat, name): try: layer_dict[output_key] = \ L.transpose_conv(layer_dict[input_key], out_dim=n_feat, name=name, ) except KeyError: pass def unpool_block(input_key, output_key, switch_key, name): try: layer_dict[output_key] = \ L.unpool_2d(layer_dict[input_key], layer_dict[switch_key], stride=[1, 2, 2, 1], scope=name) except KeyError: pass with arg_scope([L.transpose_conv], filter_size=3, nl=tf.nn.relu, trainable=False, data_dict=data_dict, use_bias=False, stride=1, reuse=True): deconv_block('deconv5_4', 'deconv5_3', 512, 'conv5_4') deconv_block('deconv5_3', 'deconv5_2', 512, 'conv5_3') deconv_block('deconv5_2', 'deconv5_1', 512, 'conv5_2') deconv_block('deconv5_1', 'depool4', 512, 'conv5_1') unpool_block('depool4', 'deconv4_4', 'switch_pool4', 'unpool4') deconv_block('deconv4_4', 'deconv4_3', 512, 'conv4_4') deconv_block('deconv4_3', 'deconv4_2', 512, 'conv4_3') deconv_block('deconv4_2', 'deconv4_1', 512, 'conv4_2') deconv_block('deconv4_1', 'depool3', 256, 'conv4_1') unpool_block('depool3', 'deconv3_4', 'switch_pool3', 'unpool3') deconv_block('deconv3_4', 'deconv3_3', 256, 'conv3_4') deconv_block('deconv3_3', 'deconv3_2', 256, 'conv3_3') deconv_block('deconv3_2', 'deconv3_1', 256, 'conv3_2') deconv_block('deconv3_1', 'depool2', 128, 'conv3_1') unpool_block('depool2', 'deconv2_2', 'switch_pool2', 'unpool2') deconv_block('deconv2_2', 'deconv2_1', 128, 'conv2_2') deconv_block('deconv2_1', 'depool1', 64, 'conv2_1') unpool_block('depool1', 'deconv1_2', 'switch_pool1', 'unpool1') deconv_block('deconv1_2', 'deconv1_1', 64, 'conv1_2') layer_dict['deconvim'] = \ L.transpose_conv(layer_dict['deconv1_1'], 3, 3, trainable=False, data_dict=data_dict, reuse=True, use_bias=False, stride=1, name='conv1_1')