%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=) print(mid_outputs) >> OrderedDict([('fc2', tensor([[-1.5125, 0.9334]], grad_fn=)), ('interaction', tensor([[-0.0687, -0.1462]], grad_fn=)), ('nested', tensor([[-0.1697, 0.1432, 0.2959]], grad_fn=))]) # 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=) print(mid_outputs) >> OrderedDict([('fc2', tensor([[-1.5125, 0.9334]], grad_fn=)), ('interaction', tensor([[-0.0687, -0.1462]], grad_fn=)), ('nested', tensor([[-0.1697, 0.1432, 0.2959]], grad_fn=))]) # 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=) print(mid_outputs) >> OrderedDict([('fc2', tensor([[-1.5125, 0.9334]], grad_fn=)), ('interaction', tensor([[-0.0687, -0.1462]], grad_fn=)), ('nested', tensor([[-0.1697, 0.1432, 0.2959]], grad_fn=))]) # 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 - 0.1.post1-1 - Package Spec generated