summaryrefslogtreecommitdiff
path: root/python-torch-intermediate-layer-getter.spec
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-06-20 03:36:13 +0000
committerCoprDistGit <infra@openeuler.org>2023-06-20 03:36:13 +0000
commit514169d192e2df4585356a7dc606d1697460e3c9 (patch)
tree4e5f4877e3e983e9f374ade79ef41c256cf180ef /python-torch-intermediate-layer-getter.spec
parent4e371bcad2b695f11f4b0a4c04322d5613f66b82 (diff)
automatic import of python-torch-intermediate-layer-getteropeneuler20.03
Diffstat (limited to 'python-torch-intermediate-layer-getter.spec')
-rw-r--r--python-torch-intermediate-layer-getter.spec246
1 files changed, 246 insertions, 0 deletions
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