'None' Type Object has no attribute data

def _backward_step_unrolled(self,input_train_source, class_label_source_train,domain_label_source_train, input_train_target,class_label_target_train,domain_label_target_train,input_valid_source,target_valid_source,input_valid_target,target_valid_target, eta, network_optimizer,feature_extractor_optimizer,head_g_optimizer,init_channels):

unrolled_model = self._compute_unrolled_model(input_train_source,input_train_target, domain_label_source_train,domain_label_target_train, eta, network_optimizer)

unrolled_feature_extractor,unrolled_head_g=self._compute_unrolled_model1(input_train_source,input_train_target,class_label_source_train,class_label_target_train,unrolled_model,eta,feature_extractor_optimizer,head_g_optimizer,init_channels)



unrolled_loss=cal_loss(unrolled_model,unrolled_feature_extractor,unrolled_head_g,input_valid_source,input_valid_target,target_valid_source,target_valid_target)

unrolled_loss.backward()

dalpha = [v.grad for v in unrolled_model.arch_parameters()]

**vector = [v.grad.data for v in unrolled_model.parameters()]**

implicit_grads = self._hessian_vector_product(vector, input_train_source, input_train_target,domain_label_source_train,domain_label_target_train)

for g, ig in zip(dalpha, implicit_grads):

  g.data.sub_(eta, ig.data)

for v, g in zip(self.model.arch_parameters(), dalpha):

  if v.grad is None:

    v.grad = Variable(g.data)

  else:

    v.grad.data.copy_(g.data)

Can anyone please tell me ASAP,why the line within ** ** giving this error.
:cold_sweat:

Some parameters of unrolled_model don’t have a valid gradient and thus the .grad attribute is still set to None.
This might be caused e.g. if this parameter wasn’t used in the forward pass and is thus not in the computation graph.

Btw. don’t use the .data attribute, as it could yield unwanted side effects.

@ptrblck this is how I am doing the forward pass(calculating the loss):

def cal_loss(unrolled_model,unrolled_feature_extractor,unrolled_head_g,input_valid_source,input_valid_target,target_valid_source,target_valid_target):

domain_features_source,domain_logits_s=unrolled_model(input_valid_source)

domain_features_target,domain_logits_t=unrolled_model(input_valid_target)

generalized_features_source = unrolled_feature_extractor(input_valid_source)

generalized_features_target = unrolled_feature_extractor(input_valid_target)

logits1=unrolled_head_g(generalized_features_source-domain_features_source)

logits2=unrolled_head_g(generalized_features_target-domain_features_target)

crit = nn.CrossEntropyLoss()

loss1 = crit(logits1, target_valid_source)

loss2 = crit(logits2, target_valid_target)

loss=loss1+loss2

return loss