adv-ml
================
<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
## Docs
See https://irad-zehavi.github.io/adv-ml/
## Install
``` sh
pip install adv_ml
```
## How to use
## How to Use
As an nbdev library, `adv-ml` supports `import *` (without importing
unwanted symbols):
``` python
from adv_ml.all import *
```
### Adversarial Examples
``` python
mnist = MNIST()
classifier = MLP(10)
learn = Learner(mnist.dls(), classifier, metrics=accuracy)
learn.fit(1)
```
<table border="1" class="dataframe">
<thead>
<tr style="text-align: left;">
<th>epoch</th>
<th>train_loss</th>
<th>valid_loss</th>
<th>accuracy</th>
<th>time</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0.154410</td>
<td>0.177410</td>
<td>0.953900</td>
<td>00:32</td>
</tr>
</tbody>
</table>
``` python
sub_dsets = mnist.valid.random_sub_dsets(64)
learn.show_results(shuffle=False, dl=sub_dsets.dl())
```

``` python
attack = InputOptimizer(classifier, LinfPGD(epsilon=.15), n_epochs=10, epoch_size=20)
perturbed_dsets = attack.perturb(sub_dsets)
```
<table border="1" class="dataframe">
<thead>
<tr style="text-align: left;">
<th>epoch</th>
<th>train_loss</th>
<th>time</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>-4.302573</td>
<td>00:00</td>
</tr>
<tr>
<td>1</td>
<td>-7.585707</td>
<td>00:00</td>
</tr>
<tr>
<td>2</td>
<td>-9.014968</td>
<td>00:00</td>
</tr>
<tr>
<td>3</td>
<td>-9.700548</td>
<td>00:00</td>
</tr>
<tr>
<td>4</td>
<td>-10.075110</td>
<td>00:00</td>
</tr>
<tr>
<td>5</td>
<td>-10.296636</td>
<td>00:00</td>
</tr>
<tr>
<td>6</td>
<td>-10.433834</td>
<td>00:00</td>
</tr>
<tr>
<td>7</td>
<td>-10.521141</td>
<td>00:00</td>
</tr>
<tr>
<td>8</td>
<td>-10.577673</td>
<td>00:00</td>
</tr>
<tr>
<td>9</td>
<td>-10.614740</td>
<td>00:00</td>
</tr>
</tbody>
</table>
``` python
learn.show_results(shuffle=False, dl=TfmdDL(perturbed_dsets))
```

### Data Poisoning
``` python
patch = torch.tensor([[1, 0, 1],
[0, 1, 0],
[1, 0, 1]]).int()*255
trigger = F.pad(patch, (25, 0, 25, 0)).numpy()
learn = Learner(mnist.dls(), MLP(10), metrics=accuracy, cbs=BadNetsAttack(trigger, '0'))
learn.fit_one_cycle(1)
```
<table border="1" class="dataframe">
<thead>
<tr style="text-align: left;">
<th>epoch</th>
<th>train_loss</th>
<th>valid_loss</th>
<th>accuracy</th>
<th>time</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0.103652</td>
<td>0.097075</td>
<td>0.971400</td>
<td>00:23</td>
</tr>
</tbody>
</table>
Benign performance:
``` python
learn.show_results()
```

Attack success:
``` python
learn.show_results(2)
```

