Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

RuntimeError: Expected target size [20, 2], got [20] #291

Open
@harshalDharpure

Description


class Classifier(pl.LightningModule):
 def __init__(self):
 super().__init__()
 self.MFB = MFB(512,768,True,256,64,0.1)
 self.fin_y_shape = torch.nn.Linear(768,512)
 self.fin_old = torch.nn.Linear(64,2)
 self.fin = torch.nn.Linear(16 * 768, 64)
 self.fin_inten = torch.nn.Linear(64,6)
 self.fin_e1 = torch.nn.Linear(64,2)
 self.fin_e2 = torch.nn.Linear(64,2)
 self.fin_e3 = torch.nn.Linear(64,2)
 self.fin_e4 = torch.nn.Linear(64,2)
 self.fin_e5 = torch.nn.Linear(64,2)
 self.fin_e6 = torch.nn.Linear(64,2)
 self.fin_e7 = torch.nn.Linear(64,2)
 self.fin_e8 = torch.nn.Linear(64,2)
 self.fin_e9 = torch.nn.Linear(64,2)
 self.validation_step_outputs = []
 self.test_step_outputs = []
 def forward(self, x,y,rag):
 x_,y_,rag_ = x,y,rag
 print("x.shape", x.shape)
 z = self.MFB(torch.unsqueeze(y, axis=1), torch.unsqueeze(x, axis=1))
 z_rag = self.MFB(torch.unsqueeze(y, axis=1), torch.unsqueeze(rag, axis=1))
 z_newe = torch.cat((z, z_rag), dim=1)
 z_new = torch.squeeze(z_newe, dim=1)
 c_inten = self.fin_inten(z_new)
 c_e1 = self.fin_e1(z_new)
 c_e2 = self.fin_e2(z_new)
 c_e3 = self.fin_e3(z_new)
 c_e4 = self.fin_e4(z_new)
 c_e5 = self.fin_e5(z_new)
 c_e6 = self.fin_e6(z_new)
 c_e7 = self.fin_e7(z_new)
 c_e8 = self.fin_e8(z_new)
 c_e9 = self.fin_e9(z_new)
 c = self.fin_old(z_new)
 output = torch.log_softmax(c, dim=1)
 c_inten = torch.log_softmax(c_inten, dim=1)
 c_e1 = torch.log_softmax(c_e1, dim=1)
 c_e2 = torch.log_softmax(c_e2, dim=1)
 c_e3 = torch.log_softmax(c_e3, dim=1)
 c_e4 = torch.log_softmax(c_e4, dim=1)
 c_e5 = torch.log_softmax(c_e5, dim=1)
 c_e6 = torch.log_softmax(c_e6, dim=1)
 c_e7 = torch.log_softmax(c_e7, dim=1)
 c_e8 = torch.log_softmax(c_e8, dim=1)
 c_e9 = torch.log_softmax(c_e9, dim=1)
 return output,c_inten,c_e1,c_e2,c_e3,c_e4,c_e5,c_e6,c_e7,c_e8,c_e9
 def cross_entropy_loss(self, logits, labels):
 return F.nll_loss(logits, labels)
 def contrastive_loss(self, z, z_rag, label, margin=1.0):
 euclidean_distance = F.pairwise_distance(z1, z2)
 loss_contrastive = torch.mean((1 - label) * torch.pow(euclidean_distance, 2) + (label) * torch.pow(torch.clamp(margin - euclidean_distance, min=0.0), 2))
 return loss_contrastive
 def training_step(self, train_batch, batch_idx):
 
 lab,txt,rag,img,name,intensity,e1,e2,e3,e4,e5,e6,e7,e8,e9 = train_batch
 lab = train_batch[lab]
 #print(lab)
 txt = train_batch[txt]
 rag = train_batch[rag]
 img = train_batch[img]
 name= train_batch[name]
 intensity = train_batch[intensity]
 e1 = train_batch[e1]
 e2 = train_batch[e2]
 e3 = train_batch[e3]
 e4 = train_batch[e4]
 e5 = train_batch[e5]
 e6 = train_batch[e6]
 e7 = train_batch[e7]
 e8 = train_batch[e8]
 e9 = train_batch[e9]
 logit_offen,logit_inten_target,a,b,c,d,e,f,g,h,i= self.forward(txt,img,rag)
 loss1 = self.cross_entropy_loss(logit_offen, lab)
 loss4 = self.cross_entropy_loss(a, e1)
 loss5 = self.cross_entropy_loss(b, e2)
 loss6 = self.cross_entropy_loss(c, e3)
 loss7 = self.cross_entropy_loss(d, e4)
 loss8 = self.cross_entropy_loss(e, e5)
 loss9 = self.cross_entropy_loss(f, e6)
 loss10 = self.cross_entropy_loss(g, e7)
 loss11 = self.cross_entropy_loss(h, e8)
 loss12 = self.cross_entropy_loss(i, e9)
 loss17 = self.cross_entropy_loss(logit_inten_target, intensity)
 contrastive_labels = (lab == 1).float()
 loss_contrastive = self.contrastive_loss(z, z_rag, contrastive_labels)
 loss = loss1 + loss4 + loss5 + loss6 + loss7 + loss8 +loss9 + loss10 + loss11 + loss12 + loss17 + loss_contrastive
 self.log('train_loss', loss)
 return loss
 def validation_step(self, val_batch, batch_idx):
 #lab,txt,rag,img,name,per,iro,alli,ana,inv,meta,puns,sat,hyp = val_batch
 lab,txt,rag,img,name,intensity,e1,e2,e3,e4,e5,e6,e7,e8,e9= val_batch
 lab = val_batch[lab]
 #print(lab)
 txt = val_batch[txt]
 rag = val_batch[rag]
 img = val_batch[img]
 name = val_batch[name]
 intensity = val_batch[intensity]
 e1 = val_batch[e1]
 e2 = val_batch[e2]
 e3 = val_batch[e3]
 e4 = val_batch[e4]
 e5 = val_batch[e5]
 e6 = val_batch[e6]
 e7 = val_batch[e7]
 e8 = val_batch[e8]
 e9 = val_batch[e9]
 logits,inten,a,b,c,d,e,f,g,h,i = self.forward(txt,img,rag)
 logits=logits.float()
 tmp = np.argmax(logits.detach().cpu().numpy(),axis=1)
 loss = self.cross_entropy_loss(logits, lab)
 lab = lab.detach().cpu().numpy()
 self.log('val_acc', accuracy_score(lab,tmp))
 self.log('val_roc_auc',roc_auc_score(lab,tmp))
 self.log('val_loss', loss)
 tqdm_dict = {'val_acc': accuracy_score(lab,tmp)}
 self.validation_step_outputs.append({'progress_bar': tqdm_dict,'val_f1 offensive': f1_score(lab,tmp,average='macro')})
 return {
 'progress_bar': tqdm_dict,
 'val_f1 offensive': f1_score(lab,tmp,average='macro')
 }
 def on_validation_epoch_end(self):
 outs = []
 outs14=[]
 for out in self.validation_step_outputs:
 outs.append(out['progress_bar']['val_acc'])
 outs14.append(out['val_f1 offensive'])
 self.log('val_acc_all_offn', sum(outs)/len(outs))
 self.log('val_f1 offensive', sum(outs14)/len(outs14))
 print(f'***val_acc_all_offn at epoch end {sum(outs)/len(outs)}****')
 print(f'***val_f1 offensive at epoch end {sum(outs14)/len(outs14)}****')
 self.validation_step_outputs.clear()
 def test_step(self, batch, batch_idx):
 lab,txt,rag,img,name,intensity,e1,e2,e3,e4,e5,e6,e7,e8,e9= batch
 #lab,txt,rag,img,name,per,iro,alli,ana,inv,meta,puns,sat,hyp= batch
 lab = batch[lab]
 #print(lab)
 txt = batch[txt]
 rag = batch[rag]
 img = batch[img]
 name = batch[name]
 intensity = batch[intensity]
 e1 = batch[e1]
 e2 = batch[e2]
 e3 = batch[e3]
 e4 = batch[e4]
 e5 = batch[e5]
 e6 = batch[e6]
 e7 = batch[e7]
 e8 = batch[e8]
 e9 = batch[e9]
 logits,inten,a,b,c,d,e,f,g,h,i= self.forward(txt,img,rag)
 logits = logits.float()
 tmp = np.argmax(logits.detach().cpu().numpy(force=True),axis=-1)
 loss = self.cross_entropy_loss(logits, lab)
 lab = lab.detach().cpu().numpy()
 self.log('test_acc', accuracy_score(lab,tmp))
 self.log('test_roc_auc',roc_auc_score(lab,tmp))
 self.log('test_loss', loss)
 tqdm_dict = {'test_acc': accuracy_score(lab,tmp)}
 self.test_step_outputs.append({'progress_bar': tqdm_dict,'test_acc': accuracy_score(lab,tmp), 'test_f1_score': f1_score(lab,tmp,average='macro')})
 return {
 'progress_bar': tqdm_dict,
 'test_acc': accuracy_score(lab,tmp),
 'test_f1_score': f1_score(lab,tmp,average='macro')
 }
 def on_test_epoch_end(self):
 # OPTIONAL
 outs = []
 outs1,outs2,outs3,outs4,outs5,outs6,outs7,outs8,outs9,outs10,outs11,outs12,outs13,outs14 = \
 [],[],[],[],[],[],[],[],[],[],[],[],[],[]
 for out in self.test_step_outputs:
 outs.append(out['test_acc'])
 outs2.append(out['test_f1_score'])
 self.log('test_acc', sum(outs)/len(outs))
 self.log('test_f1_score', sum(outs2)/len(outs2))
 self.test_step_outputs.clear()
 def configure_optimizers(self):
 # optimizer = torch.optim.Adam(self.parameters(), lr=3e-2)
 optimizer = torch.optim.Adam(self.parameters(), lr=1e-5)
 return optimizer
