Esempio n. 1
0
 def unfreeze_module(self, layer, i, Path, bestPath):
     if (i in Path) and (
             i not in bestPath
     ):  #if the current module is in the path and not in the bestPath
         utils.set_req_grad(layer[i], True)
     else:
         utils.set_req_grad(layer[i], False)
     return
Esempio n. 2
0
    def unfreeze_column(self,t):
        utils.set_req_grad(self.conv1[t],True)
        utils.set_req_grad(self.conv2[t],True)
        utils.set_req_grad(self.conv3[t],True)
        utils.set_req_grad(self.fc1[t],True)
        utils.set_req_grad(self.fc2[t],True)
        utils.set_req_grad(self.last[t],True)
        if t>0:
            utils.set_req_grad(self.V2scale[t-1],True)
            utils.set_req_grad(self.V2x1[t-1],True)
            utils.set_req_grad(self.U2[t-1],True)
            utils.set_req_grad(self.V3scale[t-1],True)
            utils.set_req_grad(self.V3x1[t-1],True)
            utils.set_req_grad(self.U3[t-1],True)
            utils.set_req_grad(self.Vf1scale[t-1],True)
            utils.set_req_grad(self.Vf1[t-1],True)
            utils.set_req_grad(self.Uf1[t-1],True)
            utils.set_req_grad(self.Vf2scale[t-1],True)
            utils.set_req_grad(self.Vf2[t-1],True)
            utils.set_req_grad(self.Uf2[t-1],True)
            utils.set_req_grad(self.Vflscale[t-1],True)
            utils.set_req_grad(self.Vfl[t-1],True)
            utils.set_req_grad(self.Ufl[t-1],True)

        #freeze other columns
        for i in range(self.ntasks):
            if i!=t:
                utils.set_req_grad(self.conv1[i],False)
                utils.set_req_grad(self.conv2[i],False)
                utils.set_req_grad(self.conv3[i],False)
                utils.set_req_grad(self.fc1[i],False)
                utils.set_req_grad(self.fc2[i],False)
                utils.set_req_grad(self.last[i],False)
                if i>0:
                    utils.set_req_grad(self.V2scale[i-1],False)
                    utils.set_req_grad(self.V2x1[i-1],False)
                    utils.set_req_grad(self.U2[i-1],False)
                    utils.set_req_grad(self.V3scale[i-1],False)
                    utils.set_req_grad(self.V3x1[i-1],False)
                    utils.set_req_grad(self.U3[i-1],False)
                    utils.set_req_grad(self.Vf1scale[i-1],False)
                    utils.set_req_grad(self.Vf1[i-1],False)
                    utils.set_req_grad(self.Uf1[i-1],False)
                    utils.set_req_grad(self.Vf2scale[i-1],False)
                    utils.set_req_grad(self.Vf2[i-1],False)
                    utils.set_req_grad(self.Uf2[i-1],False)
                    utils.set_req_grad(self.Vflscale[i-1],False)
                    utils.set_req_grad(self.Vfl[i-1],False)
                    utils.set_req_grad(self.Ufl[i-1],False)
        return
Esempio n. 3
0
 def unfreeze_column(self, t):
     self.layer1[0].unfreeze_column(t)
     self.layer1[1].unfreeze_column(t)
     self.layer2[0].unfreeze_column(t)
     self.layer2[1].unfreeze_column(t)
     self.layer3[0].unfreeze_column(t)
     self.layer3[1].unfreeze_column(t)
     self.layer4[0].unfreeze_column(t)
     self.layer4[1].unfreeze_column(t)
     for i in range(self.num_tasks):
         requires_grad = (i == t)
         utils.set_req_grad(self.conv1[i], requires_grad)
         utils.set_req_grad(self.bn1[i], requires_grad)
         utils.set_req_grad(self.last[i], requires_grad)
         if i > 0:
             utils.set_req_grad(self.Vflscale[i - 1], requires_grad)
             utils.set_req_grad(self.Vfl[i - 1], requires_grad)
             utils.set_req_grad(self.Ufl[i - 1], requires_grad)
Esempio n. 4
0
 def unfreeze_column(self, t):
     for i in range(self.num_tasks):
         requires_grad = (i == t)
         utils.set_req_grad(self.conv1[i], requires_grad)
         utils.set_req_grad(self.conv2[i], requires_grad)
         utils.set_req_grad(self.bn1[i], requires_grad)
         utils.set_req_grad(self.bn2[i], requires_grad)
         if self.downsample is not None:
             utils.set_req_grad(self.convd[i], requires_grad)
             utils.set_req_grad(self.bnd[i], requires_grad)
         if i > 0:
             utils.set_req_grad(self.V1scale[i - 1], requires_grad)
             utils.set_req_grad(self.V1x1[i - 1], requires_grad)
             utils.set_req_grad(self.U1[i - 1], requires_grad)
             utils.set_req_grad(self.V2scale[i - 1], requires_grad)
             utils.set_req_grad(self.V2x1[i - 1], requires_grad)
             utils.set_req_grad(self.U2[i - 1], requires_grad)
             if self.downsample is not None:
                 utils.set_req_grad(self.VDscale[i - 1], requires_grad)
                 utils.set_req_grad(self.VDx1[i - 1], requires_grad)
                 utils.set_req_grad(self.UD[i - 1], requires_grad)
                 utils.set_req_grad(self.UD[i - 1], requires_grad)