コード例 #1
0
 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
コード例 #2
0
    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')