Ejemplo n.º 1
0
    def forward(ctx,
                input,
                rois,
                offset,
                spatial_scale,
                pooled_size,
                output_dim,
                no_trans,
                group_size=1,
                part_size=None,
                sample_per_part=4,
                trans_std=.0):
        ctx.spatial_scale = spatial_scale
        ctx.no_trans = int(no_trans)
        ctx.output_dim = output_dim
        ctx.group_size = group_size
        ctx.pooled_size = pooled_size
        ctx.part_size = pooled_size if part_size is None else part_size
        ctx.sample_per_part = sample_per_part
        ctx.trans_std = trans_std

        output, output_count = \
            DCN.deform_psroi_pooling_forward(input, rois, offset,
                                                  ctx.no_trans, ctx.spatial_scale,
                                                  ctx.output_dim, ctx.group_size,
                                                  ctx.pooled_size, ctx.part_size,
                                                  ctx.sample_per_part, ctx.trans_std)
        ctx.save_for_backward(input, rois, offset, output_count)
        return output
Ejemplo n.º 2
0
 def __init__(self, chi, cho):
     super(DeformConv, self).__init__()
     self.actf = nn.Sequential(nn.BatchNorm2d(cho, momentum=BN_MOMENTUM),
                               nn.ReLU(inplace=True))
     self.conv = DCN(chi,
                     cho,
                     kernel_size=(3, 3),
                     stride=1,
                     padding=1,
                     dilation=1,
                     deformable_groups=1)
Ejemplo n.º 3
0
    def backward(ctx, grad_output):
        input, depth, weight, bias = ctx.saved_tensors
        grad_input, grad_weight, grad_bias = \
            DCN.depthaware_conv_backward(input, depth, weight,
                                     bias,
                                     grad_output,
                                     ctx.kernel_size[0], ctx.kernel_size[1],
                                     ctx.stride[0], ctx.stride[1],
                                     ctx.padding[0], ctx.padding[1],
                                     ctx.dilation[0], ctx.dilation[1],
                                     ctx.group,
                                     ctx.im2col_step)

        return grad_input, None, grad_weight, grad_bias,\
            None, None, None, None, None
 def forward(ctx, input, offset, weight, bias, stride, padding, dilation,
             group, deformable_groups, im2col_step):
     ctx.stride = _pair(stride)
     ctx.padding = _pair(padding)
     ctx.dilation = _pair(dilation)
     ctx.kernel_size = _pair(weight.shape[2:4])
     ctx.group = group
     ctx.deformable_groups = deformable_groups
     ctx.im2col_step = im2col_step
     output = DCN.deform_conv2d_forward(
         input, weight, bias, offset, ctx.kernel_size[0],
         ctx.kernel_size[1], ctx.stride[0], ctx.stride[1], ctx.padding[0],
         ctx.padding[1], ctx.dilation[0], ctx.dilation[1], ctx.group,
         ctx.deformable_groups, ctx.im2col_step)
     ctx.save_for_backward(input, offset, weight, bias)
     return output
 def backward(ctx, grad_output):
     input, depth, depth_offset, offset, mask, weight, bias = ctx.saved_tensors
     grad_input, grad_offset, grad_mask, grad_weight, grad_bias = \
         DCN.sample_conv_backward(input, depth, depth_offset, weight,
                                  bias,
                                  offset, mask,
                                  grad_output,
                                  ctx.kernel_size[0], ctx.kernel_size[1],
                                  ctx.stride[0], ctx.stride[1],
                                  ctx.padding[0], ctx.padding[1],
                                  ctx.dilation[0], ctx.dilation[1],
                                  ctx.groups,
                                  ctx.deformable_groups,
                                  ctx.im2col_step)
     return grad_input, None, None, grad_offset, grad_mask, grad_weight, grad_bias,\
         None, None, None, None, None, None
Ejemplo n.º 6
0
    def backward(ctx, grad_output):
        input, offset, weight, bias = ctx.saved_tensors
        grad_input, grad_offset, grad_weight, grad_bias = \
            DCN.sparse_conv3d_backward(input, weight,
                                       bias,
                                       offset,
                                       grad_output,
                                       ctx.kernel_size[0], ctx.kernel_size[1], ctx.kernel_size[2],
                                       ctx.stride[0], ctx.stride[1], ctx.stride[2],
                                       ctx.padding[0], ctx.padding[1], ctx.padding[2],
                                       ctx.dilation[0], ctx.dilation[1], ctx.dilation[2],
                                       ctx.group,
                                       ctx.deformable_groups,
                                       ctx.num_pts,
                                       ctx.im2col_step)

        return grad_input, grad_offset, grad_weight, grad_bias,\
            None, None, None, None, None, None, None, None
Ejemplo n.º 7
0
 def forward(ctx, input, offset, weight, bias, kernel_size, stride, padding,
             dilation, group, deformable_groups, num_pts, im2col_step):
     ctx.stride = _triple(stride)
     ctx.padding = _triple(padding)
     ctx.dilation = _triple(dilation)
     ctx.kernel_size = _triple(kernel_size)
     ctx.group = group
     ctx.deformable_groups = deformable_groups
     ctx.num_pts = num_pts
     ctx.im2col_step = im2col_step
     output = DCN.sparse_conv3d_forward(
         input, weight, bias, offset, ctx.kernel_size[0],
         ctx.kernel_size[1], ctx.kernel_size[2], ctx.stride[0],
         ctx.stride[1], ctx.stride[2], ctx.padding[0], ctx.padding[1],
         ctx.padding[2], ctx.dilation[0], ctx.dilation[1], ctx.dilation[2],
         ctx.group, ctx.deformable_groups, ctx.num_pts, ctx.im2col_step)
     ctx.save_for_backward(input, offset, weight, bias)
     return output
    def backward(ctx, grad_output):
        input, offset = ctx.saved_tensors
        # print('===grad_output', grad_output.shape, grad_output)
        # print('===input', input.shape, input)
        # print('===offset', offset.shape, offset)
        grad_input, grad_offset = \
            DCN.deform_im2col_backward(input.contiguous(), 
                                     offset.contiguous(),
                                     grad_output.contiguous(),
                                     ctx.kernel_size[0], ctx.kernel_size[1],
                                     ctx.stride[0], ctx.stride[1],
                                     ctx.padding[0], ctx.padding[1],
                                     ctx.dilation[0], ctx.dilation[1],
                                     ctx.group,
                                     ctx.deformable_groups,
                                     ctx.im2col_step)

        return grad_input, grad_offset, \
            None, None, None, None, None, None
Ejemplo n.º 9
0
    def backward(ctx, grad_output):
        input, rois, offset, output_count = ctx.saved_tensors
        grad_input, grad_offset = \
            DCN.deform_psroi_pooling_backward(grad_output,
                                                   input,
                                                   rois,
                                                   offset,
                                                   output_count,
                                                   ctx.no_trans,
                                                   ctx.spatial_scale,
                                                   ctx.output_dim,
                                                   ctx.group_size,
                                                   ctx.pooled_size,
                                                   ctx.part_size,
                                                   ctx.sample_per_part,
                                                   ctx.trans_std)

        return grad_input, None, grad_offset, \
            None, None, None, None, None, None, None, None
 def forward(ctx, input, offset, 
             kernel_size, stride, padding, dilation, group=1, deformable_groups=1, im2col_step=1):
     ctx.stride = _pair(stride)
     ctx.padding = _pair(padding)
     ctx.dilation = _pair(dilation)
     # ctx.kernel_size = _pair(weight.shape[2:4])
     ctx.kernel_size = _pair(kernel_size)
     ctx.group = group
     ctx.deformable_groups = deformable_groups
     ctx.im2col_step = im2col_step
     output = DCN.deform_im2col_forward(input.contiguous(), 
                                      offset.contiguous(),
                                      ctx.kernel_size[0], ctx.kernel_size[1],
                                      ctx.stride[0], ctx.stride[1],
                                      ctx.padding[0], ctx.padding[1],
                                      ctx.dilation[0], ctx.dilation[1],
                                      ctx.group,
                                      ctx.deformable_groups,
                                      ctx.im2col_step)
     ctx.save_for_backward(input, offset)
     return output
Ejemplo n.º 11
0
     "epoch": config.epoches,
     "batch_size": config.batch_size,
     "init_learning_rate": config.init_learning_rate,
     "decay_rate": config.decay_rate,
     "optimizer_type": "adam",
     "batch_norm": 0,
     "batch_norm_decay": 0.995,
     "verbose": False,
     "random_seed": 2016,
     "loss_type": "logloss",
     "eval_metric": roc_auc_score,
     "l2_reg": 0.0,
     "greater_is_better": True,
     "cross_layers_num": config.cross_layers_num
 }
 dcn = DCN.DCN(**dcn_params)
 dataParser = DataParser(base_params, featureDict)
 trainSample_Xi, trainSample_Xv, trainSample_numeric_Xv, trainSample_y_label = dataParser.data_parser(
     df_trainSample, has_label=True)
 valSample_Xi, valSample_Xv, valSample_numeric_Xv, valSample_y_label = dataParser.data_parser(
     df_valSample, has_label=True)
 fileNames = clientHdfs.list(base_params['sparkDirName_trainData'])
 # fileNames = os.listdir(base_params['sparkDirName_trainData'])
 fileNames.remove('_SUCCESS')
 fileNames_num = len(fileNames)
 train_scores = []
 val_scores = []
 train_losses = []
 val_losses = []
 counter = 0
 for epoch in range(base_params['epoches']):
Ejemplo n.º 12
0

train_file = './data/adult.data.txt'
test_file = './data/adult.test.txt'
train_x, train_y, train_di, train_dv, train_numeric_xv, test_di, test_dv, test_y, test_numeric_xv = load_data(
    train_file, test_file)

fold = list(
    StratifiedKFold(n_splits=3, shuffle=True,
                    random_state=2018).split(train_x, train_y))

_get = lambda x, y: [x[i] for i in y]

for i, (train_idx, valid_idx) in enumerate(fold):
    print "the %dth fold start" % (i + 1)
    train_xi, train_xv, train_nx, train_y_ = _get(train_di, train_idx), _get(
        train_dv, train_idx), _get(train_numeric_xv,
                                   train_idx), _get(train_y, train_idx)
    valid_xi, valid_xv, valid_nx, valid_y_ = _get(train_di, valid_idx), _get(
        train_dv, valid_idx), _get(train_numeric_xv,
                                   valid_idx), _get(train_y, valid_idx)

    dcn = DCN(**param)
    dcn.fit(train_xi, train_xv, train_nx, train_y_, valid_xi, valid_xv,
            valid_nx, valid_y_)

print 'Fit all train data......'
dcn = DCN(**param)
dcn.fit(train_di, train_dv, train_numeric_xv, train_y)
dcn.predict(test_di, test_dv, test_numeric_xv, test_y)