ValueError: Type must be a sub-type of ndarray type

Viewed 6968

when i try to train my model,

"ValueError: Type must be a sub-type of ndarray type"

arises at line x_norm=(np.power(x,2)).sum(1).view(-1,1) .

Code :

def pairwise_distances(x, y=None):
  
  x_norm = (np.power(x,2)).sum(1).view(-1, 1)

   if y is not None:
   y_t = torch.transpose(y, 0, 1)
   y_norm = (y**2).sum(1).view(1, -1)
  else:
   y_t = torch.transpose(x, 0, 1)
   y_norm = x_norm.view(1, -1)

  dist = x_norm + y_norm - 2.0 * torch.mm(x, y_t)
  # Ensure diagonal is zero if x=y
  # if y is None:
  #     dist = dist - torch.diag(dist.diag)
  return torch.clamp(dist, 0.0, np.inf)
1 Answers

Numpy array view is different from torch tensor view.
In numpy:

ndarray.view([dtype][, type])
    New view of array with the same data.

In pytorch:

view(*shape) → Tensor
    Returns a new tensor with the same data as the self tensor but of a different shape.

Numpy's view changes the data type of the array, not the shape. If you want to change the shape of the array in numpy, use ndarray.reshape instead.

Related