"""
Main Model:
Initialize
Forward Pass
Training Step
Validation Step
Testing Step
Pp
"""
class HmDataModule(pl.LightningDataModule):
 def setup(self, stage):
 self.hm_train = t_p
 self.hm_val = v_p
 # self.hm_test = test
 self.hm_test = te_p
 def train_dataloader(self):
 return DataLoader(self.hm_train, batch_size=20, drop_last=True)
 def val_dataloader(self):
 return DataLoader(self.hm_val, batch_size=20, drop_last=True)
 def test_dataloader(self):
 return DataLoader(self.hm_test, batch_size=20, drop_last=True)
data_module = HmDataModule()
checkpoint_callback = ModelCheckpoint(
 monitor='val_acc_all_offn',
 dirpath='mrinal/',
 filename='epoch{epoch:02d}-val_f1_all_offn{val_acc_all_offn:.2f}',
 auto_insert_metric_name=False,
 save_top_k=1,
 mode="max",
 )
all_callbacks = []
all_callbacks.append(checkpoint_callback)
# train
from pytorch_lightning import seed_everything
seed_everything(42, workers=True)
hm_model = Classifier()
gpus=1
#if torch.cuda.is_available():gpus=0
trainer = pl.Trainer(deterministic=True,max_epochs=20,precision=16,callbacks=all_callbacks)
trainer.fit(hm_model, data_module)
NFO:lightning_fabric.utilities.seed:Seed set to 42
INFO:pytorch_lightning.utilities.rank_zero:Using bfloat16 Automatic Mixed Precision (AMP)
INFO:pytorch_lightning.utilities.rank_zero:GPU available: False, used: False
INFO:pytorch_lightning.utilities.rank_zero:TPU available: False, using: 0 TPU cores
INFO:pytorch_lightning.utilities.rank_zero:IPU available: False, using: 0 IPUs
INFO:pytorch_lightning.utilities.rank_zero:HPU available: False, using: 0 HPUs
INFO:pytorch_lightning.callbacks.model_summary:
 | Name | Type | Params
