Here is my full code.
data_dir = "../cocoapi/images"
ann_dir = "../cocoapi/annotations"
#Define transforms for the data
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225])
train_transforms= transforms.Compose([transforms.RandomResizedCrop(224),
                                      transforms.RandomHorizontalFlip(),
                                      transforms.ToTensor(),
                                      normalize])
val_transforms= transforms.Compose([transforms.RandomResizedCrop(224),
                                      transforms.RandomHorizontalFlip(),
                                      transforms.ToTensor(),
                                      normalize])

#Pass transforms in here, then run the next cells to see how the transforms look
train_data = torchvision.datasets.CocoDetection(data_dir + '/train2017', ann_dir + '/instances_train2017.json', transform=train_transforms, target_transform=None, transforms=None)
val_data= torchvision.datasets.CocoDetection(data_dir + '/val2017', ann_dir + '/instances_val2017.json', transform=val_transforms, target_transform=None, transforms=None)

train_loader = torch.utils.data.DataLoader(train_data, batch_size= 64 , shuffle= True)
val_loader = torch.utils.data.DataLoader(val_data, batch_size= 64 , shuffle= True)

print('Num training images: ', len(train_data))
print('Num validation images: ', len(val_data))


loading annotations into memory…
Done (t=12.49s)
creating index…
index created!
loading annotations into memory…
Done (t=0.43s)
creating index…
index created!
Num training images:  118287
Num validation images:  5000
model = models.resnet50(pretrained= True)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(device)

#Freeze our feature parameters
for param in model.parameters():
    param.requires_grad = False
    
classifier= nn.Sequential(
    nn.Linear(2048,512),
    nn.ReLU(),
    nn.Dropout(p=0.2),
    nn.Linear(512,80),
    nn.LogSoftmax(dim=1))
       
model.fc= classifier
criterion= nn.NLLLoss()
optimizer= optim.Adam(model.fc.parameters(), lr=0.003)
model.to(device);

cpu
epochs=25
steps=0
running_loss=0
print_every=5

for epoch in range (epochs):   
    for images,labels in train_loader:
        
        steps+=1
        images,labels = images.to(device), labels.to(device)
        optimizer.zero_grad()
        logps= model(images)
        loss= criterion(logps,labels)
        loss.backward()
        optimizer.step()
        running_loss+=loss.item()
        
        if step % print_every == 0:
            
            model.eval()
            val_loss=0
            accuracy=0
            
            for images,labels in val_loader:

                images,labels = images.to(device), labels.to(device)
                logps= model(images)
                loss= criterion(logps,labels)
                val_loss+=loss.item()
                
                #Calculate our accuracy
                ps=torch.exp(logps)
                top_ps, top_class = ps.topk(1, dim=1)
                equality= top_class == labels.view(*top_class.shape)
                accuracy+=torch.mean(equality.type(torch.FloatTensor))
                
            print(f"Epoch: {epoch+1}/{epochs}.."
                  f"Train Loss: {running_loss/print_every:.3f}.."
                  f"Val Loss: {val_loss/len(val_loader):.3f}.."
                  f"Val Accuracy: {accuracy/len(val_loader):.3f}")
            
            running_loss=0
            model.train()

And the error occur in this line  images,labels = images.to(device), labels.to(device)
labels is a list, and list object has no attribute ‘to’