Plugins¶
Potc support¶
Potc is a package that can convert any object into executable source code.
For DI-treetensor, potc can support the source code transformation of treevalue objects
through the installation of additional plugins. So we can execute the following installation command
pip install DI-treetensor[potc]
After this installation, you will be able to directly convert tree-nested tensors to objects without any additional operations. Such as
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | from potc import transvars import treetensor.torch as ttorch t_tensor = ttorch.randn({'a': (2, 3), 'b': (3, 4)}) t_i_tensor = ttorch.randint(-5, 10, {'a': (3, 4), 'x': {'b': (2, 3)}}) t_shape = t_i_tensor.shape if __name__ == '__main__': _code = transvars( { 't_tensor': t_tensor, 't_i_tensor': t_i_tensor, 't_shape': t_shape, }, reformat='pep8' ) print(_code) |
The output should be
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import torch
from treetensor import Tensor
from treetensor.torch import Size
__all__ = ['t_i_tensor', 't_shape', 't_tensor']
t_i_tensor = Tensor({
'a':
torch.as_tensor([[-2, 0, 4, 2], [-1, 2, 6, 6], [-5, -1, 6, 5]],
dtype=torch.long),
'x': {
'b': torch.as_tensor([[-5, -1, -4], [5, -2, -5]], dtype=torch.long)
}
})
t_shape = Size({'a': torch.Size([3, 4]), 'x': {'b': torch.Size([2, 3])}})
t_tensor = Tensor({
'b':
torch.as_tensor([[
-0.15807105600833893, 0.9869658946990967, 1.396366000175476,
0.36078885197639465
],
[
0.4816668629646301, 1.1220568418502808,
-0.7234281301498413, -0.2238752543926239
],
[
-0.21661117672920227, -0.6312008500099182,
-1.4726037979125977, -1.2045934200286865
]],
dtype=torch.float32),
'a':
torch.as_tensor(
[[2.203050136566162, 0.3990941047668457, -1.1317102909088135],
[0.34639817476272583, -0.13156738877296448, 0.014780695550143719]],
dtype=torch.float32)
})
|
Also, you can use the following CLI command to get the same output results as above.
potc export -v 'test_simple.t_*'
For further information, you can refer to