AAAD/plot/.ipynb_checkpoints/visualize-checkpoint.ipynb

942 lines
84 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from graphviz import Digraph"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import namedtuple\n",
"Genotype = namedtuple('Genotype', 'normal normal_concat reduce reduce_concat')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def plot(genotype, filename):\n",
" g = Digraph(\n",
" format='pdf',\n",
" edge_attr=dict(fontsize='20', fontname=\"times\"),\n",
" node_attr=dict(style='filled', shape='rect', align='center', fontsize='20', height='0.5', width='0.5', penwidth='2', fontname=\"times\"),\n",
" engine='dot')\n",
" g.body.extend(['rankdir=LR'])\n",
"\n",
" g.node(\"c_{k-2}\", fillcolor='darkseagreen2')\n",
" g.node(\"c_{k-1}\", fillcolor='darkseagreen2')\n",
" assert len(genotype) % 2 == 0\n",
" steps = len(genotype) // 2\n",
"\n",
" for i in range(steps):\n",
" g.node(str(i), fillcolor='lightblue')\n",
"\n",
" for i in range(steps):\n",
" for k in [2*i, 2*i + 1]:\n",
" op, j = genotype[k]\n",
" if j == 0:\n",
" u = \"c_{k-2}\"\n",
" elif j == 1:\n",
" u = \"c_{k-1}\"\n",
" else:\n",
" u = str(j-2)\n",
" v = str(i)\n",
" g.edge(u, v, label=op, fillcolor=\"gray\")\n",
"\n",
" g.node(\"c_{k}\", fillcolor='palegoldenrod')\n",
" for i in range(steps):\n",
" g.edge(str(i), \"c_{k}\", fillcolor=\"gray\")\n",
"\n",
" g.render(filename, view=True)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"genotype = Genotype(normal=[('max_pool_3x3', 1), ('sep_conv_5x5', 0), ('max_pool_3x3', 2), ('sep_conv_5x5', 0), ('sep_conv_5x5', 3), ('sep_conv_5x5', 0), ('sep_conv_5x5', 3), ('sep_conv_5x5', 0)], normal_concat=range(2, 6), reduce=[('skip_connect', 1), ('sep_conv_3x3', 0), ('sep_conv_3x3', 1), ('sep_conv_5x5', 0), ('max_pool_3x3', 3), ('sep_conv_5x5', 2), ('sep_conv_5x5', 4), ('sep_conv_5x5', 0)], reduce_concat=range(2, 6))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"DARTS_V1 = Genotype(\n",
" normal=[('sep_conv_3x3', 1), ('sep_conv_3x3', 0), ('skip_connect', 0), ('sep_conv_3x3', 1), ('skip_connect', 0),\n",
" ('sep_conv_3x3', 1), ('sep_conv_3x3', 0), ('skip_connect', 2)], normal_concat=[2, 3, 4, 5],\n",
" reduce=[('max_pool_3x3', 0), ('max_pool_3x3', 1), ('skip_connect', 2), ('max_pool_3x3', 0), ('max_pool_3x3', 0),\n",
" ('skip_connect', 2), ('skip_connect', 2), ('avg_pool_3x3', 0)], reduce_concat=[2, 3, 4, 5])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('sep_conv_3x3', 1),\n",
" ('sep_conv_3x3', 0),\n",
" ('skip_connect', 0),\n",
" ('sep_conv_3x3', 1),\n",
" ('skip_connect', 0),\n",
" ('sep_conv_3x3', 1),\n",
" ('sep_conv_3x3', 0),\n",
" ('skip_connect', 2)]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"DARTS_V1.normal"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"a, b = zip(*DARTS_V1.normal)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1, 0, 0, 1, 0, 1, 0, 2)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('sep_conv_3x3',\n",
" 'sep_conv_3x3',\n",
" 'skip_connect',\n",
" 'sep_conv_3x3',\n",
" 'skip_connect',\n",
" 'sep_conv_3x3',\n",
" 'sep_conv_3x3',\n",
" 'skip_connect')"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"FairDARTS_a = Genotype(normal=[('sep_conv_3x3', 2, 0), ('sep_conv_5x5', 2, 1), ('max_pool_3x3', 4, 0), ('sep_conv_3x3', 5, 0)], normal_concat=range(2, 6),\n",
" reduce=[('max_pool_3x3', 2, 0), ('avg_pool_3x3', 2, 1), ('avg_pool_3x3', 3, 0), ('dil_conv_5x5', 3, 1), ('avg_pool_3x3', 4, 0), ('sep_conv_5x5', 4, 1),\n",
" ('skip_connect', 5, 0), ('skip_connect', 5, 1)], reduce_concat=range(2, 6))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"gr = FairDARTS_a.normal"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('sep_conv_3x3', 2, 0),\n",
" ('sep_conv_5x5', 2, 1),\n",
" ('max_pool_3x3', 4, 0),\n",
" ('sep_conv_3x3', 5, 0)]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gr"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "too many values to unpack (expected 2)",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-20-a86f2c41372c>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mb\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mgr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mValueError\u001b[0m: too many values to unpack (expected 2)"
]
}
],
"source": [
"a,b = zip(*gr)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'Genotype' is not defined",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-1-dcc62ffe73d1>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mDARTS_Arch0\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mGenotype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnormal\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'sep_conv_3x3'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'sep_conv_3x3'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'sep_conv_3x3'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'sep_conv_5x5'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'sep_conv_3x3'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'sep_conv_3x3'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'skip_connect'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'sep_conv_3x3'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnormal_concat\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m6\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreduce\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'sep_conv_3x3'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'sep_conv_3x3'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'skip_connect'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'dil_conv_3x3'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'skip_connect'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'avg_pool_3x3'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'skip_connect'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'skip_connect'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreduce_concat\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m6\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mNameError\u001b[0m: name 'Genotype' is not defined"
]
}
],
"source": [
"DARTS_Arch0 = Genotype(normal=[('sep_conv_3x3', 1), ('sep_conv_3x3', 0), ('sep_conv_3x3', 1), ('sep_conv_5x5', 0), ('sep_conv_3x3', 1), ('sep_conv_3x3', 0), ('skip_connect', 0), ('sep_conv_3x3', 1)], normal_concat=range(2, 6), reduce=[('sep_conv_3x3', 0), ('sep_conv_3x3', 1), ('skip_connect', 0), ('dil_conv_3x3', 2), ('skip_connect', 0), ('avg_pool_3x3', 1), ('skip_connect', 2), ('skip_connect', 0)], reduce_concat=range(2, 6))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"PCDARTS_natural = Genotype(\n",
" normal=[('sep_conv_5x5', 0), ('sep_conv_3x3', 1), ('dil_conv_3x3', 0), ('sep_conv_5x5', 2), ('dil_conv_5x5', 0),\n",
" ('dil_conv_3x3', 1), ('dil_conv_3x3', 0), ('skip_connect', 1)], normal_concat=range(2, 6),\n",
" reduce=[('dil_conv_5x5', 1), ('dil_conv_5x5', 0), ('sep_conv_3x3', 2), ('skip_connect', 1), ('sep_conv_3x3', 1),\n",
" ('skip_connect', 0), ('sep_conv_3x3', 2), ('dil_conv_5x5', 4)], reduce_concat=range(2, 6))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"PCDART_FGSM_es = Genotype(\n",
" normal=[('sep_conv_3x3', 0), ('skip_connect', 1), ('sep_conv_3x3', 1), ('skip_connect', 2), ('sep_conv_5x5', 0),\n",
" ('sep_conv_5x5', 3), ('max_pool_3x3', 2), ('sep_conv_5x5', 0)], normal_concat=range(2, 6),\n",
" reduce=[('sep_conv_5x5', 0), ('avg_pool_3x3', 1), ('sep_conv_3x3', 0), ('skip_connect', 2), ('sep_conv_5x5', 0),\n",
" ('sep_conv_3x3', 3), ('sep_conv_5x5', 0), ('sep_conv_5x5', 2)], reduce_concat=range(2, 6))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"PCDARTS_FGSM = Genotype(\n",
" normal=[('skip_connect', 0), ('skip_connect', 1), ('skip_connect', 1), ('skip_connect', 0), ('sep_conv_5x5', 0),\n",
" ('skip_connect', 3), ('avg_pool_3x3', 0), ('max_pool_3x3', 2)], normal_concat=range(2, 6),\n",
" reduce=[('avg_pool_3x3', 1), ('sep_conv_3x3', 0), ('sep_conv_3x3', 0), ('dil_conv_5x5', 2), ('sep_conv_3x3', 0),\n",
" ('sep_conv_3x3', 3), ('sep_conv_5x5', 0), ('sep_conv_3x3', 2)], reduce_concat=range(2, 6))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"PCDARTS_CAA_noise_FGSM = Genotype(\n",
" normal=[('sep_conv_3x3', 1), ('dil_conv_5x5', 0), ('max_pool_3x3', 2), ('sep_conv_3x3', 1), ('sep_conv_3x3', 2),\n",
" ('sep_conv_3x3', 1), ('sep_conv_3x3', 2), ('sep_conv_3x3', 0)], normal_concat=range(2, 6),\n",
" reduce=[('sep_conv_3x3', 0), ('sep_conv_3x3', 1), ('sep_conv_3x3', 0), ('dil_conv_5x5', 2), ('sep_conv_5x5', 2),\n",
" ('max_pool_3x3', 3), ('max_pool_3x3', 3), ('sep_conv_3x3', 4)], reduce_concat=range(2, 6))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"NASP_Jacobian = Genotype(normal=[('sep_conv_5x5', 0), ('dil_conv_5x5', 1), ('dil_conv_5x5', 1), ('dil_conv_3x3', 2), ('dil_conv_3x3', 1), ('sep_conv_5x5', 2), ('dil_conv_3x3', 1), ('sep_conv_5x5', 0)], normal_concat=range(2, 6), reduce=[('sep_conv_5x5', 0), ('sep_conv_3x3', 1), ('sep_conv_5x5', 2), ('skip_connect', 0), ('sep_conv_5x5', 3), ('max_pool_3x3', 0), ('dil_conv_3x3', 4), ('max_pool_3x3', 3)], reduce_concat=range(2, 6))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"(dot.exe:680): Pango-WARNING **: couldn't load font \"times Not-Rotated 20\", falling back to \"Sans Not-Rotated 20\", expect ugly output.\n",
"\n",
"(dot.exe:13756): Pango-WARNING **: couldn't load font \"times Not-Rotated 20\", falling back to \"Sans Not-Rotated 20\", expect ugly output.\n"
]
}
],
"source": [
"plot(PCDARTS_natural.normal, \"normal\")\n",
"plot(PCDARTS_natural.reduce, \"reduction\")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"ename": "ExecutableNotFound",
"evalue": "failed to execute 'dot', make sure the Graphviz executables are on your systems' PATH",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32mD:\\conda\\lib\\site-packages\\graphviz\\backend\\execute.py\u001b[0m in \u001b[0;36mrun_check\u001b[1;34m(cmd, input_lines, encoding, capture_output, quiet, **kwargs)\u001b[0m\n\u001b[0;32m 84\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 85\u001b[1;33m \u001b[0mproc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msubprocess\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcmd\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 86\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\conda\\lib\\subprocess.py\u001b[0m in \u001b[0;36mrun\u001b[1;34m(input, capture_output, timeout, check, *popenargs, **kwargs)\u001b[0m\n\u001b[0;32m 471\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 472\u001b[1;33m \u001b[1;32mwith\u001b[0m \u001b[0mPopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mpopenargs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mprocess\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 473\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\conda\\lib\\subprocess.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors, text)\u001b[0m\n\u001b[0;32m 774\u001b[0m \u001b[0merrread\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merrwrite\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 775\u001b[1;33m restore_signals, start_new_session)\n\u001b[0m\u001b[0;32m 776\u001b[0m \u001b[1;32mexcept\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\conda\\lib\\subprocess.py\u001b[0m in \u001b[0;36m_execute_child\u001b[1;34m(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)\u001b[0m\n\u001b[0;32m 1177\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfspath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcwd\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcwd\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1178\u001b[1;33m startupinfo)\n\u001b[0m\u001b[0;32m 1179\u001b[0m \u001b[1;32mfinally\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mFileNotFoundError\u001b[0m: [WinError 2] 系统找不到指定的文件。",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[1;31mExecutableNotFound\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-20-a3db62116faf>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDARTS_Arch0\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnormal\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"normal\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDARTS_Arch0\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreduce\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"reduction\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m<ipython-input-14-ef1dac6f7e77>\u001b[0m in \u001b[0;36mplot\u001b[1;34m(genotype, filename)\u001b[0m\n\u001b[0;32m 31\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0medge\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"c_{k}\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfillcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"gray\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 32\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 33\u001b[1;33m \u001b[0mg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrender\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mview\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32mD:\\conda\\lib\\site-packages\\graphviz\\_tools.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 170\u001b[0m category=category)\n\u001b[0;32m 171\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 172\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 173\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 174\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\conda\\lib\\site-packages\\graphviz\\rendering.py\u001b[0m in \u001b[0;36mrender\u001b[1;34m(self, filename, directory, view, cleanup, format, renderer, formatter, quiet, quiet_view, outfile, engine, raise_if_result_exists, overwrite_source)\u001b[0m\n\u001b[0;32m 117\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 118\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 119\u001b[1;33m \u001b[0mrendered\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_render\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 120\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 121\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcleanup\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\conda\\lib\\site-packages\\graphviz\\_tools.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 170\u001b[0m category=category)\n\u001b[0;32m 171\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 172\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 173\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 174\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\conda\\lib\\site-packages\\graphviz\\backend\\rendering.py\u001b[0m in \u001b[0;36mrender\u001b[1;34m(engine, format, filepath, renderer, formatter, quiet, outfile, raise_if_result_exists, overwrite_filepath)\u001b[0m\n\u001b[0;32m 318\u001b[0m \u001b[0mcwd\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfilepath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparent\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mfilepath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparts\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 319\u001b[0m \u001b[0mquiet\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mquiet\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 320\u001b[1;33m capture_output=True)\n\u001b[0m\u001b[0;32m 321\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 322\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfspath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moutfile\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\conda\\lib\\site-packages\\graphviz\\backend\\execute.py\u001b[0m in \u001b[0;36mrun_check\u001b[1;34m(cmd, input_lines, encoding, capture_output, quiet, **kwargs)\u001b[0m\n\u001b[0;32m 86\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 87\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merrno\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0merrno\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mENOENT\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 88\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mExecutableNotFound\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcmd\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 89\u001b[0m \u001b[1;32mraise\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 90\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mExecutableNotFound\u001b[0m: failed to execute 'dot', make sure the Graphviz executables are on your systems' PATH"
]
}
],
"source": [
"plot(DARTS_Arch0.normal, \"normal\")\n",
"plot(DARTS_Arch0.reduce, \"reduction\")"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"plot(PCDART_FGSM_es.normal, \"normal\")\n",
"plot(PCDART_FGSM_es.reduce, \"reduction\")"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"plot(PCDARTS_CAA_noise_FGSM.normal, \"normal\")\n",
"plot(PCDARTS_CAA_noise_FGSM.reduce, \"reduction\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# plot(genotype.normal, \"normal\")\n",
"# plot(genotype.reduce, \"reduction\")"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAa0AAAEiCAYAAABKsI06AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAefklEQVR4nO3df7DVdZ348ecLuMXdUGnwuiugC81NKS8KdDWNadcfyQ9nlpq01NFGW5Edwua7YlS23xqdbXb0S+VOtLW5QTKWkVGikyUqshNawuIg11+R7ErAdYsrCUYCA9f394/zgS5wL/ece8/v83zMMHPu+3zOPe/zGe59n+f5fO45kVJCkqRaMKTSE5AkKV8uWpKkmuGiJUmqGS5akqSa4aIlSaoZLlqSpJoxrNITADj55JPTuHHjKj0NSVIVeOaZZ15LKbX0dl1VLFrjxo1j/fr1lZ6GJKkKRMRv+7rOlwclSTXDRUuSVDNctCRJNaMqjmn15sCBA2zfvp19+/ZVeip1Z/jw4YwdO5ampqZKT0WSClK1i9b27ds54YQTGDduHBFR6enUjZQSO3fuZPv27YwfP77S05GkglTty4P79u1j1KhRLlhFFhGMGjXKgpVUk/pdtCJieESsi4iNEfFCRNx+1PVfj4g9Pb5+e0T8MCI2R8TaiBg30Mm5YJWG+1VSrcqntPYDF6eUzgEmATMi4nyAiGgH3nnU9jcAr6eUWoG7gDuLON+y2bVrF9/85jcrdv+PPPIIZ555Jq2trdxxxx29brN161YuuugiJk+ezNlnn83PfvazMs9Sksqr30Ur5RwqqabsX4qIocBC4LNH3eTDwNLs8nLgkqjBp/aVXLS6u7uZN28eP//5z3nxxRf5wQ9+wIsvvnjMdl/+8pf5+Mc/zoYNG1i2bBmf+tSnKjBbSQK2boV77y353eR1TCsihkbEs8AO4LGU0lrgJuChlNL/HrX5GGAbQErpILAbGNXL95wTEesjYn1XV9dgHkNJfP7zn+e///u/mTRpEgsWLGDPnj1ccsklTJkyhYkTJ/Lggw8CsGXLFtra2g7f7itf+Qq33XbboO573bp1tLa28q53vYu3ve1tXHXVVYfvr6eI4I033gBg9+7djB49elD3K0kFSwm+8x1oa4NPfxpef72kd5fX2YMppW5gUkSMBB6IiL8BPgZcONA7TindDdwN0N7eno678T/+Izz77EDvqneTJsG//mufV99xxx08//zzPJvd78GDB3nggQc48cQTee211zj//POZNWtW3nf3/e9/n4ULFx4z3trayvLly48Y6+zs5LTTTjv89dixY1m7du0xt73tttuYNm0aixYt4k9/+hOPP/543vORpEHbuhVuvBEefRQuvBAWL4Z3Hn3EqLgKOuU9pbQrIlYDFwGtwObslb+/iIjN2XGsTuA0YHtEDANOAnYWd9rll1LiC1/4Ar/4xS8YMmQInZ2d/P73v8/79tdccw3XXHNNUef0gx/8gOuvv55bbrmFX/3qV3ziE5/g+eefZ8iQqj0pVFI9SCm3QM2fD2+9Bd/4BsydC2X43dPvohURLcCBbMFqBi4F7kwp/VWPbfZkCxbAQ8B1wK+AK4AnUkrHL6n+HKeIyuX73/8+XV1dPPPMMzQ1NTFu3Dj27dvHsGHDeOuttw5v19ep5IWU1pgxY9i2bdvhr7dv386YMWOOue3ixYt55JFHALjgggvYt28fr732GqeccsqAHqMk9au3unrXu8p29/mU1qnA0uzEiyHA/Smlnx5n+8XAvRGxGfgDcNXgp1l+J5xwAn/84x8Pf717925OOeUUmpqaWL16Nb/9be5NiP/yL/+SHTt2sHPnTkaMGMFPf/pTZsyYccz3K6S0zj33XF5++WVeeeUVxowZw7Jly7jvvvuO2e70009n1apVXH/99bz00kvs27ePlpZe381fkgangnXVU7+LVkqpA5jczzYjelzeR+54V00bNWoUU6dOpa2tjZkzZ/K5z32Ov/u7v2PixIm0t7czYcIEAJqamvjSl77Eeeedx5gxYw6PD8awYcP4xje+wfTp0+nu7ubv//7vOeusswD40pe+RHt7O7NmzeKrX/0qN954I3fddRcRwT333OPfYEkqvgrXVU8x2FfuiqG9vT0d/XlaL730Eu95z3sqNKP65/6V1K+j6+rOO8tSVxHxTEqpvbfrqva9ByVJFVRFddWTp5lJkv6s599dPfVU7tjVqlVVsWCBpSVJOqRK66onS0uSGl2V11VPlpYkNbIaqKueLC1JakQ1VFc9uWjVkP3793PllVfS2trK+9//frZs2dLrdnfddRdnnXUWbW1tXH311X7go6QjbdsGM2fmCut974OODpg3r+x/KDwQ1T9DHbZ4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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x = np.linspace(330,340,10)\n",
"y = np.linspace(330,340,10)\n",
"fig = plt.figure()\n",
"axes = fig.add_axes([0.1,0.1,0.9,0.9])\n",
"axes.plot(x,y,'r')\n",
"plt.scatter([338,334],[336,335])\n",
"plt.savefig('redict.png')\n",
"plt.legend(['tau = 0.8','mae = 0.8'])\n",
"# plt.legend(['mae = 0.8'])\n",
"plt.show()\n",
"\n",
"# plt.scatter(pred,true)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"choice.append({'attacker': random.randint(0, 5), 'magnitude': random.uniform(0, 5),\n",
" 'step': random.randint(0, 20)})"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[{'attacker': 4, 'magnitude': 3.193435249274854, 'step': 6},\n",
" {'attacker': 5, 'magnitude': 1.0717372411214736, 'step': 16}]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"choice"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"choice.append({'attacker': random.randint(0, 5), 'magnitude': random.uniform(0, 5),\n",
" 'step': random.randint(0, 20)})"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"random.randint(0,1)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"random.randint(1,2)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"a = [[{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'PGD_Attack_adaptive_stepsize', 'magnitude': 0.024948902671414815, 'step': 17}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'CWLinf_Attack_adaptive_stepsize', 'magnitude': 0.02852687209318794, 'step': 17}, {'attacker': 'Skip', 'magnitude': 0.004082423056449989, 'step': 4}, {'attacker': 'PGD_Attack_adaptive_stepsize', 'magnitude': 0.008456012144049537, 'step': 13}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'PGD_Attack_adaptive_stepsize', 'magnitude': 0.024948902671414815, 'step': 17}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'CWLinf_Attack_adaptive_stepsize', 'magnitude': 0.02852687209318794, 'step': 17}, {'attacker': 'Skip', 'magnitude': 0.004082423056449989, 'step': 4}, {'attacker': 'PGD_Attack_adaptive_stepsize', 'magnitude': 0.008456012144049537, 'step': 13}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'CWLinf_Attack_adaptive_stepsize', 'magnitude': 0.02852687209318794, 'step': 17}, {'attacker': 'Skip', 'magnitude': 0.004082423056449989, 'step': 4}, {'attacker': 'PGD_Attack_adaptive_stepsize', 'magnitude': 0.008456012144049537, 'step': 13}], [{'attacker': 'CWLinf_Attack_adaptive_stepsize', 'magnitude': 0.02852687209318794, 'step': 17}, {'attacker': 'Skip', 'magnitude': 0.004082423056449989, 'step': 4}, {'attacker': 'PGD_Attack_adaptive_stepsize', 'magnitude': 0.008456012144049537, 'step': 13}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}], [{'attacker': 'GradientSignAttack', 'magnitude': 0.004173688472590026, 'step': 17}], [{'attacker': 'Skip', 'magnitude': 0.031762217757444255, 'step': 2}, {'attacker': 'MultiTargetedAttack', 'magnitude': 0.01988300969944596, 'step': 13}]]"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"40"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(a)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import torch\n",
"x=torch.tensor(3.0,requires_grad=False)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"y=torch.pow(x,2)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"False\n",
"False\n"
]
}
],
"source": [
"print(x.requires_grad)\n",
"print(y.requires_grad)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"ename": "RuntimeError",
"evalue": "element 0 of tensors does not require grad and does not have a grad_fn",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-4-ab75bb780f4c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0my\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m/Applications/anaconda/anaconda3/lib/python3.7/site-packages/torch/tensor.py\u001b[0m in \u001b[0;36mbackward\u001b[0;34m(self, gradient, retain_graph, create_graph)\u001b[0m\n\u001b[1;32m 219\u001b[0m \u001b[0mretain_graph\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mretain_graph\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 220\u001b[0m create_graph=create_graph)\n\u001b[0;32m--> 221\u001b[0;31m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mautograd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgradient\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mretain_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcreate_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 222\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 223\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mregister_hook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhook\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Applications/anaconda/anaconda3/lib/python3.7/site-packages/torch/autograd/__init__.py\u001b[0m in \u001b[0;36mbackward\u001b[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables)\u001b[0m\n\u001b[1;32m 130\u001b[0m Variable._execution_engine.run_backward(\n\u001b[1;32m 131\u001b[0m \u001b[0mtensors\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgrad_tensors_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mretain_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcreate_graph\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 132\u001b[0;31m allow_unreachable=True) # allow_unreachable flag\n\u001b[0m\u001b[1;32m 133\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 134\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mRuntimeError\u001b[0m: element 0 of tensors does not require grad and does not have a grad_fn"
]
}
],
"source": [
"y.backward()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor(6.)\n"
]
}
],
"source": [
"print(x.grad)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"None\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Applications/anaconda/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: UserWarning: The .grad attribute of a Tensor that is not a leaf Tensor is being accessed. Its .grad attribute won't be populated during autograd.backward(). If you indeed want the gradient for a non-leaf Tensor, use .retain_grad() on the non-leaf Tensor. If you access the non-leaf Tensor by mistake, make sure you access the leaf Tensor instead. See github.com/pytorch/pytorch/pull/30531 for more informations.\n",
" \"\"\"Entry point for launching an IPython kernel.\n"
]
}
],
"source": [
"print(y.grad)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n",
"False\n"
]
}
],
"source": [
"a = torch.ones([2, 2], requires_grad=True)\n",
"print(a.is_leaf)\n",
"# True\n",
"\n",
"b = a + 2\n",
"print(b.is_leaf)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n",
"True\n"
]
}
],
"source": [
"a = torch.ones([2, 2], requires_grad=True)\n",
"print(a.is_leaf)\n",
"# True\n",
"\n",
"b = a \n",
"print(b.is_leaf)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"a = [1,2, 3]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"b = [3, 5, 6]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'bool' object has no attribute 'nonzero'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-11-8047513feccb>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpre\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnonzero\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m: 'bool' object has no attribute 'nonzero'"
]
}
],
"source": [
"pre = (a == b).nonzero()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a == b"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[3, 5, 6]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'pred' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-10-ce99fa45c119>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mpred\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mtest_labels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnonzero\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'pred' is not defined"
]
}
],
"source": [
" (pred == test_labels).nonzero()"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"x = [3, 4, 5 , 6]"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fd8a946b320>]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"y = [1, 2, 3, 4]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fd8a936fdd8>]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(y,x)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"x = [6, 3, 8 ,1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}