summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-05 14:07:59 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-05 14:07:59 +0000
commita9ddea29b942e836a8dd9459732146163801ef1b (patch)
treede536ace43a78e23042bafbb88a05e18c6b66bf9
parent9452bbf7916f51dfe78f9ecec1172d4dbab768af (diff)
automatic import of python-pytorch-adaptopeneuler20.03
-rw-r--r--.gitignore1
-rw-r--r--python-pytorch-adapt.spec723
-rw-r--r--sources1
3 files changed, 725 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..9a52c26 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/pytorch-adapt-0.0.83.tar.gz
diff --git a/python-pytorch-adapt.spec b/python-pytorch-adapt.spec
new file mode 100644
index 0000000..23b8f4d
--- /dev/null
+++ b/python-pytorch-adapt.spec
@@ -0,0 +1,723 @@
+%global _empty_manifest_terminate_build 0
+Name: python-pytorch-adapt
+Version: 0.0.83
+Release: 1
+Summary: Domain adaptation made easy. Fully featured, modular, and customizable.
+License: MIT License
+URL: https://github.com/KevinMusgrave/pytorch-adapt
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/db/e5/96520821bbb5f2f38d3f77458e9b47e155b37a35e1e577b34f6dd5a55a49/pytorch-adapt-0.0.83.tar.gz
+BuildArch: noarch
+
+Requires: python3-numpy
+Requires: python3-torch
+Requires: python3-torchvision
+Requires: python3-torchmetrics
+Requires: python3-pytorch-metric-learning
+Requires: python3-albumentations
+Requires: python3-black
+Requires: python3-isort
+Requires: python3-nbqa
+Requires: python3-flake8
+Requires: python3-mkdocs-material
+Requires: python3-mkdocstrings[python]
+Requires: python3-griffe
+Requires: python3-mkdocs-gen-files
+Requires: python3-mkdocs-section-index
+Requires: python3-mkdocs-literate-nav
+Requires: python3-pytorch-ignite
+Requires: python3-pytorch-lightning
+Requires: python3-record-keeper
+Requires: python3-tensorboard
+Requires: python3-timm
+
+%description
+<h1>
+<a href="https://github.com/KevinMusgrave/pytorch-adapt">
+<img alt="PyTorch Adapt" src="https://github.com/KevinMusgrave/pytorch-adapt/blob/main/docs/imgs/Logo.png">
+</a>
+</h1>
+
+<p align="center">
+ <a href="https://badge.fury.io/py/pytorch-adapt">
+ <img alt="PyPi version" src="https://badge.fury.io/py/pytorch-adapt.svg">
+ </a>
+</p>
+
+## Why use PyTorch Adapt?
+PyTorch Adapt provides tools for **domain adaptation**, a type of machine learning algorithm that repurposes existing models to work in new domains. This library is:
+
+### 1. **Fully featured**
+Build a complete train/val domain adaptation pipeline in a few lines of code.
+### 2. **Modular**
+Use just the parts that suit your needs, whether it's the algorithms, loss functions, or validation methods.
+### 3. **Highly customizable**
+Customize and combine complex algorithms with ease.
+### 4. **Compatible with frameworks**
+Add additional functionality to your code by using one of the framework wrappers. Converting an algorithm into a PyTorch Lightning module is as simple as wrapping it with ```Lightning```.
+
+
+## Documentation
+- [**Documentation**](https://kevinmusgrave.github.io/pytorch-adapt/)
+- [**Installation instructions**](https://github.com/KevinMusgrave/pytorch-adapt#installation)
+- [**List of papers implemented**](https://kevinmusgrave.github.io/pytorch-adapt/algorithms/uda)
+
+## Examples
+See the **[examples folder](https://github.com/KevinMusgrave/pytorch-adapt/blob/main/examples/README.md)** for notebooks you can download or run on Google Colab.
+
+## How to...
+
+### Use in vanilla PyTorch
+```python
+from pytorch_adapt.hooks import DANNHook
+from pytorch_adapt.utils.common_functions import batch_to_device
+
+# Assuming that models, optimizers, and dataloader are already created.
+hook = DANNHook(optimizers)
+for data in tqdm(dataloader):
+ data = batch_to_device(data, device)
+ # Optimization is done inside the hook.
+ # The returned loss is for logging.
+ _, loss = hook({**models, **data})
+```
+
+### Build complex algorithms
+Let's customize ```DANNHook``` with:
+
+- minimum class confusion
+- virtual adversarial training
+
+```python
+from pytorch_adapt.hooks import MCCHook, VATHook
+
+# G and C are the Generator and Classifier models
+G, C = models["G"], models["C"]
+misc = {"combined_model": torch.nn.Sequential(G, C)}
+hook = DANNHook(optimizers, post_g=[MCCHook(), VATHook()])
+for data in tqdm(dataloader):
+ data = batch_to_device(data, device)
+ _, loss = hook({**models, **data, **misc})
+```
+
+### Wrap with your favorite PyTorch framework
+First, set up the adapter and dataloaders:
+
+```python
+from pytorch_adapt.adapters import DANN
+from pytorch_adapt.containers import Models
+from pytorch_adapt.datasets import DataloaderCreator
+
+models_cont = Models(models)
+adapter = DANN(models=models_cont)
+dc = DataloaderCreator(num_workers=2)
+dataloaders = dc(**datasets)
+```
+
+Then use a framework wrapper:
+
+#### PyTorch Lightning
+```python
+import pytorch_lightning as pl
+from pytorch_adapt.frameworks.lightning import Lightning
+
+L_adapter = Lightning(adapter)
+trainer = pl.Trainer(gpus=1, max_epochs=1)
+trainer.fit(L_adapter, dataloaders["train"])
+```
+
+#### PyTorch Ignite
+```python
+trainer = Ignite(adapter)
+trainer.run(datasets, dataloader_creator=dc)
+```
+
+### Check your model's performance
+You can do this in vanilla PyTorch:
+```python
+from pytorch_adapt.validators import SNDValidator
+
+# Assuming predictions have been collected
+target_train = {"preds": preds}
+validator = SNDValidator()
+score = validator(target_train=target_train)
+```
+
+You can also do this during training with a framework wrapper:
+
+#### PyTorch Lightning
+```python
+from pytorch_adapt.frameworks.utils import filter_datasets
+
+validator = SNDValidator()
+dataloaders = dc(**filter_datasets(datasets, validator))
+train_loader = dataloaders.pop("train")
+
+L_adapter = Lightning(adapter, validator=validator)
+trainer = pl.Trainer(gpus=1, max_epochs=1)
+trainer.fit(L_adapter, train_loader, list(dataloaders.values()))
+```
+
+#### Pytorch Ignite
+```python
+from pytorch_adapt.validators import ScoreHistory
+
+validator = ScoreHistory(SNDValidator())
+trainer = Ignite(adapter, validator=validator)
+trainer.run(datasets, dataloader_creator=dc)
+```
+
+### Run the above examples
+See [this notebook](https://github.com/KevinMusgrave/pytorch-adapt/blob/main/examples/other/ReadmeExamples.ipynb) and [the examples page](https://github.com/KevinMusgrave/pytorch-adapt/tree/main/examples/) for other notebooks.
+
+## Installation
+
+### Pip
+```
+pip install pytorch-adapt
+```
+
+**To get the latest dev version**:
+```
+pip install pytorch-adapt --pre
+```
+
+**To use ```pytorch_adapt.frameworks.lightning```**:
+```
+pip install pytorch-adapt[lightning]
+```
+
+**To use ```pytorch_adapt.frameworks.ignite```**:
+```
+pip install pytorch-adapt[ignite]
+```
+
+
+### Conda
+Coming soon...
+
+### Dependencies
+See [setup.py](https://github.com/KevinMusgrave/pytorch-adapt/blob/main/setup.py)
+
+## Acknowledgements
+
+### Contributors
+Thanks to the contributors who made pull requests!
+| Contributor | Highlights |
+| -- | -- |
+| [deepseek-eoghan](https://github.com/deepseek-eoghan) | Improved the TargetDataset class |
+
+### Advisors
+Thank you to [Ser-Nam Lim](https://research.fb.com/people/lim-ser-nam/), and my research advisor, [Professor Serge Belongie](https://vision.cornell.edu/se3/people/serge-belongie/).
+
+### Logo
+Thanks to [Jeff Musgrave](https://www.designgenius.ca/) for designing the logo.
+
+### Citing this library
+If you'd like to cite pytorch-adapt in your paper, you can refer to [this paper](https://arxiv.org/abs/2211.15673) by copy-pasting this bibtex reference:
+```latex
+@article{Musgrave2022PyTorchA,
+ title={PyTorch Adapt},
+ author={Kevin Musgrave and Serge J. Belongie and Ser Nam Lim},
+ journal={ArXiv},
+ year={2022},
+ volume={abs/2211.15673}
+}
+```
+
+### Code references (in no particular order)
+- https://github.com/wgchang/DSBN
+- https://github.com/jihanyang/AFN
+- https://github.com/thuml/Versatile-Domain-Adaptation
+- https://github.com/tim-learn/ATDOC
+- https://github.com/thuml/CDAN
+- https://github.com/takerum/vat_chainer
+- https://github.com/takerum/vat_tf
+- https://github.com/RuiShu/dirt-t
+- https://github.com/lyakaap/VAT-pytorch
+- https://github.com/9310gaurav/virtual-adversarial-training
+- https://github.com/thuml/Deep-Embedded-Validation
+- https://github.com/lr94/abas
+- https://github.com/thuml/Batch-Spectral-Penalization
+- https://github.com/jvanvugt/pytorch-domain-adaptation
+- https://github.com/ptrblck/pytorch_misc
+
+
+
+
+%package -n python3-pytorch-adapt
+Summary: Domain adaptation made easy. Fully featured, modular, and customizable.
+Provides: python-pytorch-adapt
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-pytorch-adapt
+<h1>
+<a href="https://github.com/KevinMusgrave/pytorch-adapt">
+<img alt="PyTorch Adapt" src="https://github.com/KevinMusgrave/pytorch-adapt/blob/main/docs/imgs/Logo.png">
+</a>
+</h1>
+
+<p align="center">
+ <a href="https://badge.fury.io/py/pytorch-adapt">
+ <img alt="PyPi version" src="https://badge.fury.io/py/pytorch-adapt.svg">
+ </a>
+</p>
+
+## Why use PyTorch Adapt?
+PyTorch Adapt provides tools for **domain adaptation**, a type of machine learning algorithm that repurposes existing models to work in new domains. This library is:
+
+### 1. **Fully featured**
+Build a complete train/val domain adaptation pipeline in a few lines of code.
+### 2. **Modular**
+Use just the parts that suit your needs, whether it's the algorithms, loss functions, or validation methods.
+### 3. **Highly customizable**
+Customize and combine complex algorithms with ease.
+### 4. **Compatible with frameworks**
+Add additional functionality to your code by using one of the framework wrappers. Converting an algorithm into a PyTorch Lightning module is as simple as wrapping it with ```Lightning```.
+
+
+## Documentation
+- [**Documentation**](https://kevinmusgrave.github.io/pytorch-adapt/)
+- [**Installation instructions**](https://github.com/KevinMusgrave/pytorch-adapt#installation)
+- [**List of papers implemented**](https://kevinmusgrave.github.io/pytorch-adapt/algorithms/uda)
+
+## Examples
+See the **[examples folder](https://github.com/KevinMusgrave/pytorch-adapt/blob/main/examples/README.md)** for notebooks you can download or run on Google Colab.
+
+## How to...
+
+### Use in vanilla PyTorch
+```python
+from pytorch_adapt.hooks import DANNHook
+from pytorch_adapt.utils.common_functions import batch_to_device
+
+# Assuming that models, optimizers, and dataloader are already created.
+hook = DANNHook(optimizers)
+for data in tqdm(dataloader):
+ data = batch_to_device(data, device)
+ # Optimization is done inside the hook.
+ # The returned loss is for logging.
+ _, loss = hook({**models, **data})
+```
+
+### Build complex algorithms
+Let's customize ```DANNHook``` with:
+
+- minimum class confusion
+- virtual adversarial training
+
+```python
+from pytorch_adapt.hooks import MCCHook, VATHook
+
+# G and C are the Generator and Classifier models
+G, C = models["G"], models["C"]
+misc = {"combined_model": torch.nn.Sequential(G, C)}
+hook = DANNHook(optimizers, post_g=[MCCHook(), VATHook()])
+for data in tqdm(dataloader):
+ data = batch_to_device(data, device)
+ _, loss = hook({**models, **data, **misc})
+```
+
+### Wrap with your favorite PyTorch framework
+First, set up the adapter and dataloaders:
+
+```python
+from pytorch_adapt.adapters import DANN
+from pytorch_adapt.containers import Models
+from pytorch_adapt.datasets import DataloaderCreator
+
+models_cont = Models(models)
+adapter = DANN(models=models_cont)
+dc = DataloaderCreator(num_workers=2)
+dataloaders = dc(**datasets)
+```
+
+Then use a framework wrapper:
+
+#### PyTorch Lightning
+```python
+import pytorch_lightning as pl
+from pytorch_adapt.frameworks.lightning import Lightning
+
+L_adapter = Lightning(adapter)
+trainer = pl.Trainer(gpus=1, max_epochs=1)
+trainer.fit(L_adapter, dataloaders["train"])
+```
+
+#### PyTorch Ignite
+```python
+trainer = Ignite(adapter)
+trainer.run(datasets, dataloader_creator=dc)
+```
+
+### Check your model's performance
+You can do this in vanilla PyTorch:
+```python
+from pytorch_adapt.validators import SNDValidator
+
+# Assuming predictions have been collected
+target_train = {"preds": preds}
+validator = SNDValidator()
+score = validator(target_train=target_train)
+```
+
+You can also do this during training with a framework wrapper:
+
+#### PyTorch Lightning
+```python
+from pytorch_adapt.frameworks.utils import filter_datasets
+
+validator = SNDValidator()
+dataloaders = dc(**filter_datasets(datasets, validator))
+train_loader = dataloaders.pop("train")
+
+L_adapter = Lightning(adapter, validator=validator)
+trainer = pl.Trainer(gpus=1, max_epochs=1)
+trainer.fit(L_adapter, train_loader, list(dataloaders.values()))
+```
+
+#### Pytorch Ignite
+```python
+from pytorch_adapt.validators import ScoreHistory
+
+validator = ScoreHistory(SNDValidator())
+trainer = Ignite(adapter, validator=validator)
+trainer.run(datasets, dataloader_creator=dc)
+```
+
+### Run the above examples
+See [this notebook](https://github.com/KevinMusgrave/pytorch-adapt/blob/main/examples/other/ReadmeExamples.ipynb) and [the examples page](https://github.com/KevinMusgrave/pytorch-adapt/tree/main/examples/) for other notebooks.
+
+## Installation
+
+### Pip
+```
+pip install pytorch-adapt
+```
+
+**To get the latest dev version**:
+```
+pip install pytorch-adapt --pre
+```
+
+**To use ```pytorch_adapt.frameworks.lightning```**:
+```
+pip install pytorch-adapt[lightning]
+```
+
+**To use ```pytorch_adapt.frameworks.ignite```**:
+```
+pip install pytorch-adapt[ignite]
+```
+
+
+### Conda
+Coming soon...
+
+### Dependencies
+See [setup.py](https://github.com/KevinMusgrave/pytorch-adapt/blob/main/setup.py)
+
+## Acknowledgements
+
+### Contributors
+Thanks to the contributors who made pull requests!
+| Contributor | Highlights |
+| -- | -- |
+| [deepseek-eoghan](https://github.com/deepseek-eoghan) | Improved the TargetDataset class |
+
+### Advisors
+Thank you to [Ser-Nam Lim](https://research.fb.com/people/lim-ser-nam/), and my research advisor, [Professor Serge Belongie](https://vision.cornell.edu/se3/people/serge-belongie/).
+
+### Logo
+Thanks to [Jeff Musgrave](https://www.designgenius.ca/) for designing the logo.
+
+### Citing this library
+If you'd like to cite pytorch-adapt in your paper, you can refer to [this paper](https://arxiv.org/abs/2211.15673) by copy-pasting this bibtex reference:
+```latex
+@article{Musgrave2022PyTorchA,
+ title={PyTorch Adapt},
+ author={Kevin Musgrave and Serge J. Belongie and Ser Nam Lim},
+ journal={ArXiv},
+ year={2022},
+ volume={abs/2211.15673}
+}
+```
+
+### Code references (in no particular order)
+- https://github.com/wgchang/DSBN
+- https://github.com/jihanyang/AFN
+- https://github.com/thuml/Versatile-Domain-Adaptation
+- https://github.com/tim-learn/ATDOC
+- https://github.com/thuml/CDAN
+- https://github.com/takerum/vat_chainer
+- https://github.com/takerum/vat_tf
+- https://github.com/RuiShu/dirt-t
+- https://github.com/lyakaap/VAT-pytorch
+- https://github.com/9310gaurav/virtual-adversarial-training
+- https://github.com/thuml/Deep-Embedded-Validation
+- https://github.com/lr94/abas
+- https://github.com/thuml/Batch-Spectral-Penalization
+- https://github.com/jvanvugt/pytorch-domain-adaptation
+- https://github.com/ptrblck/pytorch_misc
+
+
+
+
+%package help
+Summary: Development documents and examples for pytorch-adapt
+Provides: python3-pytorch-adapt-doc
+%description help
+<h1>
+<a href="https://github.com/KevinMusgrave/pytorch-adapt">
+<img alt="PyTorch Adapt" src="https://github.com/KevinMusgrave/pytorch-adapt/blob/main/docs/imgs/Logo.png">
+</a>
+</h1>
+
+<p align="center">
+ <a href="https://badge.fury.io/py/pytorch-adapt">
+ <img alt="PyPi version" src="https://badge.fury.io/py/pytorch-adapt.svg">
+ </a>
+</p>
+
+## Why use PyTorch Adapt?
+PyTorch Adapt provides tools for **domain adaptation**, a type of machine learning algorithm that repurposes existing models to work in new domains. This library is:
+
+### 1. **Fully featured**
+Build a complete train/val domain adaptation pipeline in a few lines of code.
+### 2. **Modular**
+Use just the parts that suit your needs, whether it's the algorithms, loss functions, or validation methods.
+### 3. **Highly customizable**
+Customize and combine complex algorithms with ease.
+### 4. **Compatible with frameworks**
+Add additional functionality to your code by using one of the framework wrappers. Converting an algorithm into a PyTorch Lightning module is as simple as wrapping it with ```Lightning```.
+
+
+## Documentation
+- [**Documentation**](https://kevinmusgrave.github.io/pytorch-adapt/)
+- [**Installation instructions**](https://github.com/KevinMusgrave/pytorch-adapt#installation)
+- [**List of papers implemented**](https://kevinmusgrave.github.io/pytorch-adapt/algorithms/uda)
+
+## Examples
+See the **[examples folder](https://github.com/KevinMusgrave/pytorch-adapt/blob/main/examples/README.md)** for notebooks you can download or run on Google Colab.
+
+## How to...
+
+### Use in vanilla PyTorch
+```python
+from pytorch_adapt.hooks import DANNHook
+from pytorch_adapt.utils.common_functions import batch_to_device
+
+# Assuming that models, optimizers, and dataloader are already created.
+hook = DANNHook(optimizers)
+for data in tqdm(dataloader):
+ data = batch_to_device(data, device)
+ # Optimization is done inside the hook.
+ # The returned loss is for logging.
+ _, loss = hook({**models, **data})
+```
+
+### Build complex algorithms
+Let's customize ```DANNHook``` with:
+
+- minimum class confusion
+- virtual adversarial training
+
+```python
+from pytorch_adapt.hooks import MCCHook, VATHook
+
+# G and C are the Generator and Classifier models
+G, C = models["G"], models["C"]
+misc = {"combined_model": torch.nn.Sequential(G, C)}
+hook = DANNHook(optimizers, post_g=[MCCHook(), VATHook()])
+for data in tqdm(dataloader):
+ data = batch_to_device(data, device)
+ _, loss = hook({**models, **data, **misc})
+```
+
+### Wrap with your favorite PyTorch framework
+First, set up the adapter and dataloaders:
+
+```python
+from pytorch_adapt.adapters import DANN
+from pytorch_adapt.containers import Models
+from pytorch_adapt.datasets import DataloaderCreator
+
+models_cont = Models(models)
+adapter = DANN(models=models_cont)
+dc = DataloaderCreator(num_workers=2)
+dataloaders = dc(**datasets)
+```
+
+Then use a framework wrapper:
+
+#### PyTorch Lightning
+```python
+import pytorch_lightning as pl
+from pytorch_adapt.frameworks.lightning import Lightning
+
+L_adapter = Lightning(adapter)
+trainer = pl.Trainer(gpus=1, max_epochs=1)
+trainer.fit(L_adapter, dataloaders["train"])
+```
+
+#### PyTorch Ignite
+```python
+trainer = Ignite(adapter)
+trainer.run(datasets, dataloader_creator=dc)
+```
+
+### Check your model's performance
+You can do this in vanilla PyTorch:
+```python
+from pytorch_adapt.validators import SNDValidator
+
+# Assuming predictions have been collected
+target_train = {"preds": preds}
+validator = SNDValidator()
+score = validator(target_train=target_train)
+```
+
+You can also do this during training with a framework wrapper:
+
+#### PyTorch Lightning
+```python
+from pytorch_adapt.frameworks.utils import filter_datasets
+
+validator = SNDValidator()
+dataloaders = dc(**filter_datasets(datasets, validator))
+train_loader = dataloaders.pop("train")
+
+L_adapter = Lightning(adapter, validator=validator)
+trainer = pl.Trainer(gpus=1, max_epochs=1)
+trainer.fit(L_adapter, train_loader, list(dataloaders.values()))
+```
+
+#### Pytorch Ignite
+```python
+from pytorch_adapt.validators import ScoreHistory
+
+validator = ScoreHistory(SNDValidator())
+trainer = Ignite(adapter, validator=validator)
+trainer.run(datasets, dataloader_creator=dc)
+```
+
+### Run the above examples
+See [this notebook](https://github.com/KevinMusgrave/pytorch-adapt/blob/main/examples/other/ReadmeExamples.ipynb) and [the examples page](https://github.com/KevinMusgrave/pytorch-adapt/tree/main/examples/) for other notebooks.
+
+## Installation
+
+### Pip
+```
+pip install pytorch-adapt
+```
+
+**To get the latest dev version**:
+```
+pip install pytorch-adapt --pre
+```
+
+**To use ```pytorch_adapt.frameworks.lightning```**:
+```
+pip install pytorch-adapt[lightning]
+```
+
+**To use ```pytorch_adapt.frameworks.ignite```**:
+```
+pip install pytorch-adapt[ignite]
+```
+
+
+### Conda
+Coming soon...
+
+### Dependencies
+See [setup.py](https://github.com/KevinMusgrave/pytorch-adapt/blob/main/setup.py)
+
+## Acknowledgements
+
+### Contributors
+Thanks to the contributors who made pull requests!
+| Contributor | Highlights |
+| -- | -- |
+| [deepseek-eoghan](https://github.com/deepseek-eoghan) | Improved the TargetDataset class |
+
+### Advisors
+Thank you to [Ser-Nam Lim](https://research.fb.com/people/lim-ser-nam/), and my research advisor, [Professor Serge Belongie](https://vision.cornell.edu/se3/people/serge-belongie/).
+
+### Logo
+Thanks to [Jeff Musgrave](https://www.designgenius.ca/) for designing the logo.
+
+### Citing this library
+If you'd like to cite pytorch-adapt in your paper, you can refer to [this paper](https://arxiv.org/abs/2211.15673) by copy-pasting this bibtex reference:
+```latex
+@article{Musgrave2022PyTorchA,
+ title={PyTorch Adapt},
+ author={Kevin Musgrave and Serge J. Belongie and Ser Nam Lim},
+ journal={ArXiv},
+ year={2022},
+ volume={abs/2211.15673}
+}
+```
+
+### Code references (in no particular order)
+- https://github.com/wgchang/DSBN
+- https://github.com/jihanyang/AFN
+- https://github.com/thuml/Versatile-Domain-Adaptation
+- https://github.com/tim-learn/ATDOC
+- https://github.com/thuml/CDAN
+- https://github.com/takerum/vat_chainer
+- https://github.com/takerum/vat_tf
+- https://github.com/RuiShu/dirt-t
+- https://github.com/lyakaap/VAT-pytorch
+- https://github.com/9310gaurav/virtual-adversarial-training
+- https://github.com/thuml/Deep-Embedded-Validation
+- https://github.com/lr94/abas
+- https://github.com/thuml/Batch-Spectral-Penalization
+- https://github.com/jvanvugt/pytorch-domain-adaptation
+- https://github.com/ptrblck/pytorch_misc
+
+
+
+
+%prep
+%autosetup -n pytorch-adapt-0.0.83
+
+%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-pytorch-adapt -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.83-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..67c12f4
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+52168fe8ce709c40b145e07905658192 pytorch-adapt-0.0.83.tar.gz