Raw data
{
"_id": null,
"home_page": "https://github.com/Irad-Zehavi/adv-ml",
"name": "adv-ml",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "nbdev jupyter notebook python",
"author": "iradz",
"author_email": "irad.zehavi@outlook.com",
"download_url": "https://files.pythonhosted.org/packages/8d/62/08d24ee327042bf70bef28680a06253757222a0c24032da9ecdf98c171fa/adv-ml-0.0.4.tar.gz",
"platform": null,
"description": "adv-ml\n================\n\n<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->\n\n## Docs\n\nSee https://irad-zehavi.github.io/adv-ml/\n\n## Install\n\n``` sh\npip install adv_ml\n```\n\n## How to use\n\n## How to Use\n\nAs an nbdev library, `adv-ml` supports `import *` (without importing\nunwanted symbols):\n\n``` python\nfrom adv_ml.all import *\n```\n\n### Adversarial Examples\n\n``` python\nmnist = MNIST()\nclassifier = MLP(10)\nlearn = Learner(mnist.dls(), classifier, metrics=accuracy)\nlearn.fit(1)\n```\n\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: left;\">\n <th>epoch</th>\n <th>train_loss</th>\n <th>valid_loss</th>\n <th>accuracy</th>\n <th>time</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>0</td>\n <td>0.154410</td>\n <td>0.177410</td>\n <td>0.953900</td>\n <td>00:32</td>\n </tr>\n </tbody>\n</table>\n\n``` python\nsub_dsets = mnist.valid.random_sub_dsets(64)\nlearn.show_results(shuffle=False, dl=sub_dsets.dl())\n```\n\n\n\n``` python\nattack = InputOptimizer(classifier, LinfPGD(epsilon=.15), n_epochs=10, epoch_size=20)\nperturbed_dsets = attack.perturb(sub_dsets)\n```\n\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: left;\">\n <th>epoch</th>\n <th>train_loss</th>\n <th>time</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>0</td>\n <td>-4.302573</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>1</td>\n <td>-7.585707</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>2</td>\n <td>-9.014968</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>3</td>\n <td>-9.700548</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>4</td>\n <td>-10.075110</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>5</td>\n <td>-10.296636</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>6</td>\n <td>-10.433834</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>7</td>\n <td>-10.521141</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>8</td>\n <td>-10.577673</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>9</td>\n <td>-10.614740</td>\n <td>00:00</td>\n </tr>\n </tbody>\n</table>\n\n``` python\nlearn.show_results(shuffle=False, dl=TfmdDL(perturbed_dsets))\n```\n\n\n\n### Data Poisoning\n\n``` python\npatch = torch.tensor([[1, 0, 1],\n [0, 1, 0],\n [1, 0, 1]]).int()*255\ntrigger = F.pad(patch, (25, 0, 25, 0)).numpy()\nlearn = Learner(mnist.dls(), MLP(10), metrics=accuracy, cbs=BadNetsAttack(trigger, '0'))\nlearn.fit_one_cycle(1)\n```\n\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: left;\">\n <th>epoch</th>\n <th>train_loss</th>\n <th>valid_loss</th>\n <th>accuracy</th>\n <th>time</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>0</td>\n <td>0.103652</td>\n <td>0.097075</td>\n <td>0.971400</td>\n <td>00:23</td>\n </tr>\n </tbody>\n</table>\n\nBenign performance:\n\n``` python\nlearn.show_results()\n```\n\n\n\nAttack success:\n\n``` python\nlearn.show_results(2)\n```\n\n\n\n\n",
"bugtrack_url": null,
"license": "Apache Software License 2.0",
"summary": "A modular and easy-to-use framework of adversarial machine learning algorithms: https://en.m.wikipedia.org/wiki/Adversarial_machine_learning",
"version": "0.0.4",
"project_urls": {
"Homepage": "https://github.com/Irad-Zehavi/adv-ml"
},
"split_keywords": [
"nbdev",
"jupyter",
"notebook",
"python"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d8afb3dfb924c69cdb1084ce08107c4072f5e5e94414489803f8da6d7dddde4e",
"md5": "8ee434a5c26a9c81ebf7b553973f7112",
"sha256": "a1c284973cac35915fa50ad4ae513a7069b594ece6faeb32fda5e869ad0e013f"
},
"downloads": -1,
"filename": "adv_ml-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8ee434a5c26a9c81ebf7b553973f7112",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 20760,
"upload_time": "2023-06-10T10:07:32",
"upload_time_iso_8601": "2023-06-10T10:07:32.508540Z",
"url": "https://files.pythonhosted.org/packages/d8/af/b3dfb924c69cdb1084ce08107c4072f5e5e94414489803f8da6d7dddde4e/adv_ml-0.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8d6208d24ee327042bf70bef28680a06253757222a0c24032da9ecdf98c171fa",
"md5": "2aaa95cf2e948b6a85c83879b8dc8a8e",
"sha256": "fb99423d52072d8e4e1919e8fd3f59c6f259c2e3b756bc38ea0849b9f0437927"
},
"downloads": -1,
"filename": "adv-ml-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "2aaa95cf2e948b6a85c83879b8dc8a8e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 21980,
"upload_time": "2023-06-10T10:07:34",
"upload_time_iso_8601": "2023-06-10T10:07:34.406069Z",
"url": "https://files.pythonhosted.org/packages/8d/62/08d24ee327042bf70bef28680a06253757222a0c24032da9ecdf98c171fa/adv-ml-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-06-10 10:07:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Irad-Zehavi",
"github_project": "adv-ml",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "adv-ml"
}