How to print out the tensor type without printing out the whole tensor?
Simple: tensor.type()
. Unfortunately the docs aren’t totally clear that this works so easily.
Actually tensor.type() without any arguments returns an error that it’s missing an unspecified positional argument.
Something unusual about the tensor that you’re working with? The following should work fine (note that the Python builtin type
also gives what you want).
>>> import torch
>>> a = torch.ones(1)
>>> a.type()
'torch.FloatTensor'
>>> type(a)
<class 'torch.FloatTensor'>
Thanks. It seems that the issue has to do with if the tensor is a Variable.
import torch
from torch.autograd import Variable
a = torch.ones(1)
a.type()
‘torch.FloatTensor’
type(a)
< class ‘torch.FloatTensor’>
b = Variable(a)
print(b.type())
TypeError: type() missing 1 required positional argument: ‘t’
print(b.data.type())
< class ‘torch.FloatTensor’>
If the object is a torch Variable
, not the plain torch Tensor, using type()
method of the object without any argument will cause this error.
TypeError: type() missing 1 required positional argument: ‘t’
But it is not clear what this error message means.
If you have a torch variable say a then simply do
type(a.data)
to know its type
In current builds, type(new Tensor(5)) now always returns ‘Variable’ instead of the actual tensor type… Is that a bug?
That’s not expected behavior I believe. Here is what I receive:
>>> type(torch.Tensor(5))
<class 'torch.FloatTensor'>
To summarize this thread:
- To print tensor type use:
print(type(tensor))
- To print variable tensor type use:
print(type(tensor.data))
In the latest stable release (0.4.0
) type()
of a tensor
no longer reflects the data type.
You should use tensor.type()
and isinstance()
instead.
Have a look at the Migration Guide for more information.