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
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
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)
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)