Convert tensor into an array

Hi,
I’m new in Pytorch and I would like to know how to convert an existing tensor into an int array.
I tried to do:

temp_arr = temp_tensor.data< int>();

when “temp_arr” is an (int *), and “temp_tensor” type is int, but i keep getting run time error.
Thank you very much!

I think data is templated member so I would suggest using .data<int>()

auto temp_tensor = torch::randn({ 3, 4 }).to(torch::kInt32);

int* temp_arr = temp_tensor.data<int>();
		
// alternative
//int* temp_arr = (int*)temp_tensor.data_ptr();

for (int y = 0; y < temp_tensor.sizes()[0]; ++y)
{
	for (int x = 0; x < temp_tensor.sizes()[1]; ++x)
	{
	    std::cout << (*temp_arr++) << " ";
	}

	std::cout << std::endl;
}

std::cout << temp_tensor << std::endl;

Thank you for your comment!
That’s true, when I put <> in my post it deleted it so now i added space (< int>).

Anyway, I keep getting an error.

What does the error say ? There’s usually pretty good explaining message. Do you catch those errors ? ->

try
{
	auto temp_tensor = torch::randn({ 3, 4 }).to(torch::kInt32);
	int* temp_arr = temp_tensor.data<int>();
}
catch (std::runtime_error& e)
{
  std::cout << e.what() << std::endl;
}
catch (const c10::Error& e)
{
   std::cout << e.msg() << std::endl;
}

system("PAUSE");
1 Like

The problem was that after some functions the tensor type was converted to long so i got the massage:

expected scalar type Int but found Long

Thanks again!

1 Like