Save a tensor to file

Hello! I want to save a tensor to a file but when I do it using file.write(str(tensor)), what it writes is " tensor(-0.0947, device=‘cuda:0’, grad_fn=MeanBackward0". How can I save just the numerical value (-0.0947). thank you!


Use, '') and torch.load('')


If you have a single number in the tensor, you can get it by using tensor.item()
If you have a multidimensional tensor you can get just the data by doing

1 Like

what is the way to save it such that we get something like this when we load:

db = load(file_name)
tensor1 = db["tensor1"]
tensor2 = db["tensor2"]
... etc

I noticed that pickling might not be supported in the future (so dill might not work later).

I am not saving model parameters. Just tensors.

You can save a python map:

m = {'a': tensor_a, 'b': tensor_b}, file_name)
loaded = torch.load(file_name)
loaded['a'] == tensor_a
loaded['b'] == tensor_b

This is actually the same thing (with an OrderedDict) that happens when you store a model’s parameters using, file).


Do you know if it’s better to save the tensors as numpy data or torch tensors data?

Anyone aware of the pros & cons of using vs

I wonder if that will cause bugs when using the ToTensor() transform if the data is already saved as torch tensors.

related: What is the recommended format to save data in pytorch?

fully functionable example:


import torch

from pathlib import Path

path = Path('~/data/tmp/').expanduser()

tensor_a = torch.rand(2,3)
tensor_b = torch.rand(1,3)

db = {'a': tensor_a, 'b': tensor_b}, path/'torch_db')
loaded = torch.load(path/'torch_db')
print( loaded['a'] == tensor_a )
print( loaded['b'] == tensor_b )

Is there an approach to load the tensor file into a Dataloader? Because my tensor file is large and I need to iterate over each row.