I am getting the above error after 85% completion.

I am using a different dataset than dogscat which has six classes. I was able to train and save the weights. Other analysis functions are running fine except the accuracy function. Any pointer would be helpful

Hi, @aloksaan

First, I’m curious about why `np.mean`

is applied to `np.exp(log_preds)`

.

This problem is due to that PyTorch operations cannot handle numpy arrays directly, and there is a specific function `torch.from_numpy`

.

I think the problem is that `probs`

is calculated by `np.mean(np.exp(log_preds), 0)`

in the `In [64]`

cell (do we really need `np.mean`

?).

To make the cell work, use ** torch functions** instead of

`numpy`

ones like this:```
log_preds, y = learn.TTA()
probs = torch.mean(torch.exp(log_preds), 0)
accuracy(probs, y)
```

I think the `accuracy`

function will work with `log_preds`

and `y`

because `exp`

does not change the order of values in the array.

Thanks @crcrpar,

I have not modified the original code. I was only running the original notebook with a new dataset. Btw i tried torch.mean and now it throws

TypeError Traceback (most recent call last)

in ()

1 log_preds,y = learn.TTA()

2 #probs = np.mean(np.exp(log_preds),0)

----> 3 probs = torch.mean(torch.exp(log_preds), 0)

4 accuracy(probs,y)

TypeError: torch.exp received an invalid combination of arguments - got (numpy.ndarray), but expected (torch.FloatTensor source)

Sorry to bother you.

Then, there’s a need to convert preds to torch.tensor before pass it to accuracy function, because log_preds is numpy.ndarray whom torch.exp cannot handle.

How about this

```
log_preds, y = learn.TTA()
preds = np.mean(np.exp(log_preds), 0)
preds = torch.from_numpy(preds)
accuracy (preds, y)
```

Thank you. Really appreciate your quick response. We are supposed to use accuracy_np and not accuracy. The underneath metric.py was updated but the notebook never got updated. Here is the code snippet below

def accuracy_np(preds, targs):

preds = np.argmax(preds, 1)

return (preds==targs).mean()

def accuracy(preds, targs):

preds = torch.max(preds, dim=1)[1]

return (preds==targs).float().mean()

Glad to hear that and appreciate your sharing the snippet!