Easily manipulate torch.Tensors inside highly nested data-structures.
Project description
torch-nested
Easily manipulate torch.Tensors
inside highly nested data-structures.
You may want to consider using torch.nested,
but if you are working with nested dicts
, lists
, tuples
, etc. of torch.Tensors
,
here is the package for you.
A proper documentation is coming. Until then, a basic example is shown below, and you can look at the docstrings or tests of this package for more information.
Basic usage
Given a nested structure that contains torch.Tensor
, this package makes it easy to access these Tensors
and
work with them:
import torch
from torch_nested import NestedTensors
INPUT_DATA = [
(
torch.ones(3),
torch.zeros(2)
),
torch.ones((2, 2, 2)),
{
"foo": torch.ones(2),
"bar": [],
"har": "rar"
},
1
]
tensors = NestedTensors(INPUT_DATA)
# Original data preserved in .data-member
assert tensors.data == INPUT_DATA
# Simple accessing and setting
for i, tensor in enumerate(tensors):
tensors[i] = tensor + i
# Has basic dunders
assert len(tensors) == 4
assert torch.all(next(tensors) == torch.ones(3))
Calling print(tensors.shape())
would yield:
torch_nested.Size(
[
(
torch.Size([3]),
torch.Size([2])
),
torch.Size([2, 2, 2]),
{
foo: torch.Size([2]),
bar: None,
har: None
},
None
]
)
Supported data-structures
The following data-structures are supported so far:
torch.Tensor
dict
list
tuple
None
- Any class with a
.tensors
-attribute - Any class with a
.data
-attribute, even if it isn't atorch.Tensor
For example
class ObjWithTensors:
tensors = [torch.ones(2), torch.zeros(2)]
class ObjWithData:
data = [torch.ones(2), torch.zeros(2)]
tensors = NestedTensors([ObjWithTensors(), ObjWithData()])
Running print(tensors.size())
would result in the following output:
NestedSize(
[
ObjWithTensors(
tensors: [
torch.Size([2]),
torch.Size([2])
]
),
ObjWithData(
data: [
torch.Size([2]),
torch.Size([2])
]
)
]
)
More data-structures will be supported in the future. Any data that is of an unsupported type
will not have its Tensors
readable or writable, and NestedShape
will show None
there.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file torch_nested-0.0.5.tar.gz
.
File metadata
- Download URL: torch_nested-0.0.5.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d2c57a03029ed220401258f0c1dbce2a726fb45f6fc8630c7a45645f9bab692 |
|
MD5 | bf4d1d92e784f2461ef2b3f2c52b3cb9 |
|
BLAKE2b-256 | c3f6c13b8ff10003ad1d31be8df1ebb34379439c451b55e60be401d47177045c |
File details
Details for the file torch_nested-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: torch_nested-0.0.5-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9bd50da3ad67d933388c33f0c6be16e6efc69458c453a5f0e48184c64f656db |
|
MD5 | d7bc68d2a0bee50f61c813ff37cd69ec |
|
BLAKE2b-256 | 0df42271ed66da64eb15d98f58d77dd6bf92b3615b79beedff24c9329fb17a66 |