----------------------------------------
0 | MFB | MFB | 21.0 M
1 | fin_y_shape | Linear | 393 K 
2 | fin_old | Linear | 130 
3 | fin | Linear | 786 K 
4 | fin_inten | Linear | 390 
5 | fin_e1 | Linear | 130 
6 | fin_e2 | Linear | 130 
7 | fin_e3 | Linear | 130 
8 | fin_e4 | Linear | 130 
9 | fin_e5 | Linear | 130 
10 | fin_e6 | Linear | 130 
11 | fin_e7 | Linear | 130 
12 | fin_e8 | Linear | 130 
13 | fin_e9 | Linear | 130 
----------------------------------------
22.2 M Trainable params
0 Non-trainable params
22.2 M Total params
88.745 Total estimated model params size (MB)
x.shape torch.Size([20, 768])
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
[<ipython-input-43-c76eb94fa135>](https://localhost:8080/#) in <cell line: 266>()
 264 #if torch.cuda.is_available():gpus=0
 265 trainer = pl.Trainer(deterministic=True,max_epochs=20,precision=16,callbacks=all_callbacks)
--> 266 trainer.fit(hm_model, data_module)
13 frames
[/usr/local/lib/python3.10/dist-packages/torch/nn/functional.py](https://localhost:8080/#) in nll_loss(input, target, weight, size_average, ignore_index, reduce, reduction)
 2702 if size_average is not None or reduce is not None:
 2703 reduction = _Reduction.legacy_get_string(size_average, reduce)
-> 2704 return torch._C._nn.nll_loss_nd(input, target, weight, _Reduction.get_enum(reduction), ignore_index)
 2705 
 2706 
RuntimeError: Expected target size [20, 2], got [20]
Sanity Checking DataLoader 0:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /