Backpropogation for many minibatches

Hello, i try to implement fastRCNN during getting outputs(forward method) several minipackages are formed from one package (picture) and for each you need to find gradients and update weights, there are tensors at the output where each row is a output of the one mini-batch

def forward:

    cnn_out = self.cnn_block(Ximg)
    ###########################
    ###########################  ROI POOL
    scaled_rois = []
    shape_x, shape_y = cnn_out.size(3), cnn_out.size(2)
    for roi_pack in Xroi:
        roi_pack[:, 0], roi_pack[:, 1], roi_pack[:, 2], roi_pack[:, 3] = torch.floor(roi_pack[:, 0]*shape_x),  \
                                                                         torch.floor(roi_pack[:, 1]*shape_y),  \
                                                                         torch.ceil(roi_pack[:, 2]*shape_x)-1, \
                                                                         torch.ceil(roi_pack[:, 3]*shape_y)-1
        scaled_rois.append(roi_pack)

    roi_out = roi_pool(cnn_out, scaled_rois, output_size=self.rois_output_size)
    ###########################
    ###########################
    fc_inp = roi_out.view(1, Xroi[0].size(0), cnn_out.size(1)*self.rois_output_size[0]*self.rois_output_size[1])
    fc_out = self.fc_block(fc_inp)
    ###########################
    classif_out = self.classifier_output(fc_out)
    ###########################
    regress_out = self.regressor_output(fc_out)
    return classif_out, regress_out

update weights (???):

        loss_clf = -torch.log(out_clf+clip_coef)
        loss_reg = labels[0].flatten()*torch.sum(torch.abs(labels[1] - out_reg), 2)
        losses = (loss_clf.flatten() + loss_reg).flatten()

        # backprop
        for loss in losses:
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()

I founded 1 loss for each row in classif_out and regress_out, how update weights for each loss?
Thanks for you attention!

Hi,

I’m not sure if that’s what you are asking but you can do a single weight update for bunch of different batches by simply delaying zeroing the gradients.

Not, is not working, question is opened.