diff options
author | CoprDistGit <infra@openeuler.org> | 2023-06-20 03:36:13 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-06-20 03:36:13 +0000 |
commit | 514169d192e2df4585356a7dc606d1697460e3c9 (patch) | |
tree | 4e5f4877e3e983e9f374ade79ef41c256cf180ef | |
parent | 4e371bcad2b695f11f4b0a4c04322d5613f66b82 (diff) |
automatic import of python-torch-intermediate-layer-getteropeneuler20.03
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-torch-intermediate-layer-getter.spec | 246 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 248 insertions, 0 deletions
@@ -0,0 +1 @@ +/torch_intermediate_layer_getter-0.1.post1.tar.gz diff --git a/python-torch-intermediate-layer-getter.spec b/python-torch-intermediate-layer-getter.spec new file mode 100644 index 0000000..2b973fc --- /dev/null +++ b/python-torch-intermediate-layer-getter.spec @@ -0,0 +1,246 @@ +%global _empty_manifest_terminate_build 0 +Name: python-torch-intermediate-layer-getter +Version: 0.1.post1 +Release: 1 +Summary: Simple easy to use module to get the intermediate results from chosen submodules +License: GNU General Public License v3 (GPLv3) +URL: https://github.com/sebamenabar/Pytorch-IntermediateLayerGetter +Source0: https://mirrors.aliyun.com/pypi/web/packages/38/98/8a37ff086257cdc9fd3e62f47b76de7d0091e9a43f3c719521411068449a/torch_intermediate_layer_getter-0.1.post1.tar.gz +BuildArch: noarch + + +%description +Simple easy to use module to get the intermediate results from chosen submodules. Supports submodule annidation. Inspired in [this](https://github.com/pytorch/vision/blob/f76e598d47879dbd917bf5936bbd11ff41632787/torchvision/models/_utils.py#L7) but does not assume that submodules are executed sequentially. + +# Installation + +```sh +pip install torch_intermediate_layer_getter +``` + +# Usage +## Example + +```python +import torch +import torch.nn as nn + +from torch_intermediate_layer_getter import IntermediateLayerGetter as MidGetter + +class Model(nn.Module): + def __init__(self): + super().__init__() + + self.fc1 = nn.Linear(2, 2) + self.fc2 = nn.Linear(2, 2) + self.nested = nn.Sequential( + nn.Sequential(nn.Linear(2, 2), nn.Linear(2, 3)), + nn.Linear(3, 1), + ) + self.interaction_idty = nn.Identity() # Simple trick for operations not performed as modules + + def forward(self, x): + x1 = self.fc1(x) + x2 = self.fc2(x) + + interaction = x1 * x2 + self.interaction_idty(interaction) + + x_out = self.nested(interaction) + + return x_out + +model = Model() +return_layers = { + 'fc2': 'fc2', + 'nested.0.1': 'nested', + 'interaction_idty': 'interaction', +} +mid_getter = MidGetter(model, return_layers=return_layers, keep_output=True) +mid_outputs, model_output = mid_getter(torch.randn(1, 2)) + +print(model_output) +>> tensor([[0.3219]], grad_fn=<AddmmBackward>) +print(mid_outputs) +>> OrderedDict([('fc2', tensor([[-1.5125, 0.9334]], grad_fn=<AddmmBackward>)), + ('interaction', tensor([[-0.0687, -0.1462]], grad_fn=<MulBackward0>)), + ('nested', tensor([[-0.1697, 0.1432, 0.2959]], grad_fn=<AddmmBackward>))]) + +# model_output is None if keep_ouput is False +# if keep_output is True the model_output contains the final model's output +``` + +%package -n python3-torch-intermediate-layer-getter +Summary: Simple easy to use module to get the intermediate results from chosen submodules +Provides: python-torch-intermediate-layer-getter +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-torch-intermediate-layer-getter +Simple easy to use module to get the intermediate results from chosen submodules. Supports submodule annidation. Inspired in [this](https://github.com/pytorch/vision/blob/f76e598d47879dbd917bf5936bbd11ff41632787/torchvision/models/_utils.py#L7) but does not assume that submodules are executed sequentially. + +# Installation + +```sh +pip install torch_intermediate_layer_getter +``` + +# Usage +## Example + +```python +import torch +import torch.nn as nn + +from torch_intermediate_layer_getter import IntermediateLayerGetter as MidGetter + +class Model(nn.Module): + def __init__(self): + super().__init__() + + self.fc1 = nn.Linear(2, 2) + self.fc2 = nn.Linear(2, 2) + self.nested = nn.Sequential( + nn.Sequential(nn.Linear(2, 2), nn.Linear(2, 3)), + nn.Linear(3, 1), + ) + self.interaction_idty = nn.Identity() # Simple trick for operations not performed as modules + + def forward(self, x): + x1 = self.fc1(x) + x2 = self.fc2(x) + + interaction = x1 * x2 + self.interaction_idty(interaction) + + x_out = self.nested(interaction) + + return x_out + +model = Model() +return_layers = { + 'fc2': 'fc2', + 'nested.0.1': 'nested', + 'interaction_idty': 'interaction', +} +mid_getter = MidGetter(model, return_layers=return_layers, keep_output=True) +mid_outputs, model_output = mid_getter(torch.randn(1, 2)) + +print(model_output) +>> tensor([[0.3219]], grad_fn=<AddmmBackward>) +print(mid_outputs) +>> OrderedDict([('fc2', tensor([[-1.5125, 0.9334]], grad_fn=<AddmmBackward>)), + ('interaction', tensor([[-0.0687, -0.1462]], grad_fn=<MulBackward0>)), + ('nested', tensor([[-0.1697, 0.1432, 0.2959]], grad_fn=<AddmmBackward>))]) + +# model_output is None if keep_ouput is False +# if keep_output is True the model_output contains the final model's output +``` + +%package help +Summary: Development documents and examples for torch-intermediate-layer-getter +Provides: python3-torch-intermediate-layer-getter-doc +%description help +Simple easy to use module to get the intermediate results from chosen submodules. Supports submodule annidation. Inspired in [this](https://github.com/pytorch/vision/blob/f76e598d47879dbd917bf5936bbd11ff41632787/torchvision/models/_utils.py#L7) but does not assume that submodules are executed sequentially. + +# Installation + +```sh +pip install torch_intermediate_layer_getter +``` + +# Usage +## Example + +```python +import torch +import torch.nn as nn + +from torch_intermediate_layer_getter import IntermediateLayerGetter as MidGetter + +class Model(nn.Module): + def __init__(self): + super().__init__() + + self.fc1 = nn.Linear(2, 2) + self.fc2 = nn.Linear(2, 2) + self.nested = nn.Sequential( + nn.Sequential(nn.Linear(2, 2), nn.Linear(2, 3)), + nn.Linear(3, 1), + ) + self.interaction_idty = nn.Identity() # Simple trick for operations not performed as modules + + def forward(self, x): + x1 = self.fc1(x) + x2 = self.fc2(x) + + interaction = x1 * x2 + self.interaction_idty(interaction) + + x_out = self.nested(interaction) + + return x_out + +model = Model() +return_layers = { + 'fc2': 'fc2', + 'nested.0.1': 'nested', + 'interaction_idty': 'interaction', +} +mid_getter = MidGetter(model, return_layers=return_layers, keep_output=True) +mid_outputs, model_output = mid_getter(torch.randn(1, 2)) + +print(model_output) +>> tensor([[0.3219]], grad_fn=<AddmmBackward>) +print(mid_outputs) +>> OrderedDict([('fc2', tensor([[-1.5125, 0.9334]], grad_fn=<AddmmBackward>)), + ('interaction', tensor([[-0.0687, -0.1462]], grad_fn=<MulBackward0>)), + ('nested', tensor([[-0.1697, 0.1432, 0.2959]], grad_fn=<AddmmBackward>))]) + +# model_output is None if keep_ouput is False +# if keep_output is True the model_output contains the final model's output +``` + +%prep +%autosetup -n torch_intermediate_layer_getter-0.1.post1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-torch-intermediate-layer-getter -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.1.post1-1 +- Package Spec generated @@ -0,0 +1 @@ +6bd3245a597e7e0b4c620b1a2413f641 torch_intermediate_layer_getter-0.1.post1.tar.gz |