I was getting this error AttributeError: ‘int’ object has no attribute ‘requires_grad’ even hit and trialed i’m not getting over it. I want to know the ground truth , of how does this error occur?
What are the list of undesirable conditions that this type of error happens?
Thank you for your kind help

Well that error is kind of self explanatory, the code you are running is dealing with a python integer, followed by some pytorch operation on it, which needs its .requires_grad
attribute.
Since python integer don’t have this attribute it’s showing you that attribution error.
Could you provide some code? So that we can provide you with actual solutions.
oh . Thanks. I was not able to debug it where the error is.
Please check my code. 
Summary
def train(n_epochs, loaders, model, optimizer, criterion, use_cuda, save_path):
valid_loss_min = np.Inf
for epoch in range(1, n_epochs+1):
train_loss = 0.0
valid_loss = 0.0
model.train()
for batch_idx, (data, target) in enumerate(loaders['train']):
optimizer.zero_grad()
output = model(data.unsqueeze_(0) )
loss = criterion(output ,target)
loss.backward()
optimizer.step()
train_loss = train_loss + (1/(batch_idx+1)) + (loss.data - train_loss)
model.eval()
for batch_idx, (data, target) in enumerate(loaders['valid']):
# move to GPU
if use_cuda:
data, target = data.cuda(), target.cuda()
## update the average validation loss
output = model(data.unsqueeze_(0) )
loss = criterion(output, target)
valid_loss = valid_loss + (1/(batch_idx+1)) + (loss.data - valid_loss)
return model
Which line is showing that error
having error in
loss = criterion(output, target)
which does not runs.
but loss previously made is not an integer
here is my criterion
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model_scratch.parameters())
Oh problem was solved. What i was doing was
After loading data from Imagefolder as
train_data = datasets.ImageFolder('images/train')
and directly passing through the for loop enumerate
for batch, (data, target) in enumerate(train_data):
output = model(data, target)
And find out that target type was int
So in order to enumerate it I had to use DataLoader then use it in for loop .
train_loader = torch.utils.data.DataLoader(train_data, shuffle=True)
Thanks for helping anyway. 