From d81ca50bcaba643eacd032b2b3dbd7308573707e Mon Sep 17 00:00:00 2001
From: Rishi Sharma <rishi.sharma@epfl.ch>
Date: Wed, 24 Nov 2021 15:07:25 +0100
Subject: [PATCH] 6 machine, move to eval

---
 36_nodes.edges => eval/36_nodes.edges       |    0
 eval/80_nodes.edges                         |  507 ++++++++
 eval/96_nodes.edges                         |  531 ++++++++
 config.ini => eval/config.ini               |    8 +-
 graph.adj => eval/graph.adj                 |    0
 ip_addr.json => eval/ip_addr_3Machines.json |    0
 eval/ip_addr_6Machines.json                 |    8 +
 eval/main.ipynb                             | 1199 +++++++++++++++++++
 testing.py => eval/testing.py               |    0
 install_nMachines.sh                        |   14 +
 main.ipynb                                  |  585 ---------
 run.py                                      |   14 -
 src/decentralizepy/sharing/PartialModel.py  |    6 +
 13 files changed, 2269 insertions(+), 603 deletions(-)
 rename 36_nodes.edges => eval/36_nodes.edges (100%)
 create mode 100644 eval/80_nodes.edges
 create mode 100644 eval/96_nodes.edges
 rename config.ini => eval/config.ini (73%)
 rename graph.adj => eval/graph.adj (100%)
 rename ip_addr.json => eval/ip_addr_3Machines.json (100%)
 create mode 100644 eval/ip_addr_6Machines.json
 create mode 100644 eval/main.ipynb
 rename testing.py => eval/testing.py (100%)
 create mode 100644 install_nMachines.sh
 delete mode 100644 main.ipynb
 delete mode 100644 run.py

diff --git a/36_nodes.edges b/eval/36_nodes.edges
similarity index 100%
rename from 36_nodes.edges
rename to eval/36_nodes.edges
diff --git a/eval/80_nodes.edges b/eval/80_nodes.edges
new file mode 100644
index 0000000..d047c0b
--- /dev/null
+++ b/eval/80_nodes.edges
@@ -0,0 +1,507 @@
+80
+0 1
+0 3
+0 60
+0 47
+0 79
+0 21
+0 53
+0 28
+1 0
+1 2
+1 70
+1 20
+1 61
+1 30
+2 33
+2 1
+2 3
+2 4
+2 68
+3 0
+3 2
+3 4
+3 14
+3 19
+3 20
+3 25
+3 59
+4 2
+4 3
+4 5
+4 78
+4 16
+5 4
+5 6
+5 7
+5 10
+5 76
+5 79
+5 24
+5 60
+6 17
+6 26
+6 5
+6 7
+7 5
+7 6
+7 8
+7 54
+7 61
+8 7
+8 9
+8 16
+8 19
+8 57
+8 63
+9 68
+9 8
+9 10
+9 77
+9 54
+9 24
+9 27
+9 30
+10 69
+10 5
+10 9
+10 11
+10 45
+10 47
+10 55
+11 10
+11 19
+11 12
+11 71
+12 37
+12 74
+12 11
+12 13
+12 63
+13 65
+13 71
+13 39
+13 76
+13 45
+13 14
+13 12
+13 51
+13 53
+13 54
+13 63
+14 32
+14 64
+14 3
+14 70
+14 13
+14 15
+14 51
+14 23
+14 60
+15 69
+15 40
+15 44
+15 14
+15 16
+15 19
+15 53
+15 22
+15 27
+16 4
+16 70
+16 8
+16 77
+16 15
+16 17
+16 60
+16 31
+17 32
+17 6
+17 40
+17 16
+17 18
+18 32
+18 46
+18 17
+18 19
+18 20
+18 24
+19 3
+19 8
+19 11
+19 75
+19 78
+19 15
+19 18
+19 20
+19 21
+19 55
+19 58
+20 1
+20 65
+20 3
+20 70
+20 18
+20 19
+20 21
+20 22
+21 0
+21 38
+21 46
+21 19
+21 20
+21 22
+21 24
+22 15
+22 51
+22 20
+22 21
+22 23
+22 63
+23 36
+23 14
+23 79
+23 22
+23 24
+24 5
+24 38
+24 37
+24 9
+24 18
+24 21
+24 23
+24 25
+24 61
+25 66
+25 3
+25 58
+25 40
+25 24
+25 26
+26 6
+26 53
+26 25
+26 27
+26 29
+27 71
+27 9
+27 15
+27 48
+27 52
+27 54
+27 26
+27 28
+27 62
+28 0
+28 40
+28 46
+28 56
+28 27
+28 29
+29 48
+29 26
+29 28
+29 30
+30 65
+30 1
+30 34
+30 68
+30 9
+30 29
+30 31
+31 16
+31 32
+31 43
+31 30
+32 33
+32 38
+32 41
+32 44
+32 14
+32 17
+32 18
+32 57
+32 31
+33 32
+33 2
+33 34
+33 69
+33 54
+33 63
+34 38
+34 33
+34 35
+34 30
+35 34
+35 36
+35 38
+35 39
+35 46
+36 35
+36 37
+36 42
+36 46
+36 54
+36 23
+37 36
+37 38
+37 12
+37 76
+37 24
+38 32
+38 34
+38 35
+38 37
+38 39
+38 21
+38 24
+39 40
+39 35
+39 13
+39 38
+40 39
+40 41
+40 15
+40 17
+40 55
+40 25
+40 28
+41 32
+41 42
+41 40
+41 79
+42 64
+42 36
+42 41
+42 43
+42 50
+42 53
+42 55
+42 58
+43 64
+43 68
+43 42
+43 44
+43 31
+44 32
+44 43
+44 45
+44 15
+44 51
+44 62
+45 72
+45 10
+45 44
+45 13
+45 46
+45 50
+46 35
+46 36
+46 76
+46 45
+46 77
+46 47
+46 18
+46 50
+46 21
+46 28
+47 0
+47 10
+47 74
+47 46
+47 48
+48 49
+48 27
+48 29
+48 47
+49 64
+49 48
+49 50
+49 52
+49 54
+50 64
+50 42
+50 76
+50 45
+50 46
+50 49
+50 51
+51 67
+51 72
+51 44
+51 13
+51 14
+51 50
+51 52
+51 22
+51 55
+52 76
+52 49
+52 51
+52 53
+52 27
+53 0
+53 68
+53 42
+53 13
+53 15
+53 52
+53 54
+53 55
+53 26
+54 33
+54 36
+54 7
+54 9
+54 13
+54 49
+54 53
+54 55
+54 57
+54 27
+55 40
+55 10
+55 42
+55 51
+55 19
+55 53
+55 54
+55 56
+56 57
+56 28
+56 55
+57 32
+57 68
+57 8
+57 54
+57 56
+57 58
+58 42
+58 19
+58 25
+58 59
+58 57
+59 64
+59 58
+59 3
+59 60
+60 0
+60 5
+60 74
+60 14
+60 16
+60 59
+60 61
+61 1
+61 68
+61 7
+61 76
+61 24
+61 60
+61 62
+62 70
+62 44
+62 27
+62 61
+62 63
+63 64
+63 33
+63 66
+63 68
+63 8
+63 74
+63 12
+63 13
+63 78
+63 22
+63 62
+64 65
+64 70
+64 42
+64 43
+64 14
+64 49
+64 50
+64 59
+64 63
+65 64
+65 66
+65 13
+65 20
+65 30
+66 65
+66 25
+66 67
+66 63
+67 66
+67 51
+67 68
+68 2
+68 67
+68 69
+68 9
+68 73
+68 43
+68 53
+68 57
+68 61
+68 30
+68 63
+69 33
+69 68
+69 70
+69 10
+69 15
+70 64
+70 1
+70 69
+70 71
+70 14
+70 16
+70 20
+70 62
+71 70
+71 72
+71 11
+71 13
+71 27
+72 73
+72 51
+72 45
+72 71
+73 72
+73 74
+73 68
+74 73
+74 75
+74 12
+74 47
+74 60
+74 63
+75 74
+75 19
+75 76
+76 37
+76 5
+76 75
+76 13
+76 46
+76 77
+76 50
+76 52
+76 61
+77 9
+77 76
+77 46
+77 78
+77 16
+78 4
+78 77
+78 79
+78 19
+78 63
+79 0
+79 5
+79 41
+79 78
+79 23
diff --git a/eval/96_nodes.edges b/eval/96_nodes.edges
new file mode 100644
index 0000000..e7f88a1
--- /dev/null
+++ b/eval/96_nodes.edges
@@ -0,0 +1,531 @@
+96
+0 1
+0 66
+0 8
+0 43
+0 19
+0 58
+0 95
+1 0
+1 2
+1 35
+1 4
+1 80
+1 50
+1 90
+2 56
+2 3
+2 35
+2 1
+3 2
+3 4
+3 5
+3 72
+3 15
+3 86
+3 55
+4 1
+4 3
+4 36
+4 37
+4 38
+4 5
+4 76
+5 3
+5 4
+5 6
+5 49
+5 53
+5 92
+6 67
+6 36
+6 5
+6 7
+6 78
+6 86
+7 64
+7 6
+7 8
+7 41
+7 47
+7 17
+7 87
+8 0
+8 7
+8 9
+8 56
+8 26
+9 8
+9 10
+9 75
+9 77
+9 15
+10 32
+10 36
+10 9
+10 11
+10 12
+10 81
+10 82
+11 32
+11 34
+11 10
+11 12
+11 59
+11 92
+11 61
+12 13
+12 10
+12 11
+12 29
+13 18
+13 12
+13 14
+14 73
+14 91
+14 13
+14 15
+15 3
+15 9
+15 75
+15 14
+15 47
+15 16
+15 27
+15 31
+16 17
+16 66
+16 46
+16 15
+17 16
+17 18
+17 20
+17 7
+18 32
+18 13
+18 79
+18 17
+18 19
+18 93
+19 0
+19 18
+19 20
+19 86
+20 46
+20 80
+20 17
+20 19
+20 21
+20 88
+20 90
+21 20
+21 69
+21 22
+21 23
+22 35
+22 69
+22 79
+22 21
+22 23
+22 58
+23 38
+23 77
+23 21
+23 22
+23 24
+23 89
+23 58
+24 25
+24 58
+24 23
+24 79
+25 36
+25 69
+25 41
+25 42
+25 24
+25 26
+26 8
+26 25
+26 27
+26 87
+27 34
+27 26
+27 28
+27 15
+28 27
+28 46
+28 82
+28 91
+28 29
+28 95
+29 12
+29 28
+29 53
+29 56
+29 60
+29 30
+30 35
+30 45
+30 92
+30 29
+30 31
+31 64
+31 33
+31 32
+31 76
+31 78
+31 15
+31 50
+31 30
+32 33
+32 37
+32 10
+32 11
+32 42
+32 18
+32 31
+33 32
+33 34
+33 31
+34 33
+34 35
+34 75
+34 11
+34 55
+34 27
+35 1
+35 2
+35 34
+35 36
+35 53
+35 22
+35 56
+35 30
+36 89
+36 35
+36 4
+36 37
+36 6
+36 72
+36 10
+36 75
+36 85
+36 25
+37 32
+37 4
+37 36
+37 38
+37 51
+38 4
+38 37
+38 39
+38 43
+38 23
+39 38
+39 40
+39 42
+39 75
+39 94
+40 70
+40 39
+40 41
+40 48
+40 49
+40 54
+40 95
+41 68
+41 7
+41 40
+41 42
+41 43
+41 25
+41 91
+42 32
+42 70
+42 39
+42 41
+42 43
+42 56
+42 25
+42 60
+43 0
+43 38
+43 41
+43 42
+43 44
+44 64
+44 71
+44 43
+44 45
+44 58
+45 46
+45 44
+45 30
+46 45
+46 47
+46 16
+46 48
+46 20
+46 28
+47 48
+47 15
+47 46
+47 7
+48 40
+48 46
+48 47
+48 49
+48 89
+48 62
+48 63
+49 5
+49 71
+49 40
+49 78
+49 48
+49 50
+50 1
+50 51
+50 49
+50 31
+51 67
+51 37
+51 73
+51 50
+51 52
+52 53
+52 51
+52 59
+52 69
+53 35
+53 5
+53 52
+53 54
+53 55
+53 89
+53 29
+53 94
+54 40
+54 82
+54 84
+54 53
+54 55
+55 34
+55 3
+55 53
+55 54
+55 56
+56 2
+56 35
+56 8
+56 42
+56 55
+56 57
+56 29
+57 75
+57 56
+57 58
+57 91
+58 0
+58 44
+58 22
+58 23
+58 24
+58 57
+58 59
+59 58
+59 11
+59 52
+59 60
+60 59
+60 42
+60 61
+60 29
+61 70
+61 11
+61 60
+61 62
+62 79
+62 48
+62 81
+62 86
+62 90
+62 61
+62 63
+63 48
+63 88
+63 64
+63 62
+64 65
+64 7
+64 44
+64 63
+64 31
+65 72
+65 66
+65 64
+66 0
+66 16
+66 67
+66 65
+67 66
+67 68
+67 6
+67 76
+67 51
+68 41
+68 67
+68 69
+68 86
+69 68
+69 70
+69 52
+69 21
+69 22
+69 25
+69 92
+70 69
+70 71
+70 40
+70 42
+70 75
+70 61
+71 70
+71 72
+71 44
+71 49
+71 89
+71 94
+72 65
+72 3
+72 36
+72 71
+72 73
+73 72
+73 74
+73 51
+73 14
+74 73
+74 75
+74 86
+75 34
+75 36
+75 70
+75 39
+75 9
+75 74
+75 76
+75 15
+75 57
+76 67
+76 4
+76 75
+76 77
+76 92
+76 31
+77 9
+77 76
+77 78
+77 23
+78 6
+78 77
+78 79
+78 49
+78 31
+79 78
+79 80
+79 18
+79 22
+79 24
+79 62
+80 1
+80 79
+80 81
+80 82
+80 20
+80 87
+81 80
+81 10
+81 82
+81 62
+82 10
+82 80
+82 81
+82 83
+82 84
+82 54
+82 28
+82 93
+83 82
+83 84
+83 93
+84 82
+84 83
+84 85
+84 54
+84 88
+84 90
+85 36
+85 86
+85 84
+86 3
+86 68
+86 6
+86 74
+86 19
+86 85
+86 87
+86 93
+86 62
+87 7
+87 80
+87 86
+87 88
+87 26
+88 20
+88 84
+88 87
+88 89
+88 63
+89 36
+89 71
+89 48
+89 53
+89 23
+89 88
+89 90
+90 1
+90 20
+90 84
+90 89
+90 91
+90 62
+91 41
+91 14
+91 92
+91 57
+91 90
+91 28
+92 69
+92 5
+92 11
+92 76
+92 91
+92 93
+92 30
+93 18
+93 83
+93 82
+93 86
+93 92
+93 94
+94 71
+94 39
+94 53
+94 93
+94 95
+95 40
+95 0
+95 28
+95 94
diff --git a/config.ini b/eval/config.ini
similarity index 73%
rename from config.ini
rename to eval/config.ini
index 07a6d9b..74b7929 100644
--- a/config.ini
+++ b/eval/config.ini
@@ -2,9 +2,9 @@
 dataset_package = decentralizepy.datasets.Femnist
 dataset_class = Femnist
 model_class = CNN
-n_procs = 12
-train_dir = leaf/data/femnist/per_user_data/train
-test_dir = leaf/data/femnist/data/test
+n_procs = 16
+train_dir = /home/risharma/Gitlab/decentralizepy/leaf/data/femnist/per_user_data/train
+test_dir = /home/risharma/Gitlab/decentralizepy/leaf/data/femnist/data/test
 ; python list of fractions below
 sizes = 
 
@@ -25,7 +25,7 @@ loss_class = CrossEntropyLoss
 [COMMUNICATION]
 comm_package = decentralizepy.communication.TCP
 comm_class = TCP
-addresses_filepath = ip_addr.json
+addresses_filepath = ip_addr_6Machines.json
 
 [SHARING]
 sharing_package = decentralizepy.sharing.Sharing
diff --git a/graph.adj b/eval/graph.adj
similarity index 100%
rename from graph.adj
rename to eval/graph.adj
diff --git a/ip_addr.json b/eval/ip_addr_3Machines.json
similarity index 100%
rename from ip_addr.json
rename to eval/ip_addr_3Machines.json
diff --git a/eval/ip_addr_6Machines.json b/eval/ip_addr_6Machines.json
new file mode 100644
index 0000000..12eb205
--- /dev/null
+++ b/eval/ip_addr_6Machines.json
@@ -0,0 +1,8 @@
+{
+    "0": "10.90.41.128",
+    "1": "10.90.41.129",
+    "2": "10.90.41.130",
+    "3": "10.90.41.131",
+    "4": "10.90.41.132",
+    "5": "10.90.41.133"
+}
\ No newline at end of file
diff --git a/eval/main.ipynb b/eval/main.ipynb
new file mode 100644
index 0000000..7e00813
--- /dev/null
+++ b/eval/main.ipynb
@@ -0,0 +1,1199 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from datasets.Femnist import Femnist\n",
+    "from graphs import SmallWorld\n",
+    "from collections import defaultdict\n",
+    "import os\n",
+    "import json\n",
+    "import numpy as np\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "a = FEMNIST\n",
+    "a"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "b = SmallWorld(6, 2, 2, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "b.adj_list"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "for i in range(12):\n",
+    "    print(b.neighbors(i))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "clients = []"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "num_samples = []\n",
+    "data = defaultdict(lambda : None)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "datadir = \"./leaf/data/femnist/data/train\"\n",
+    "files = os.listdir(datadir)\n",
+    "total_users=0\n",
+    "users = set()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "files = os.listdir(datadir)[0:1]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "for f in files:\n",
+    "    file_path = os.path.join(datadir, f)\n",
+    "    print(file_path)\n",
+    "    with open(file_path, 'r') as inf:\n",
+    "        client_data = json.load(inf)\n",
+    "    current_users = len(client_data['users'])\n",
+    "    print(\"Current_Users: \", current_users)\n",
+    "    total_users += current_users\n",
+    "    users.update(client_data['users'])\n",
+    "\n",
+    "print(\"total_users: \", total_users)\n",
+    "print(\"total_users: \", len(users))\n",
+    "print(client_data['user_data'].keys())\n",
+    "print(np.array(client_data['user_data']['f3408_47']['x']).shape)\n",
+    "print(np.array(client_data['user_data']['f3408_47']['y']).shape)\n",
+    "print(np.array(client_data['user_data']['f3327_11']['x']).shape)\n",
+    "print(np.array(client_data['user_data']['f3327_11']['y']).shape)\n",
+    "print(np.unique(np.array(client_data['user_data']['f3327_11']['y'])))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "file = 'run.py'\n",
+    "with open(file, 'r') as inf:\n",
+    "            print(inf.readline().strip())\n",
+    "            print(inf.readlines())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def f(l):\n",
+    "    l[2] = 'c'\n",
+    "\n",
+    "a = ['a', 'a', 'a']\n",
+    "print(a)\n",
+    "f(a)\n",
+    "print(a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "l = ['a', 'b', 'c']\n",
+    "print(l[:-1])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from localconfig import LocalConfig\n",
+    "\n",
+    "def read_ini(file_path):\n",
+    "    config = LocalConfig(file_path)\n",
+    "    for section in config:\n",
+    "        print(\"Section: \", section)\n",
+    "        for key, value in config.items(section):\n",
+    "            print((key, value))\n",
+    "    print(dict(config.items('DATASET')))\n",
+    "    return config\n",
+    " \n",
+    "config = read_ini(\"config.ini\")\n",
+    "for section in config:\n",
+    "    print(section)\n",
+    "#d = dict(config.sections())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def func(a = 1, b = 2, c = 3):\n",
+    "    print(a + b + c)\n",
+    "\n",
+    "l = [3, 5, 7]\n",
+    "\n",
+    "func(*l)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from torch import multiprocessing as mp\n",
+    "\n",
+    "mp.spawn(fn = func, nprocs = 2, args = [], kwargs = {'a': 4, 'b': 5, 'c': 6})"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "l = '[0.4, 0.2, 0.3, 0.1]'\n",
+    "type(eval(l))\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from decentralizepy.datasets.Femnist import Femnist\n",
+    "f1 = Femnist(0, 1, 'leaf/data/femnist/data/train')\n",
+    "ts = f1.get_trainset(1)\n",
+    "for data, target in ts:\n",
+    "    print(data)\n",
+    "    break"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from decentralizepy.datasets.Femnist import Femnist\n",
+    "from decentralizepy.graphs.SmallWorld import SmallWorld\n",
+    "from decentralizepy.mappings.Linear import Linear\n",
+    "\n",
+    "f = Femnist(2, 'leaf/data/femnist/data/train', sizes=[0.6, 0.4])\n",
+    "g = SmallWorld(4, 1, 0.5)\n",
+    "l = Linear(2, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from decentralizepy.node.Node import Node\n",
+    "from torch import multiprocessing as mp\n",
+    "import logging\n",
+    "n1 = Node(0, l, g, f, \"./results\", logging.DEBUG)\n",
+    "n2 = Node(1, l, g, f, \"./results\", logging.DEBUG)\n",
+    "# mp.spawn(fn = Node, nprocs = 2, args=[l,g,f])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from testing import f"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from torch import multiprocessing as mp\n",
+    "import torch\n",
+    "m1 = torch.nn.Linear(1,1)\n",
+    "o1 = torch.optim.SGD(m1.parameters(), 0.6)\n",
+    "print(m1)\n",
+    "\n",
+    "\n",
+    "mp.spawn(fn = f, nprocs = 2, args=[m1, o1])\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "o1.param_groups"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "with torch.no_grad():\n",
+    "    o1.param_groups[0][\"params\"][0].copy_(torch.zeros(1,))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "o1.param_groups"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "m1.state_dict()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import torch\n",
+    "loss = getattr(torch.nn.functional, 'nll_loss')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "loss"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Section:  GRAPH\n",
+      "('package', 'decentralizepy.graphs.SmallWorld')\n",
+      "('graph_class', 'SmallWorld')\n",
+      "Section:  DATASET\n",
+      "('dataset_package', 'decentralizepy.datasets.Femnist')\n",
+      "('dataset_class', 'Femnist')\n",
+      "('model_class', 'CNN')\n",
+      "('n_procs', 36)\n",
+      "('train_dir', 'leaf/data/femnist/per_user_data/train')\n",
+      "('test_dir', 'leaf/data/femnist/data/test')\n",
+      "('sizes', '')\n",
+      "Section:  OPTIMIZER_PARAMS\n",
+      "('optimizer_package', 'torch.optim')\n",
+      "('optimizer_class', 'Adam')\n",
+      "('lr', 0.01)\n",
+      "Section:  TRAIN_PARAMS\n",
+      "('training_package', 'decentralizepy.training.Training')\n",
+      "('training_class', 'Training')\n",
+      "('epochs_per_round', 1)\n",
+      "('batch_size', 1024)\n",
+      "('shuffle', True)\n",
+      "('loss_package', 'torch.nn')\n",
+      "('loss_class', 'CrossEntropyLoss')\n",
+      "Section:  COMMUNICATION\n",
+      "('comm_package', 'decentralizepy.communication.TCP')\n",
+      "('comm_class', 'TCP')\n",
+      "('addresses_filepath', 'ip_addr.json')\n",
+      "Section:  SHARING\n",
+      "('sharing_package', 'decentralizepy.sharing.Sharing')\n",
+      "('sharing_class', 'Sharing')\n",
+      "{'dataset_package': 'decentralizepy.datasets.Femnist', 'dataset_class': 'Femnist', 'model_class': 'CNN', 'n_procs': 36, 'train_dir': 'leaf/data/femnist/per_user_data/train', 'test_dir': 'leaf/data/femnist/data/test', 'sizes': ''}\n"
+     ]
+    }
+   ],
+   "source": [
+    "%matplotlib inline\n",
+    "\n",
+    "from decentralizepy.node.Node import Node\n",
+    "from decentralizepy.graphs.SmallWorld import SmallWorld\n",
+    "from decentralizepy.graphs.Graph import Graph\n",
+    "from decentralizepy.mappings.Linear import Linear\n",
+    "from torch import multiprocessing as mp\n",
+    "import torch\n",
+    "import logging\n",
+    "\n",
+    "from localconfig import LocalConfig\n",
+    "\n",
+    "def read_ini(file_path):\n",
+    "    config = LocalConfig(file_path)\n",
+    "    for section in config:\n",
+    "        print(\"Section: \", section)\n",
+    "        for key, value in config.items(section):\n",
+    "            print((key, value))\n",
+    "    print(dict(config.items('DATASET')))\n",
+    "    return config\n",
+    " \n",
+    "config = read_ini(\"config.ini\")\n",
+    "my_config = dict()\n",
+    "for section in config:\n",
+    "    my_config[section] = dict(config.items(section))\n",
+    "\n",
+    "#f = Femnist(2, 'leaf/data/femnist/data/train', sizes=[0.6, 0.4])\n",
+    "g = Graph()\n",
+    "g.read_graph_from_file(\"36_nodes.edges\", \"edges\")\n",
+    "l = Linear(1, 36)\n",
+    "\n",
+    "#Node(0, 0, l, g, my_config, 20, \"results\", logging.DEBUG)\n",
+    "\n",
+    "mp.spawn(fn = Node, nprocs = g.n_procs, args=[0,l,g,my_config,20,\"results\",logging.INFO])\n",
+    "\n",
+    "# mp.spawn(fn = Node, args = [l, g, config, 10, \"results\", logging.DEBUG], nprocs=2)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from decentralizepy.mappings.Linear import Linear\n",
+    "from testing import f\n",
+    "from torch import multiprocessing as mp\n",
+    "\n",
+    "l = Linear(1, 2)\n",
+    "mp.spawn(fn = f, nprocs = 2, args = [0, 2, \"ip_addr.json\", l])\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from decentralizepy.datasets.Femnist import Femnist\n",
+    "\n",
+    "f = Femnist()\n",
+    "\n",
+    "f.file_per_user('../leaf/data/femnist/data/train','../leaf/data/femnist/per_user_data/train')\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "a = set()\n",
+    "a.update([2, 3, 4, 5])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{2, 3, 4, 5}"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "2 3 4 5\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(*a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from decentralizepy.graphs.SmallWorld import SmallWorld\n",
+    "\n",
+    "s = SmallWorld(96, 2, .5)\n",
+    "s.write_graph_to_file('96_nodes.edges')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "['/home/risharma/miniconda3/envs/decpy/lib/python3.9/site-packages/ipykernel_launcher.py',\n",
+       " '--ip=127.0.0.1',\n",
+       " '--stdin=9008',\n",
+       " '--control=9006',\n",
+       " '--hb=9005',\n",
+       " '--Session.signature_scheme=\"hmac-sha256\"',\n",
+       " '--Session.key=b\"eac5d2f8-c460-45f1-a268-1e4b46a6efd6\"',\n",
+       " '--shell=9007',\n",
+       " '--transport=\"tcp\"',\n",
+       " '--iopub=9009',\n",
+       " '--f=/tmp/tmp-21212479paJaUBJBN84.json']"
+      ]
+     },
+     "execution_count": 1,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "import sys\n",
+    "sys.argv"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "m1_state_dict:  OrderedDict([('conv1.weight', tensor([[[[-0.0229, -0.1412, -0.1879, -0.1106,  0.1383],\n",
+      "          [-0.0951, -0.0891, -0.0665,  0.0580,  0.1503],\n",
+      "          [ 0.0548, -0.1465, -0.1330,  0.0034,  0.0442],\n",
+      "          [ 0.0647,  0.1041, -0.0606,  0.0304,  0.1865],\n",
+      "          [ 0.1933, -0.1473, -0.0146,  0.1158, -0.1871]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1394, -0.1527, -0.0536,  0.0266,  0.0947],\n",
+      "          [ 0.1923,  0.1522,  0.0670,  0.0957,  0.1105],\n",
+      "          [ 0.1480,  0.0392, -0.1256, -0.0925, -0.1490],\n",
+      "          [-0.0283,  0.1573, -0.1840,  0.1257, -0.0401],\n",
+      "          [ 0.1835,  0.0560, -0.1895, -0.1500,  0.0887]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.0774, -0.0870, -0.0947, -0.1334,  0.1894],\n",
+      "          [ 0.0948, -0.0605,  0.0826,  0.1156,  0.0111],\n",
+      "          [-0.1094, -0.1074,  0.0999, -0.1194,  0.1004],\n",
+      "          [-0.0173,  0.1559,  0.0715, -0.0290,  0.0097],\n",
+      "          [-0.0547,  0.0237, -0.0429,  0.1555, -0.0716]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1742,  0.1413, -0.1431,  0.0339, -0.1187],\n",
+      "          [-0.1739,  0.1583,  0.0853,  0.0963, -0.1279],\n",
+      "          [ 0.0941, -0.1236, -0.1247, -0.0534,  0.0822],\n",
+      "          [-0.0420,  0.1833,  0.0420, -0.0185,  0.0723],\n",
+      "          [-0.1710, -0.1717, -0.1689, -0.1454, -0.1634]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1793,  0.0073,  0.1140, -0.1528, -0.1188],\n",
+      "          [-0.1980,  0.0458, -0.0361,  0.1428,  0.1635],\n",
+      "          [ 0.0007, -0.0679, -0.1566, -0.0512,  0.1546],\n",
+      "          [ 0.0979,  0.1354,  0.1986, -0.1026,  0.0206],\n",
+      "          [ 0.1713, -0.0090, -0.0990, -0.1577, -0.0561]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.0531, -0.1490,  0.0013,  0.1090,  0.0666],\n",
+      "          [ 0.0604,  0.0964,  0.1117, -0.0058,  0.1389],\n",
+      "          [-0.0228,  0.0183,  0.0797,  0.1482, -0.1976],\n",
+      "          [-0.0633, -0.1305, -0.1355,  0.1928,  0.0251],\n",
+      "          [ 0.1038,  0.1539, -0.1245, -0.1238, -0.1278]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1392,  0.1037, -0.1825, -0.1580, -0.0792],\n",
+      "          [ 0.0841,  0.0298, -0.0681, -0.0392,  0.1775],\n",
+      "          [ 0.1716, -0.1017, -0.0676,  0.0086,  0.1156],\n",
+      "          [ 0.1659, -0.1998,  0.1957, -0.1146, -0.1235],\n",
+      "          [ 0.1529, -0.1974,  0.0128, -0.0563,  0.1234]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.0504,  0.0855,  0.1083,  0.1809,  0.0631],\n",
+      "          [-0.1540, -0.1761, -0.1962,  0.1521,  0.1945],\n",
+      "          [ 0.0082, -0.1470,  0.1477,  0.0105,  0.0649],\n",
+      "          [-0.0417, -0.0348,  0.1127,  0.1458, -0.0528],\n",
+      "          [ 0.0503, -0.0565, -0.1026, -0.1498, -0.1100]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.0269, -0.0011,  0.1104,  0.0586,  0.1700],\n",
+      "          [ 0.0510,  0.1185, -0.0363,  0.1386,  0.0394],\n",
+      "          [-0.1133, -0.0371,  0.0734,  0.0324,  0.0490],\n",
+      "          [ 0.1369, -0.1887,  0.0128, -0.1641, -0.1880],\n",
+      "          [-0.1801, -0.1711,  0.0953,  0.0019, -0.0155]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.0658,  0.1422, -0.0990,  0.0745, -0.0602],\n",
+      "          [ 0.1194,  0.1782,  0.1857, -0.1421,  0.1797],\n",
+      "          [ 0.1318,  0.1498,  0.0598, -0.0296,  0.1046],\n",
+      "          [ 0.1479,  0.0303,  0.0832,  0.0793, -0.1085],\n",
+      "          [-0.0348, -0.0243,  0.1281,  0.1019, -0.1861]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.0127,  0.0643, -0.0695, -0.1715,  0.1027],\n",
+      "          [ 0.0106,  0.0895, -0.0900,  0.1267, -0.1861],\n",
+      "          [ 0.0575, -0.0293, -0.0502,  0.0449,  0.0972],\n",
+      "          [ 0.1639,  0.0922,  0.0754,  0.0992,  0.1333],\n",
+      "          [-0.1010, -0.1987, -0.1987,  0.0979,  0.0844]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.0595,  0.1274,  0.0035, -0.1782,  0.0618],\n",
+      "          [-0.1258,  0.1920, -0.1004, -0.1887,  0.1253],\n",
+      "          [ 0.0305, -0.0963,  0.1010, -0.1703, -0.0220],\n",
+      "          [-0.0885,  0.1817,  0.1438, -0.0833, -0.0235],\n",
+      "          [-0.0957, -0.1052, -0.0988,  0.1519,  0.1797]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.0704, -0.1125,  0.1092,  0.0502, -0.1922],\n",
+      "          [ 0.1264, -0.1142, -0.0028,  0.1783,  0.1064],\n",
+      "          [ 0.0479,  0.0609,  0.0481, -0.1642,  0.1164],\n",
+      "          [-0.0078,  0.1299, -0.0604, -0.1085, -0.1817],\n",
+      "          [-0.1847,  0.0150,  0.0267, -0.0448,  0.1085]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.1162, -0.1187, -0.0052, -0.1902,  0.1876],\n",
+      "          [-0.0629, -0.1870,  0.1811,  0.1169,  0.0902],\n",
+      "          [ 0.1260,  0.1220, -0.0269,  0.1645, -0.0277],\n",
+      "          [ 0.0844, -0.1716, -0.1790, -0.1351, -0.1734],\n",
+      "          [-0.1917, -0.0923,  0.1367,  0.0649, -0.1088]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.0812,  0.0060,  0.1412, -0.1781, -0.1559],\n",
+      "          [ 0.1968,  0.0077, -0.1668, -0.0187,  0.0243],\n",
+      "          [ 0.0039, -0.1839,  0.0851,  0.0685,  0.0555],\n",
+      "          [-0.1985,  0.0410,  0.1378,  0.0668,  0.1061],\n",
+      "          [-0.1742, -0.1719, -0.0100, -0.1634,  0.1688]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1012, -0.1973, -0.0757,  0.0054, -0.1555],\n",
+      "          [-0.1071, -0.1538, -0.0328,  0.0623, -0.1842],\n",
+      "          [ 0.1411, -0.1391,  0.0815, -0.0975,  0.0353],\n",
+      "          [ 0.0047,  0.0009,  0.0916,  0.0259, -0.0072],\n",
+      "          [-0.0594, -0.0094, -0.0396, -0.1560, -0.1354]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.0084, -0.1336, -0.0328, -0.1315,  0.0229],\n",
+      "          [-0.1683, -0.0804, -0.1505,  0.1407,  0.0267],\n",
+      "          [-0.1622, -0.1326,  0.1872, -0.0500, -0.0283],\n",
+      "          [ 0.0816, -0.1468, -0.1670,  0.0517,  0.0871],\n",
+      "          [ 0.0952,  0.1328,  0.1915,  0.0444, -0.0996]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1080, -0.0201,  0.1742, -0.1997, -0.0529],\n",
+      "          [ 0.0494,  0.0338, -0.0606,  0.1981,  0.1089],\n",
+      "          [ 0.1071,  0.0330,  0.0973,  0.1393,  0.1783],\n",
+      "          [-0.0267,  0.0777,  0.0048, -0.1587, -0.0907],\n",
+      "          [ 0.1901,  0.0947,  0.0467, -0.0415, -0.1970]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.0452, -0.1996, -0.0107, -0.1986,  0.0665],\n",
+      "          [-0.0549, -0.0272, -0.0993, -0.0788, -0.1093],\n",
+      "          [-0.0612,  0.1818,  0.1108, -0.1628,  0.0810],\n",
+      "          [-0.0778, -0.0030,  0.1858, -0.0210, -0.0162],\n",
+      "          [-0.1393,  0.1149,  0.0684, -0.1721,  0.0747]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1577, -0.0780,  0.1825, -0.1546,  0.0453],\n",
+      "          [ 0.1300,  0.1881,  0.1711,  0.0382, -0.1831],\n",
+      "          [-0.1404,  0.1899, -0.0056, -0.0250,  0.1982],\n",
+      "          [ 0.0568,  0.0955, -0.1767, -0.1165, -0.1990],\n",
+      "          [ 0.0861, -0.0023,  0.1161,  0.0518,  0.0527]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.1428,  0.1669, -0.1795, -0.1235,  0.1853],\n",
+      "          [ 0.0413,  0.1310, -0.1435,  0.1138,  0.1319],\n",
+      "          [ 0.0111,  0.1122,  0.0705, -0.1176,  0.0823],\n",
+      "          [ 0.1546, -0.1581, -0.0103,  0.1821, -0.1248],\n",
+      "          [-0.0897,  0.1802, -0.1877, -0.0283,  0.0269]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.0465,  0.0382, -0.1681,  0.1968,  0.1778],\n",
+      "          [-0.1720, -0.1210,  0.0393, -0.1669,  0.0734],\n",
+      "          [-0.0806,  0.1679, -0.1045, -0.0793, -0.1499],\n",
+      "          [ 0.1467,  0.0118,  0.1104, -0.0798, -0.0674],\n",
+      "          [-0.0927, -0.1603,  0.0296,  0.1935,  0.1357]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.1372, -0.1376, -0.0391, -0.0653,  0.0170],\n",
+      "          [-0.0567, -0.1158, -0.1480, -0.1212,  0.1692],\n",
+      "          [ 0.0937, -0.1809, -0.0567,  0.0506,  0.0525],\n",
+      "          [ 0.0562, -0.0614, -0.0638,  0.0013, -0.1509],\n",
+      "          [ 0.0072, -0.1710,  0.0440, -0.0052,  0.0619]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1553,  0.1425, -0.0342,  0.1451,  0.1473],\n",
+      "          [ 0.0821,  0.0459,  0.1424, -0.0007,  0.1109],\n",
+      "          [-0.0524, -0.1669,  0.1309,  0.0343,  0.1138],\n",
+      "          [-0.1504, -0.1105,  0.0658,  0.1788,  0.1652],\n",
+      "          [ 0.0788, -0.1481,  0.0193, -0.1642,  0.0172]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.1332,  0.0695,  0.0875, -0.0600,  0.0634],\n",
+      "          [ 0.1104, -0.1614, -0.1218,  0.0620, -0.1297],\n",
+      "          [-0.1277, -0.0552,  0.1227,  0.1109, -0.1536],\n",
+      "          [-0.0766,  0.0457,  0.1940,  0.1842,  0.0971],\n",
+      "          [-0.0082, -0.1101,  0.1115, -0.1290, -0.0865]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1299, -0.1915,  0.1634,  0.0493,  0.0566],\n",
+      "          [ 0.0344,  0.1512,  0.0135, -0.1777, -0.0895],\n",
+      "          [ 0.1464, -0.0986, -0.0579,  0.0195, -0.1212],\n",
+      "          [ 0.1409,  0.1441,  0.1242,  0.0188,  0.0894],\n",
+      "          [-0.1126,  0.1645, -0.1230, -0.1590, -0.1124]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.1555, -0.1926, -0.1191,  0.1222, -0.0974],\n",
+      "          [ 0.1644,  0.0862, -0.0143, -0.1701, -0.1995],\n",
+      "          [-0.1539,  0.1057, -0.1307,  0.1557, -0.0340],\n",
+      "          [-0.0129, -0.1164, -0.1295,  0.1095, -0.0290],\n",
+      "          [ 0.1101, -0.1810,  0.1917, -0.1686,  0.0950]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1690,  0.0568, -0.1637,  0.0730, -0.0367],\n",
+      "          [ 0.0448, -0.1867, -0.0437, -0.0910,  0.1377],\n",
+      "          [-0.1711, -0.1999,  0.1172, -0.0130, -0.0112],\n",
+      "          [-0.0746, -0.1525,  0.0172, -0.0057, -0.0764],\n",
+      "          [-0.1980,  0.0976,  0.0478, -0.1308,  0.1491]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.1074, -0.0291, -0.1445,  0.0290, -0.0274],\n",
+      "          [ 0.0074,  0.0617,  0.1186,  0.0061, -0.1832],\n",
+      "          [ 0.1208, -0.0598, -0.0865, -0.0370,  0.0106],\n",
+      "          [ 0.0883, -0.1854,  0.1796, -0.1775,  0.1580],\n",
+      "          [ 0.1663, -0.0505, -0.0670,  0.0409,  0.0367]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.0615,  0.0207,  0.1398,  0.0686, -0.0128],\n",
+      "          [ 0.0773,  0.1971,  0.1021, -0.0893,  0.0709],\n",
+      "          [-0.1577,  0.0466, -0.1612,  0.1785,  0.1602],\n",
+      "          [-0.0374,  0.0311,  0.1518,  0.1529, -0.0059],\n",
+      "          [ 0.0086, -0.1915,  0.0763, -0.1900,  0.0979]]],\n",
+      "\n",
+      "\n",
+      "        [[[-0.1677, -0.0145, -0.1689, -0.0102, -0.1434],\n",
+      "          [-0.1832,  0.1788, -0.1699, -0.0041, -0.1157],\n",
+      "          [-0.1086, -0.0799, -0.0506, -0.1963,  0.1544],\n",
+      "          [ 0.1940,  0.0519,  0.1506, -0.1696, -0.0159],\n",
+      "          [ 0.0024,  0.0046,  0.0818,  0.1044, -0.0604]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 0.0605, -0.0014,  0.1496, -0.0587,  0.0858],\n",
+      "          [-0.1680, -0.0135,  0.0629,  0.1832,  0.1535],\n",
+      "          [-0.0072, -0.0376, -0.0897,  0.1623, -0.0962],\n",
+      "          [-0.0958, -0.1683,  0.0390, -0.0637,  0.0455],\n",
+      "          [ 0.1662,  0.1725,  0.1976, -0.0250, -0.0974]]]])), ('conv1.bias', tensor([ 0.1412, -0.1699, -0.0253, -0.1142,  0.0345, -0.1778,  0.0337, -0.1811,\n",
+      "         0.0301, -0.0841, -0.1326, -0.0041,  0.1206, -0.1253, -0.0549,  0.1375,\n",
+      "         0.1011, -0.0645, -0.1874,  0.0055, -0.0208,  0.0685,  0.0626, -0.0987,\n",
+      "        -0.0448, -0.0284,  0.1807,  0.0769,  0.0155,  0.0411, -0.1243, -0.0014])), ('conv2.weight', tensor([[[[ 3.2746e-02,  7.6064e-03,  3.3012e-02, -2.6875e-02, -1.6692e-02],\n",
+      "          [-1.9286e-02, -6.8511e-03, -1.4456e-02, -8.0592e-03, -3.1047e-02],\n",
+      "          [-2.7445e-02,  3.1905e-02, -1.9314e-02, -2.7730e-02,  2.0723e-02],\n",
+      "          [ 3.1894e-02,  2.0955e-02, -2.2974e-02,  1.7649e-02,  1.6758e-02],\n",
+      "          [ 1.2061e-02,  3.0052e-02,  3.3479e-02, -5.7044e-03,  2.5757e-02]],\n",
+      "\n",
+      "         [[ 1.4391e-02, -1.5190e-02, -1.0179e-03,  2.7308e-02,  2.1345e-02],\n",
+      "          [-2.1532e-02,  1.9428e-03, -1.1062e-03,  2.1827e-02,  2.8505e-02],\n",
+      "          [ 3.4529e-02,  3.2408e-02,  9.7295e-03,  9.3658e-03,  6.2646e-03],\n",
+      "          [ 1.5906e-02,  1.4007e-02, -3.4417e-02,  2.2925e-02, -3.3685e-03],\n",
+      "          [-8.7568e-03,  1.2605e-02, -2.5771e-02, -2.2213e-02, -2.3717e-02]],\n",
+      "\n",
+      "         [[-2.9527e-02,  2.2819e-02, -7.3266e-04, -5.2441e-03, -1.8673e-02],\n",
+      "          [-2.0790e-02,  2.8179e-02,  1.4795e-02,  2.2660e-02,  1.6540e-02],\n",
+      "          [ 2.0379e-02, -2.2184e-02, -2.1391e-02, -2.8546e-02,  1.2025e-02],\n",
+      "          [-1.6028e-02, -2.5776e-02,  2.8277e-03,  1.8941e-02, -1.7032e-02],\n",
+      "          [-2.0459e-02,  3.2729e-02, -3.4816e-02,  2.6955e-02,  1.1083e-02]],\n",
+      "\n",
+      "         ...,\n",
+      "\n",
+      "         [[ 2.0854e-03,  8.9433e-03, -3.4360e-02,  2.9036e-02, -1.2978e-02],\n",
+      "          [ 2.2407e-02,  8.8171e-03,  1.4031e-02,  3.2900e-02,  3.5173e-02],\n",
+      "          [-2.0740e-03,  1.1162e-02,  3.1859e-02, -1.1679e-02, -3.2770e-03],\n",
+      "          [-1.5003e-02,  8.3509e-03, -2.1289e-02, -1.8160e-02, -1.7401e-02],\n",
+      "          [ 2.8564e-03,  2.9883e-02, -1.2668e-02,  8.0667e-04,  3.4512e-02]],\n",
+      "\n",
+      "         [[ 2.4441e-02, -3.2026e-02,  3.4663e-02,  1.3297e-02, -1.9757e-02],\n",
+      "          [-1.9587e-02,  9.0344e-03, -2.2241e-02, -1.1374e-02, -3.2283e-02],\n",
+      "          [ 5.7302e-03,  2.9798e-02,  1.0315e-02, -2.8048e-02,  1.4863e-03],\n",
+      "          [-2.0083e-02, -3.0710e-03, -3.4549e-02,  2.3184e-02, -9.9700e-03],\n",
+      "          [-1.0007e-02,  2.3101e-02,  1.5020e-02, -1.0336e-02, -1.8888e-03]],\n",
+      "\n",
+      "         [[ 1.8208e-02, -1.9901e-02,  3.0093e-02,  1.9968e-02,  7.0317e-03],\n",
+      "          [-3.3956e-02, -1.7922e-03, -1.4408e-02,  2.8461e-02,  7.6843e-03],\n",
+      "          [-1.1414e-02,  2.6077e-02, -2.3152e-02,  8.8792e-03, -2.0675e-02],\n",
+      "          [ 1.4362e-02,  5.4677e-03, -2.9708e-02,  3.0239e-02, -3.1256e-02],\n",
+      "          [-8.4240e-03, -2.9612e-02,  6.7951e-03,  7.8364e-03,  3.2977e-02]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 9.4418e-03,  3.2786e-03, -1.2435e-02,  1.5070e-02, -1.8267e-03],\n",
+      "          [ 1.6058e-03, -9.9090e-03, -1.7479e-02,  1.5799e-02, -1.9801e-03],\n",
+      "          [ 1.5065e-02, -2.1835e-02,  2.9958e-03, -2.2055e-02,  1.7255e-02],\n",
+      "          [-2.4921e-02, -2.3748e-02,  7.5943e-03, -2.8805e-02,  2.4922e-03],\n",
+      "          [-3.1805e-02, -2.5896e-02, -1.7868e-02,  2.7961e-02, -1.2373e-02]],\n",
+      "\n",
+      "         [[-2.6565e-02,  3.5746e-03, -2.2760e-02, -6.0303e-03, -3.2547e-02],\n",
+      "          [-2.1761e-02,  1.7825e-02,  3.4372e-03,  2.1411e-02,  1.0314e-02],\n",
+      "          [ 1.2855e-02, -1.7095e-02, -3.3342e-02, -2.0678e-02, -1.1955e-02],\n",
+      "          [-6.1599e-03, -1.7464e-02,  4.1114e-03,  1.0711e-02,  3.1798e-02],\n",
+      "          [-1.3857e-02,  9.0615e-03, -6.9174e-03, -3.3586e-02,  1.9395e-02]],\n",
+      "\n",
+      "         [[-3.0132e-02, -2.2624e-03, -5.9316e-03, -1.7227e-02, -2.4533e-02],\n",
+      "          [-6.2100e-03, -2.3675e-02,  3.0786e-02,  7.8731e-03,  2.2696e-03],\n",
+      "          [-3.3538e-02,  2.7875e-02, -1.9615e-02,  1.6261e-02,  1.3296e-04],\n",
+      "          [-3.4132e-02, -2.4884e-02,  2.0227e-02,  1.8549e-02, -8.0078e-03],\n",
+      "          [-1.4182e-03,  2.7721e-02, -1.1709e-02, -1.0164e-02,  1.3831e-02]],\n",
+      "\n",
+      "         ...,\n",
+      "\n",
+      "         [[ 1.5085e-02,  2.1404e-02,  1.1670e-02,  7.9414e-03, -2.3269e-02],\n",
+      "          [ 3.1390e-03, -1.9571e-02,  1.7058e-02, -2.1079e-02,  1.1395e-02],\n",
+      "          [-1.1528e-02,  2.1676e-02,  3.0260e-02, -8.6194e-03, -3.5215e-02],\n",
+      "          [ 1.2097e-02,  1.3447e-02, -3.0891e-02, -3.1753e-02,  2.9082e-03],\n",
+      "          [ 2.6964e-02, -1.8573e-02, -1.7564e-02, -3.2200e-02,  1.8055e-02]],\n",
+      "\n",
+      "         [[ 1.4695e-02, -2.5493e-02,  1.1962e-02, -3.4501e-02, -2.8435e-02],\n",
+      "          [-2.0480e-02,  1.4531e-03,  2.4348e-02,  2.9468e-02, -2.0317e-02],\n",
+      "          [-1.7271e-02,  3.5342e-03, -1.6577e-03,  3.0479e-02,  7.5468e-03],\n",
+      "          [-4.8140e-03,  1.0219e-02,  3.2605e-02,  9.3662e-03,  1.7923e-02],\n",
+      "          [ 6.7177e-03, -2.4020e-02, -9.6501e-03, -6.1049e-03, -1.5764e-02]],\n",
+      "\n",
+      "         [[-1.1772e-02,  2.4333e-03,  3.3412e-03, -2.2287e-02,  3.3003e-02],\n",
+      "          [ 7.7133e-03, -2.8402e-02,  3.0503e-02,  2.0268e-02, -2.8774e-02],\n",
+      "          [ 3.2205e-02,  4.7889e-03,  1.4656e-02,  9.9381e-03,  5.1627e-03],\n",
+      "          [ 7.8195e-03,  2.9291e-02, -1.8244e-02, -2.9129e-03,  3.4969e-02],\n",
+      "          [ 1.3522e-02,  1.6393e-02,  3.0487e-02, -1.7014e-02, -1.7204e-02]]],\n",
+      "\n",
+      "\n",
+      "        [[[-2.2435e-02,  3.2695e-02,  1.8033e-03, -1.2957e-02, -1.8227e-02],\n",
+      "          [-2.0660e-02,  1.8752e-02,  1.9233e-02, -1.0020e-02, -2.7806e-03],\n",
+      "          [ 1.5691e-03, -1.5605e-02,  2.6992e-02, -3.3455e-02,  1.6912e-02],\n",
+      "          [ 7.3307e-03, -2.2232e-02, -2.6121e-02, -2.3932e-03,  2.7684e-02],\n",
+      "          [ 3.3649e-02, -5.1965e-03, -1.5039e-02,  3.5366e-03,  3.0508e-02]],\n",
+      "\n",
+      "         [[ 2.0061e-02,  1.9717e-02,  1.0357e-02, -3.3255e-02,  9.8102e-03],\n",
+      "          [ 1.7618e-02,  2.4140e-02,  7.0476e-03, -3.2115e-02, -7.6617e-03],\n",
+      "          [-8.2441e-03, -1.5926e-02, -2.5963e-02, -2.6432e-02,  2.3809e-02],\n",
+      "          [ 2.5385e-03, -9.1865e-04, -1.2525e-02,  2.9783e-02,  3.4802e-02],\n",
+      "          [ 3.4328e-02,  2.5756e-02, -2.1410e-02, -2.0238e-02, -2.1875e-02]],\n",
+      "\n",
+      "         [[-9.3015e-03,  1.4058e-02, -1.1882e-02,  3.3075e-02,  3.4996e-02],\n",
+      "          [-7.9394e-03,  3.2237e-02, -2.6205e-02, -3.0383e-02, -7.0993e-03],\n",
+      "          [ 2.0615e-02, -1.4620e-02, -3.2926e-02, -3.1128e-02, -2.8229e-02],\n",
+      "          [ 2.4899e-03,  8.9844e-03, -3.4723e-02,  8.2829e-03,  8.7329e-03],\n",
+      "          [ 2.8381e-02,  3.2110e-02, -2.0183e-03, -1.4615e-02, -9.5140e-03]],\n",
+      "\n",
+      "         ...,\n",
+      "\n",
+      "         [[ 2.5843e-02, -2.7146e-02,  3.1365e-02, -1.7570e-02, -1.1656e-02],\n",
+      "          [ 2.4452e-02, -2.9268e-02,  2.2156e-02, -2.0007e-02,  1.2864e-02],\n",
+      "          [ 2.2081e-02,  4.4346e-03, -3.3851e-02, -2.2446e-02, -2.9914e-02],\n",
+      "          [-1.3931e-02, -1.0571e-02, -1.9827e-02, -8.4832e-03, -4.6840e-04],\n",
+      "          [ 3.3050e-03,  2.9839e-02,  2.3548e-02,  1.8797e-02,  2.3927e-02]],\n",
+      "\n",
+      "         [[ 6.0766e-03, -2.1119e-02, -7.4612e-03, -2.8573e-02, -1.1375e-02],\n",
+      "          [-2.1335e-02,  6.7210e-03, -1.2251e-02, -1.0163e-03, -6.8753e-03],\n",
+      "          [-1.0076e-02, -2.1910e-03,  5.1250e-04, -5.3031e-03, -7.5937e-03],\n",
+      "          [-2.6741e-03, -3.4738e-02,  3.1672e-02, -2.4893e-02, -3.3263e-02],\n",
+      "          [-1.1028e-02,  1.9241e-02,  1.6009e-02,  2.4161e-02,  3.3235e-02]],\n",
+      "\n",
+      "         [[ 7.0783e-03, -1.9811e-02, -8.6785e-03, -3.4500e-02,  1.2150e-02],\n",
+      "          [-7.2774e-03,  2.2635e-03,  3.5135e-02, -3.3153e-03, -1.7127e-02],\n",
+      "          [ 1.1098e-02,  1.1369e-02, -3.5151e-03, -1.8415e-02,  7.1177e-03],\n",
+      "          [ 7.1935e-03, -2.6246e-02, -1.0526e-02, -2.6759e-02, -4.7185e-03],\n",
+      "          [-2.3434e-02, -4.3492e-03, -4.9457e-03, -2.1908e-02,  7.1825e-03]]],\n",
+      "\n",
+      "\n",
+      "        ...,\n",
+      "\n",
+      "\n",
+      "        [[[ 2.1287e-02, -1.8313e-02, -3.6076e-03, -6.2449e-03, -2.4652e-02],\n",
+      "          [ 8.9968e-03, -1.1765e-02, -2.1595e-02, -2.4103e-02,  6.7955e-03],\n",
+      "          [ 3.9301e-03, -3.0373e-02,  3.2183e-02,  3.5264e-02, -2.2304e-03],\n",
+      "          [-3.9002e-03, -4.5479e-04, -1.1849e-02,  7.2274e-03,  4.6744e-03],\n",
+      "          [ 2.6520e-02, -1.4180e-02, -3.4668e-02,  1.5128e-02, -3.3632e-02]],\n",
+      "\n",
+      "         [[ 1.8598e-02,  1.4959e-02, -2.9480e-02,  1.9813e-02, -1.5348e-02],\n",
+      "          [ 6.2970e-03, -3.1894e-02, -1.5896e-03, -2.4380e-02,  9.9467e-03],\n",
+      "          [-3.0277e-02, -2.7341e-02,  3.4734e-02,  6.8040e-03,  3.2219e-02],\n",
+      "          [-2.4927e-03, -2.5790e-03, -5.7664e-03, -3.2622e-02, -3.3634e-02],\n",
+      "          [ 2.0730e-02, -2.5132e-02, -2.6545e-02, -1.1005e-02,  2.8195e-02]],\n",
+      "\n",
+      "         [[ 2.6250e-02,  7.9877e-03, -1.8213e-02,  1.4875e-02, -1.2586e-02],\n",
+      "          [ 3.4744e-03, -8.0666e-04,  2.5727e-02,  2.8350e-02, -9.4837e-03],\n",
+      "          [ 1.4090e-02, -1.2686e-02, -1.7193e-02,  3.3702e-02, -1.3203e-02],\n",
+      "          [-1.9251e-02, -2.0643e-02, -3.4949e-02, -6.2629e-03, -1.9547e-02],\n",
+      "          [-1.9111e-02,  4.1030e-03, -2.7258e-02, -1.1742e-02,  1.5548e-02]],\n",
+      "\n",
+      "         ...,\n",
+      "\n",
+      "         [[-2.5090e-03,  4.7538e-03,  7.9407e-03, -2.2791e-02,  2.1788e-03],\n",
+      "          [-4.9433e-03,  3.1922e-02, -3.1142e-02,  1.4006e-02, -7.7551e-03],\n",
+      "          [ 2.1749e-02,  5.9137e-03, -1.1533e-02, -1.6676e-02, -3.5265e-03],\n",
+      "          [ 3.1718e-02,  1.0119e-02,  3.2395e-02,  3.3945e-02,  4.8077e-03],\n",
+      "          [-1.1578e-02, -2.0632e-02,  2.7696e-02,  3.2618e-02,  9.7284e-03]],\n",
+      "\n",
+      "         [[ 1.8375e-02, -9.7233e-05,  1.8388e-02, -2.9518e-02,  3.9843e-03],\n",
+      "          [-1.9700e-02,  3.2218e-03,  2.4047e-02, -3.0775e-02,  1.4493e-02],\n",
+      "          [-9.0917e-03, -7.6246e-03, -1.3552e-02,  2.6074e-03,  2.4428e-02],\n",
+      "          [ 2.7959e-02,  2.8538e-02,  1.4753e-02, -1.2307e-02, -2.6018e-02],\n",
+      "          [-3.3357e-02,  3.3910e-02,  1.0897e-02,  2.8469e-02, -2.6521e-02]],\n",
+      "\n",
+      "         [[-3.1437e-02, -3.0936e-02,  2.0549e-02,  2.5189e-02,  5.8238e-03],\n",
+      "          [ 1.3889e-02, -2.7012e-02,  3.3450e-02, -1.3303e-02, -2.2165e-02],\n",
+      "          [ 2.1920e-02, -2.0136e-02, -7.9523e-03, -1.1588e-02, -2.8461e-02],\n",
+      "          [-5.5698e-03, -9.2438e-03,  4.1570e-04, -1.8359e-02,  1.9532e-02],\n",
+      "          [ 2.0134e-02,  8.2159e-03, -2.3395e-02,  7.6182e-03,  2.7166e-02]]],\n",
+      "\n",
+      "\n",
+      "        [[[-7.3934e-03, -1.0176e-02, -9.7839e-03, -4.7201e-03,  2.9347e-02],\n",
+      "          [ 2.2820e-02, -2.3556e-02,  3.1363e-02,  3.1633e-02,  1.2403e-02],\n",
+      "          [ 1.8365e-02,  1.9939e-02, -1.0798e-02,  1.4977e-02, -2.4530e-02],\n",
+      "          [-2.7912e-02,  1.9863e-02,  1.0049e-02,  1.4724e-02,  1.2780e-02],\n",
+      "          [ 4.0170e-03, -3.3140e-02, -2.9632e-02,  1.4946e-03, -1.6940e-02]],\n",
+      "\n",
+      "         [[-3.4747e-02, -5.2359e-03, -1.5862e-02,  2.6807e-02, -5.9706e-03],\n",
+      "          [ 2.7407e-02, -1.0718e-02, -1.4837e-02, -3.1179e-02, -1.7709e-02],\n",
+      "          [-1.3655e-02, -2.1498e-02,  2.8826e-02,  2.5957e-02, -2.4366e-02],\n",
+      "          [ 1.4200e-02, -1.4852e-02, -4.7653e-03,  2.4253e-02, -1.6041e-02],\n",
+      "          [-4.7325e-03,  2.8462e-02, -5.8148e-03, -2.6908e-02, -2.0238e-02]],\n",
+      "\n",
+      "         [[ 4.9883e-03,  8.7387e-03,  1.6713e-02, -1.0209e-02, -1.0910e-03],\n",
+      "          [ 2.6915e-02, -2.4194e-02,  2.7620e-02,  2.2118e-02, -2.5813e-02],\n",
+      "          [-8.1892e-03, -2.0470e-02, -1.1753e-02, -1.0251e-02,  2.4059e-02],\n",
+      "          [-3.1399e-03,  3.1092e-02,  1.7936e-02, -2.1981e-02,  2.5822e-02],\n",
+      "          [ 1.9193e-02,  9.7368e-03,  2.6554e-02, -2.7229e-02,  1.5611e-02]],\n",
+      "\n",
+      "         ...,\n",
+      "\n",
+      "         [[ 2.5990e-02,  1.8204e-03,  6.3907e-04,  1.3599e-02, -2.4928e-02],\n",
+      "          [-4.0177e-03, -9.5758e-03, -3.1354e-02,  3.4710e-02,  1.5811e-02],\n",
+      "          [-1.3928e-02, -5.0035e-03, -8.0641e-03,  1.7689e-03, -3.0916e-02],\n",
+      "          [ 2.2672e-02,  2.5900e-02, -1.4861e-02, -1.9387e-02,  2.4626e-03],\n",
+      "          [ 5.2564e-03, -1.1521e-02,  1.1267e-02,  2.8809e-02,  8.4900e-03]],\n",
+      "\n",
+      "         [[-2.4825e-02,  1.4945e-02,  2.0792e-02, -7.3404e-03, -3.1627e-02],\n",
+      "          [ 2.1001e-02, -1.1632e-02,  1.1063e-02,  5.0528e-03,  1.8288e-02],\n",
+      "          [ 1.8396e-02,  2.4709e-02, -1.8625e-02,  3.1313e-03, -1.7493e-02],\n",
+      "          [ 3.4257e-02, -3.2146e-03,  1.9457e-02,  2.9968e-02,  2.6933e-02],\n",
+      "          [ 2.8540e-02, -1.9069e-02, -8.6731e-03,  6.6561e-03, -7.9887e-03]],\n",
+      "\n",
+      "         [[ 2.0432e-02,  4.1301e-03,  2.8091e-02, -1.5266e-02,  3.8479e-03],\n",
+      "          [-3.0857e-03, -1.9645e-02,  3.2926e-02, -1.6260e-02, -2.0212e-02],\n",
+      "          [ 3.3778e-03, -9.7388e-04, -7.2386e-03, -9.4193e-03, -1.5630e-02],\n",
+      "          [-1.4204e-03, -8.6640e-03,  2.0029e-02, -1.6952e-02,  2.7978e-02],\n",
+      "          [ 1.4138e-02, -1.3769e-02, -2.7078e-02, -5.8826e-03,  2.9882e-02]]],\n",
+      "\n",
+      "\n",
+      "        [[[ 1.2291e-02, -2.2902e-02,  1.1633e-02,  3.4403e-02, -1.1917e-02],\n",
+      "          [ 1.2536e-02, -1.1643e-02, -9.9262e-03,  1.7047e-02, -3.4983e-02],\n",
+      "          [ 8.9901e-03, -3.3618e-02, -8.4233e-03, -5.1072e-04, -8.9520e-04],\n",
+      "          [ 1.3063e-02,  1.5268e-02,  2.8177e-02,  1.2762e-02,  2.4342e-02],\n",
+      "          [-1.6559e-02,  3.3652e-02, -2.4771e-03, -7.7901e-03,  3.9261e-03]],\n",
+      "\n",
+      "         [[-1.7359e-02, -3.0286e-02, -3.1738e-02, -2.5330e-02,  2.6791e-03],\n",
+      "          [-1.6079e-02, -4.5769e-03, -1.9375e-02, -1.4358e-02, -1.4470e-02],\n",
+      "          [-2.2557e-03, -2.9062e-02,  3.2361e-02, -2.0854e-02,  1.3980e-02],\n",
+      "          [ 4.6692e-03, -6.2594e-03, -2.1700e-02,  1.7638e-02, -1.6371e-02],\n",
+      "          [ 1.3422e-02,  2.3067e-03,  2.0222e-02,  8.4460e-03,  1.5446e-02]],\n",
+      "\n",
+      "         [[ 2.7963e-02, -2.2203e-03, -2.0449e-02, -2.6557e-02,  3.4897e-02],\n",
+      "          [ 6.2281e-03,  1.4564e-03, -5.3195e-03, -1.0745e-02, -2.5309e-02],\n",
+      "          [-2.8325e-03, -3.1341e-02,  3.5223e-02,  1.4007e-02,  9.4664e-03],\n",
+      "          [-1.4459e-02,  2.3820e-02,  3.5399e-03,  1.9318e-02, -8.8443e-03],\n",
+      "          [-2.4607e-03,  1.4686e-03, -2.0640e-02, -3.1963e-02,  3.5608e-03]],\n",
+      "\n",
+      "         ...,\n",
+      "\n",
+      "         [[ 3.3729e-02,  1.5060e-02, -1.0339e-02, -3.3869e-02,  9.5173e-03],\n",
+      "          [ 2.9181e-02,  2.6096e-02,  6.5876e-03,  1.4734e-02, -1.3666e-02],\n",
+      "          [ 3.8105e-03,  1.4149e-02, -1.5581e-02, -6.6103e-03,  2.5904e-02],\n",
+      "          [ 1.7985e-02,  3.0942e-02,  1.5265e-02, -1.5719e-02, -6.3216e-03],\n",
+      "          [ 4.6500e-03,  1.2790e-02,  2.9090e-03,  5.3699e-03, -1.4805e-02]],\n",
+      "\n",
+      "         [[-1.0921e-02, -1.9939e-03, -2.8213e-02, -6.9159e-03, -1.5026e-03],\n",
+      "          [ 3.1958e-02,  7.6529e-03, -1.5578e-02, -2.3311e-02, -7.5325e-03],\n",
+      "          [ 9.9005e-03, -1.2741e-02,  2.4803e-02, -1.7379e-04,  2.8831e-02],\n",
+      "          [-2.3304e-02, -1.4651e-02,  2.0540e-03,  6.7600e-03, -2.2979e-02],\n",
+      "          [-2.8824e-02,  2.5435e-02,  2.3059e-02,  2.0000e-03, -2.6226e-02]],\n",
+      "\n",
+      "         [[-3.8041e-03,  1.3903e-02, -2.4387e-02, -6.0695e-03, -1.2511e-02],\n",
+      "          [-2.3270e-02,  1.7635e-02,  9.2290e-03,  3.1794e-02, -1.5929e-03],\n",
+      "          [-3.1804e-02, -1.5838e-02, -7.3459e-03,  1.6185e-02,  2.6591e-02],\n",
+      "          [-7.9933e-03, -2.6467e-03, -1.7165e-02,  1.1167e-02,  1.2200e-02],\n",
+      "          [-2.1517e-02, -1.5859e-02, -2.5180e-02, -1.4661e-02, -2.9686e-02]]]])), ('conv2.bias', tensor([-0.0089, -0.0188, -0.0332,  0.0145,  0.0114,  0.0143, -0.0350,  0.0262,\n",
+      "        -0.0120, -0.0293, -0.0241,  0.0296,  0.0040,  0.0037, -0.0102, -0.0286,\n",
+      "         0.0114,  0.0021,  0.0105,  0.0194,  0.0032, -0.0117,  0.0232,  0.0098,\n",
+      "         0.0349,  0.0020, -0.0103, -0.0307,  0.0153,  0.0227,  0.0066,  0.0023,\n",
+      "        -0.0033,  0.0143, -0.0275,  0.0305,  0.0050, -0.0263, -0.0068,  0.0017,\n",
+      "         0.0258,  0.0263, -0.0047,  0.0063,  0.0233, -0.0141, -0.0251,  0.0072,\n",
+      "         0.0058, -0.0183, -0.0226, -0.0204,  0.0080, -0.0164,  0.0317, -0.0037,\n",
+      "        -0.0171, -0.0219,  0.0041,  0.0267, -0.0242, -0.0056,  0.0006,  0.0317])), ('fc1.weight', tensor([[-0.0071,  0.0033, -0.0022,  ..., -0.0169, -0.0172,  0.0034],\n",
+      "        [ 0.0109, -0.0090,  0.0169,  ...,  0.0074, -0.0104,  0.0056],\n",
+      "        [ 0.0113, -0.0158, -0.0173,  ..., -0.0151, -0.0095,  0.0036],\n",
+      "        ...,\n",
+      "        [-0.0174, -0.0122,  0.0140,  ..., -0.0145, -0.0094,  0.0060],\n",
+      "        [-0.0027,  0.0069, -0.0158,  ..., -0.0118,  0.0147, -0.0022],\n",
+      "        [-0.0161, -0.0009, -0.0035,  ..., -0.0114, -0.0134,  0.0092]])), ('fc1.bias', tensor([ 1.0599e-02, -8.6450e-03, -6.3942e-03, -1.6975e-02,  9.9938e-03,\n",
+      "         1.9097e-03, -1.0315e-02, -1.3646e-02, -8.1271e-03,  9.0041e-03,\n",
+      "        -1.5887e-02, -8.1938e-03,  2.3270e-03,  6.1815e-03,  1.3092e-02,\n",
+      "        -1.6892e-02,  7.6708e-03,  5.4282e-03, -1.5561e-02, -3.7766e-03,\n",
+      "        -1.5642e-02, -8.5728e-03, -8.8577e-03, -3.0399e-03, -8.2830e-04,\n",
+      "         1.0327e-02,  1.3440e-02, -6.5937e-03, -1.1239e-02, -1.4882e-05,\n",
+      "         3.3315e-03,  1.4572e-02,  1.0429e-02,  3.8221e-03,  1.5226e-02,\n",
+      "        -7.9018e-03, -6.1310e-03,  7.9535e-03, -1.7202e-04,  1.1906e-02,\n",
+      "        -1.4496e-03, -5.4891e-03, -1.7822e-02,  4.6960e-03,  2.4820e-03,\n",
+      "         9.9257e-03,  2.6597e-03, -1.6335e-02, -8.0572e-03, -1.6191e-02,\n",
+      "         2.6107e-03, -8.7351e-03,  1.2610e-02, -2.6491e-03,  3.7665e-03,\n",
+      "         1.7175e-02, -6.5901e-03, -9.9649e-03,  2.9988e-03, -1.7338e-02,\n",
+      "         1.6825e-02, -1.1604e-02, -4.9108e-03, -2.1019e-03,  1.2322e-02,\n",
+      "        -8.7332e-03,  1.6764e-02, -1.3749e-02, -2.0282e-03, -1.3290e-03,\n",
+      "         1.3664e-02,  5.7036e-03,  1.5984e-03, -1.0168e-02, -4.8652e-03,\n",
+      "         8.3150e-03,  6.2086e-03,  4.7627e-03,  1.3689e-02,  1.4757e-02,\n",
+      "        -9.3733e-03, -1.5374e-02,  1.5027e-02,  4.3609e-03, -1.0545e-02,\n",
+      "        -5.0889e-03, -1.7105e-02, -1.7145e-02, -1.1442e-02, -6.1340e-03,\n",
+      "         8.5078e-04, -9.6481e-03, -1.3213e-02,  5.9745e-03, -1.1376e-02,\n",
+      "         3.3183e-03,  1.6145e-02,  2.4235e-03,  1.6919e-02,  1.5337e-02,\n",
+      "        -1.1545e-02, -1.0109e-02,  2.0069e-03, -1.6511e-02,  1.3294e-02,\n",
+      "        -1.5669e-02, -3.9068e-03,  1.8742e-03, -9.1673e-03,  1.1506e-03,\n",
+      "        -1.4879e-02,  1.0596e-02, -9.0080e-03,  1.0127e-02, -1.4706e-02,\n",
+      "         1.5415e-02, -1.7710e-02,  1.1429e-02, -1.5419e-02,  6.1092e-03,\n",
+      "        -1.4390e-02,  8.4765e-03,  1.7293e-02, -7.1311e-03, -1.1727e-02,\n",
+      "         7.7789e-03, -1.2567e-03,  6.0136e-04, -1.9898e-04, -4.7073e-04,\n",
+      "        -1.0649e-02, -1.1535e-02,  1.1677e-02,  1.3624e-02,  3.7816e-03,\n",
+      "         1.3092e-02,  8.3147e-03, -4.8131e-03,  7.3444e-03, -4.5568e-03,\n",
+      "        -1.1646e-02,  1.4085e-02,  1.1272e-03,  8.6347e-03,  1.1023e-02,\n",
+      "         5.5445e-04,  1.7230e-03, -3.8121e-03, -1.0967e-02, -4.1310e-04,\n",
+      "         1.1095e-02, -1.0299e-03,  1.7205e-02,  1.4472e-02,  1.2128e-02,\n",
+      "         4.1678e-04,  1.2811e-03,  5.0368e-03,  9.3278e-03, -1.4437e-03,\n",
+      "         4.1266e-03,  1.7662e-02, -1.1016e-02,  1.2045e-02,  1.4821e-02,\n",
+      "         7.7413e-03,  1.6675e-02, -8.9300e-03, -3.0653e-03,  1.1605e-02,\n",
+      "        -1.3406e-02,  6.5672e-03,  1.3058e-02, -1.4200e-02, -3.0637e-03,\n",
+      "         1.7033e-02, -9.3881e-03, -1.0808e-02, -1.7957e-03, -7.1261e-03,\n",
+      "        -7.3204e-03, -8.9633e-03, -8.2413e-03, -5.5158e-03, -1.4663e-02,\n",
+      "         1.4772e-02, -3.0448e-04,  4.8010e-03,  1.1064e-02,  1.1962e-02,\n",
+      "         2.0472e-03,  6.9584e-03,  1.5075e-02,  9.7652e-03, -7.7444e-03,\n",
+      "        -1.0379e-02,  1.1072e-02,  1.4794e-02, -8.4761e-03,  3.5616e-03,\n",
+      "         5.4151e-03,  1.2374e-02,  2.6088e-03,  7.1733e-03,  1.5912e-02,\n",
+      "         1.6955e-02,  1.6708e-02,  1.5722e-02,  1.3790e-02,  7.6082e-03,\n",
+      "        -1.3489e-02, -1.5303e-02, -5.8350e-03,  1.5449e-03, -5.2578e-03,\n",
+      "         8.7357e-03, -3.6394e-03, -1.0066e-02,  6.7846e-03,  3.6722e-03,\n",
+      "         1.6229e-02, -1.2347e-02, -5.3337e-04, -2.2696e-03, -6.3521e-03,\n",
+      "         1.1781e-02, -6.5279e-03,  1.4175e-02, -5.8475e-03,  6.1828e-03,\n",
+      "        -9.1681e-04,  3.0490e-03,  5.3204e-04, -1.6254e-02, -1.4384e-02,\n",
+      "        -1.7404e-02,  1.6214e-02,  1.9150e-03, -1.1529e-02,  1.3483e-02,\n",
+      "         1.4156e-02, -2.2867e-03, -6.3781e-03,  4.9263e-03, -3.1053e-04,\n",
+      "        -1.6139e-02,  1.5538e-02, -1.0906e-02, -5.3594e-04, -1.3852e-02,\n",
+      "         1.4711e-02,  2.2670e-03,  4.6235e-03,  2.2870e-03,  7.4649e-03,\n",
+      "        -1.2044e-02,  5.5126e-03,  3.5019e-03,  1.1637e-02,  1.1617e-02,\n",
+      "         7.1574e-03, -1.1512e-02, -1.4618e-02, -8.2484e-03, -1.4063e-02,\n",
+      "         1.7327e-02, -1.1184e-02, -7.4437e-03,  1.0071e-02,  8.9861e-03,\n",
+      "         1.1324e-02, -1.5934e-03,  2.1947e-03, -9.0690e-03, -1.3777e-02,\n",
+      "         1.7074e-02, -1.9567e-03, -9.5734e-03,  9.2282e-03, -1.4792e-02,\n",
+      "        -6.4323e-03,  1.5154e-02,  7.2124e-04,  1.0871e-02, -4.0281e-04,\n",
+      "         1.4245e-02,  9.4177e-03,  1.7151e-02,  1.5486e-02, -1.4988e-02,\n",
+      "         3.8895e-03,  1.7496e-02,  7.9678e-03,  6.3199e-03, -5.1412e-03,\n",
+      "        -1.4427e-02, -6.3759e-03, -7.7217e-03, -3.6173e-03,  9.7687e-03,\n",
+      "         6.5320e-03, -1.5863e-02, -1.7733e-02,  1.7184e-03,  6.4424e-03,\n",
+      "        -8.6543e-03, -1.2671e-02, -1.2172e-02,  1.1991e-02,  9.9203e-03,\n",
+      "         3.5955e-03, -1.7822e-02,  1.6026e-02, -3.1429e-03, -1.7016e-02,\n",
+      "         1.4367e-02, -9.1945e-03, -4.3555e-03,  8.2159e-04, -1.3901e-02,\n",
+      "        -2.2414e-03,  1.4850e-02,  7.1511e-03,  1.5343e-02, -1.6178e-02,\n",
+      "        -4.6269e-04,  6.5761e-03,  1.3020e-02,  1.4293e-02,  2.2813e-03,\n",
+      "        -1.8343e-04, -1.1863e-04,  3.0676e-03,  6.7629e-03, -6.4086e-03,\n",
+      "        -9.7947e-04,  1.3532e-02,  1.1120e-02, -2.1384e-03, -1.5998e-02,\n",
+      "        -9.3370e-03, -1.2929e-02,  1.7011e-02, -7.5513e-03,  5.1005e-03,\n",
+      "         1.2512e-02, -1.7234e-02, -6.6031e-03,  1.3586e-02,  1.7239e-02,\n",
+      "        -7.2807e-03, -1.1572e-02,  1.1847e-02, -7.7931e-03,  1.5670e-02,\n",
+      "         1.0587e-02,  1.4296e-02, -1.4467e-02,  1.6331e-02, -9.5893e-03,\n",
+      "         8.7760e-03,  7.2743e-03, -1.6325e-02, -4.1914e-03, -1.2139e-02,\n",
+      "        -1.7660e-02, -1.2324e-02, -5.3574e-03,  9.9540e-03, -1.7179e-02,\n",
+      "        -4.4341e-03, -7.3961e-03, -5.9505e-04, -6.9846e-03, -1.4863e-02,\n",
+      "         3.9704e-03, -4.7873e-03,  1.7023e-02, -9.8130e-03,  1.5630e-02,\n",
+      "        -4.6168e-03,  2.2979e-03,  7.6713e-03, -3.7443e-03,  6.2625e-03,\n",
+      "        -1.6561e-02, -1.0608e-02, -1.3025e-02, -1.6942e-02,  1.1578e-02,\n",
+      "        -2.6205e-03,  7.7174e-03, -1.2539e-02, -2.3341e-03, -1.2879e-02,\n",
+      "         1.5701e-03, -1.7168e-02,  1.6907e-02,  9.3912e-03, -6.4490e-03,\n",
+      "         1.3089e-02, -1.4512e-02,  4.5919e-03,  3.6777e-03, -2.7840e-03,\n",
+      "        -8.8337e-03,  1.0651e-02, -1.1922e-02, -1.6116e-02, -1.5656e-02,\n",
+      "        -3.0819e-03, -5.2202e-03,  8.2204e-03,  1.6060e-02,  1.5273e-02,\n",
+      "        -4.3923e-03,  1.3097e-02,  1.4972e-02, -9.9531e-03, -9.2048e-03,\n",
+      "        -1.6382e-02,  7.7698e-03,  1.3846e-02,  3.7389e-03,  1.1245e-02,\n",
+      "        -5.0212e-04, -6.9064e-03,  1.6954e-02,  7.3107e-03,  1.5068e-02,\n",
+      "         3.0488e-03,  1.1133e-02,  5.2214e-04, -5.8749e-03, -1.2952e-02,\n",
+      "        -5.6751e-03, -7.3391e-03,  4.9272e-03, -8.1905e-03, -1.7420e-02,\n",
+      "        -9.3297e-03,  7.1031e-03,  2.3575e-03, -9.6408e-03,  1.6551e-02,\n",
+      "        -4.2959e-03,  1.6254e-02,  1.4611e-02, -1.5338e-02,  2.7388e-03,\n",
+      "        -5.6932e-03, -4.8516e-03, -1.5052e-02, -1.0833e-02,  3.0114e-03,\n",
+      "         1.7360e-02,  1.6522e-02,  8.9507e-03, -1.7579e-02, -1.5005e-02,\n",
+      "        -6.6246e-03, -4.3380e-03,  4.9442e-03, -6.8804e-03,  7.1063e-03,\n",
+      "        -4.3328e-03, -5.7675e-03, -7.0120e-03, -1.2138e-02, -1.4318e-02,\n",
+      "        -1.2090e-02,  1.6474e-02,  1.5264e-02, -1.3311e-02,  1.5019e-02,\n",
+      "        -1.0184e-02,  1.3452e-02, -4.7364e-03, -1.2686e-02, -1.0105e-03,\n",
+      "        -7.7642e-03,  1.0269e-02,  1.4772e-02,  2.0888e-03,  1.0636e-02,\n",
+      "         7.9315e-03,  6.5338e-03, -6.3965e-03,  9.0090e-03, -3.8823e-03,\n",
+      "         1.7116e-02, -1.3396e-02, -1.6212e-02,  5.8403e-03, -1.7172e-02,\n",
+      "         1.3479e-02, -4.3699e-03, -7.0589e-03,  1.1175e-02,  1.7116e-02,\n",
+      "         1.2828e-02,  7.4169e-03,  8.4769e-03, -1.2264e-02,  1.6118e-02,\n",
+      "         7.7984e-03, -2.0431e-03,  2.3805e-03, -1.7833e-02, -9.6818e-03,\n",
+      "        -7.6913e-03, -1.3305e-02])), ('fc2.weight', tensor([[-0.0175,  0.0319,  0.0240,  ..., -0.0283, -0.0260,  0.0342],\n",
+      "        [ 0.0135, -0.0069, -0.0351,  ...,  0.0021, -0.0435, -0.0082],\n",
+      "        [-0.0023,  0.0039,  0.0404,  ...,  0.0216,  0.0299, -0.0086],\n",
+      "        ...,\n",
+      "        [ 0.0134, -0.0336, -0.0370,  ..., -0.0342,  0.0213,  0.0314],\n",
+      "        [ 0.0109,  0.0286, -0.0269,  ..., -0.0081,  0.0009, -0.0038],\n",
+      "        [-0.0080,  0.0278,  0.0083,  ...,  0.0007,  0.0084, -0.0251]])), ('fc2.bias', tensor([ 2.2357e-02,  1.9226e-02,  1.1123e-02, -2.4498e-03, -1.6226e-02,\n",
+      "         3.9878e-02, -3.7970e-02,  2.9134e-02,  1.5137e-02,  3.2274e-02,\n",
+      "        -3.5957e-02, -2.9998e-02,  7.1591e-03, -2.9987e-02, -2.4313e-02,\n",
+      "         4.2241e-02,  9.3610e-03,  1.5294e-02, -1.6146e-02,  3.7757e-02,\n",
+      "         2.1120e-02, -3.7359e-03, -2.3047e-02,  6.2452e-04, -2.0957e-02,\n",
+      "         3.2647e-02,  3.9253e-02,  2.0014e-02, -3.0535e-02, -1.6816e-02,\n",
+      "        -3.9067e-02, -1.2906e-02, -2.3393e-02,  4.3545e-02, -3.0294e-02,\n",
+      "        -1.3963e-02,  4.1285e-02,  3.9417e-02,  3.4044e-02,  2.5627e-02,\n",
+      "        -3.4948e-04, -1.9061e-05,  3.3105e-02, -3.3628e-02,  2.1815e-02,\n",
+      "         2.9446e-02,  2.1422e-02, -1.4810e-03,  2.7396e-02, -1.2598e-02,\n",
+      "         2.5633e-03, -3.4380e-02, -2.7923e-02, -2.9328e-03,  5.5454e-03,\n",
+      "         1.7421e-02, -2.5213e-02,  6.5188e-03,  1.3223e-02, -2.5570e-02,\n",
+      "        -2.6113e-02, -8.3992e-03]))])\n",
+      "o1_state_dict:  {'state': {}, 'param_groups': [{'lr': 0.6, 'momentum': 0, 'dampening': 0, 'weight_decay': 0, 'nesterov': False, 'params': [0, 1, 2, 3, 4, 5, 6, 7]}]}\n"
+     ]
+    }
+   ],
+   "source": [
+    "import torch\n",
+    "from decentralizepy.datasets.Femnist import CNN\n",
+    "m1 = CNN()\n",
+    "o1 = torch.optim.SGD(m1.parameters(), 0.6)\n",
+    "print(\"m1_state_dict: \", m1.state_dict())\n",
+    "print(\"o1_state_dict: \", o1.state_dict())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "interpreter": {
+   "hash": "996934296aa9d79be6c3d800a38d8fdb7dfa8fe7bb07df178f1397cde2cb8742"
+  },
+  "kernelspec": {
+   "display_name": "Python 3.9.7 64-bit ('tff': conda)",
+   "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.9.7"
+  },
+  "orig_nbformat": 4
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/testing.py b/eval/testing.py
similarity index 100%
rename from testing.py
rename to eval/testing.py
diff --git a/install_nMachines.sh b/install_nMachines.sh
new file mode 100644
index 0000000..e9b2375
--- /dev/null
+++ b/install_nMachines.sh
@@ -0,0 +1,14 @@
+#!\bin\bash
+
+cd
+mkdir -p Gitlab
+cd Gitlab
+git clone git@gitlab.epfl.ch:risharma/decentralizepy.git
+cd decentralizepy
+mkdir -p leaf/data/femnist/data/train
+mkdir -p leaf/data/femnist/data/test
+mkdir -p leaf/data/femnist/per_user_data/train
+~/miniconda3/bin/conda remove --name decpy --all
+~/miniconda3/bin/conda create -n decpy python=3.9
+~/miniconda3/envs/decpy/bin/pip install --upgrade pip --quiet
+~/miniconda3/envs/decpy/bin/pip install --editable .\[dev\]
diff --git a/main.ipynb b/main.ipynb
deleted file mode 100644
index f3907f0..0000000
--- a/main.ipynb
+++ /dev/null
@@ -1,585 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from datasets.Femnist import Femnist\n",
-    "from graphs import SmallWorld\n",
-    "from collections import defaultdict\n",
-    "import os\n",
-    "import json\n",
-    "import numpy as np\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "a = FEMNIST\n",
-    "a"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "b = SmallWorld(6, 2, 2, 1)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "b.adj_list"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "for i in range(12):\n",
-    "    print(b.neighbors(i))"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "clients = []"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "num_samples = []\n",
-    "data = defaultdict(lambda : None)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "datadir = \"./leaf/data/femnist/data/train\"\n",
-    "files = os.listdir(datadir)\n",
-    "total_users=0\n",
-    "users = set()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "files = os.listdir(datadir)[0:1]"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "for f in files:\n",
-    "    file_path = os.path.join(datadir, f)\n",
-    "    print(file_path)\n",
-    "    with open(file_path, 'r') as inf:\n",
-    "        client_data = json.load(inf)\n",
-    "    current_users = len(client_data['users'])\n",
-    "    print(\"Current_Users: \", current_users)\n",
-    "    total_users += current_users\n",
-    "    users.update(client_data['users'])\n",
-    "\n",
-    "print(\"total_users: \", total_users)\n",
-    "print(\"total_users: \", len(users))\n",
-    "print(client_data['user_data'].keys())\n",
-    "print(np.array(client_data['user_data']['f3408_47']['x']).shape)\n",
-    "print(np.array(client_data['user_data']['f3408_47']['y']).shape)\n",
-    "print(np.array(client_data['user_data']['f3327_11']['x']).shape)\n",
-    "print(np.array(client_data['user_data']['f3327_11']['y']).shape)\n",
-    "print(np.unique(np.array(client_data['user_data']['f3327_11']['y'])))"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "file = 'run.py'\n",
-    "with open(file, 'r') as inf:\n",
-    "            print(inf.readline().strip())\n",
-    "            print(inf.readlines())"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "def f(l):\n",
-    "    l[2] = 'c'\n",
-    "\n",
-    "a = ['a', 'a', 'a']\n",
-    "print(a)\n",
-    "f(a)\n",
-    "print(a)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "l = ['a', 'b', 'c']\n",
-    "print(l[:-1])"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from localconfig import LocalConfig\n",
-    "\n",
-    "def read_ini(file_path):\n",
-    "    config = LocalConfig(file_path)\n",
-    "    for section in config:\n",
-    "        print(\"Section: \", section)\n",
-    "        for key, value in config.items(section):\n",
-    "            print((key, value))\n",
-    "    print(dict(config.items('DATASET')))\n",
-    "    return config\n",
-    " \n",
-    "config = read_ini(\"config.ini\")\n",
-    "for section in config:\n",
-    "    print(section)\n",
-    "#d = dict(config.sections())"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "def func(a = 1, b = 2, c = 3):\n",
-    "    print(a + b + c)\n",
-    "\n",
-    "l = [3, 5, 7]\n",
-    "\n",
-    "func(*l)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from torch import multiprocessing as mp\n",
-    "\n",
-    "mp.spawn(fn = func, nprocs = 2, args = [], kwargs = {'a': 4, 'b': 5, 'c': 6})"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "l = '[0.4, 0.2, 0.3, 0.1]'\n",
-    "type(eval(l))\n",
-    "\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from decentralizepy.datasets.Femnist import Femnist\n",
-    "f1 = Femnist(0, 1, 'leaf/data/femnist/data/train')\n",
-    "ts = f1.get_trainset(1)\n",
-    "for data, target in ts:\n",
-    "    print(data)\n",
-    "    break"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from decentralizepy.datasets.Femnist import Femnist\n",
-    "from decentralizepy.graphs.SmallWorld import SmallWorld\n",
-    "from decentralizepy.mappings.Linear import Linear\n",
-    "\n",
-    "f = Femnist(2, 'leaf/data/femnist/data/train', sizes=[0.6, 0.4])\n",
-    "g = SmallWorld(4, 1, 0.5)\n",
-    "l = Linear(2, 2)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from decentralizepy.node.Node import Node\n",
-    "from torch import multiprocessing as mp\n",
-    "import logging\n",
-    "n1 = Node(0, l, g, f, \"./results\", logging.DEBUG)\n",
-    "n2 = Node(1, l, g, f, \"./results\", logging.DEBUG)\n",
-    "# mp.spawn(fn = Node, nprocs = 2, args=[l,g,f])"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from testing import f"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from torch import multiprocessing as mp\n",
-    "import torch\n",
-    "m1 = torch.nn.Linear(1,1)\n",
-    "o1 = torch.optim.SGD(m1.parameters(), 0.6)\n",
-    "print(m1)\n",
-    "\n",
-    "\n",
-    "mp.spawn(fn = f, nprocs = 2, args=[m1, o1])\n",
-    "\n"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": []
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "o1.param_groups"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "with torch.no_grad():\n",
-    "    o1.param_groups[0][\"params\"][0].copy_(torch.zeros(1,))"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "o1.param_groups"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "m1.state_dict()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import torch\n",
-    "loss = getattr(torch.nn.functional, 'nll_loss')"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "loss"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Section:  GRAPH\n",
-      "('package', 'decentralizepy.graphs.SmallWorld')\n",
-      "('graph_class', 'SmallWorld')\n",
-      "Section:  DATASET\n",
-      "('dataset_package', 'decentralizepy.datasets.Femnist')\n",
-      "('dataset_class', 'Femnist')\n",
-      "('model_class', 'CNN')\n",
-      "('n_procs', 36)\n",
-      "('train_dir', 'leaf/data/femnist/per_user_data/train')\n",
-      "('test_dir', 'leaf/data/femnist/data/test')\n",
-      "('sizes', '')\n",
-      "Section:  OPTIMIZER_PARAMS\n",
-      "('optimizer_package', 'torch.optim')\n",
-      "('optimizer_class', 'Adam')\n",
-      "('lr', 0.01)\n",
-      "Section:  TRAIN_PARAMS\n",
-      "('training_package', 'decentralizepy.training.Training')\n",
-      "('training_class', 'Training')\n",
-      "('epochs_per_round', 1)\n",
-      "('batch_size', 1024)\n",
-      "('shuffle', True)\n",
-      "('loss_package', 'torch.nn')\n",
-      "('loss_class', 'CrossEntropyLoss')\n",
-      "Section:  COMMUNICATION\n",
-      "('comm_package', 'decentralizepy.communication.TCP')\n",
-      "('comm_class', 'TCP')\n",
-      "('addresses_filepath', 'ip_addr.json')\n",
-      "Section:  SHARING\n",
-      "('sharing_package', 'decentralizepy.sharing.Sharing')\n",
-      "('sharing_class', 'Sharing')\n",
-      "{'dataset_package': 'decentralizepy.datasets.Femnist', 'dataset_class': 'Femnist', 'model_class': 'CNN', 'n_procs': 36, 'train_dir': 'leaf/data/femnist/per_user_data/train', 'test_dir': 'leaf/data/femnist/data/test', 'sizes': ''}\n"
-     ]
-    }
-   ],
-   "source": [
-    "%matplotlib inline\n",
-    "\n",
-    "from decentralizepy.node.Node import Node\n",
-    "from decentralizepy.graphs.SmallWorld import SmallWorld\n",
-    "from decentralizepy.graphs.Graph import Graph\n",
-    "from decentralizepy.mappings.Linear import Linear\n",
-    "from torch import multiprocessing as mp\n",
-    "import torch\n",
-    "import logging\n",
-    "\n",
-    "from localconfig import LocalConfig\n",
-    "\n",
-    "def read_ini(file_path):\n",
-    "    config = LocalConfig(file_path)\n",
-    "    for section in config:\n",
-    "        print(\"Section: \", section)\n",
-    "        for key, value in config.items(section):\n",
-    "            print((key, value))\n",
-    "    print(dict(config.items('DATASET')))\n",
-    "    return config\n",
-    " \n",
-    "config = read_ini(\"config.ini\")\n",
-    "my_config = dict()\n",
-    "for section in config:\n",
-    "    my_config[section] = dict(config.items(section))\n",
-    "\n",
-    "#f = Femnist(2, 'leaf/data/femnist/data/train', sizes=[0.6, 0.4])\n",
-    "g = Graph()\n",
-    "g.read_graph_from_file(\"36_nodes.edges\", \"edges\")\n",
-    "l = Linear(1, 36)\n",
-    "\n",
-    "#Node(0, 0, l, g, my_config, 20, \"results\", logging.DEBUG)\n",
-    "\n",
-    "mp.spawn(fn = Node, nprocs = g.n_procs, args=[0,l,g,my_config,20,\"results\",logging.INFO])\n",
-    "\n",
-    "# mp.spawn(fn = Node, args = [l, g, config, 10, \"results\", logging.DEBUG], nprocs=2)\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from decentralizepy.mappings.Linear import Linear\n",
-    "from testing import f\n",
-    "from torch import multiprocessing as mp\n",
-    "\n",
-    "l = Linear(1, 2)\n",
-    "mp.spawn(fn = f, nprocs = 2, args = [0, 2, \"ip_addr.json\", l])\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from decentralizepy.datasets.Femnist import Femnist\n",
-    "\n",
-    "f = Femnist()\n",
-    "\n",
-    "f.file_per_user('leaf/data/femnist/data/train','leaf/data/femnist/per_user_data/train')\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "a = set()\n",
-    "a.update([2, 3, 4, 5])"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "{2, 3, 4, 5}"
-      ]
-     },
-     "execution_count": 3,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "a"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "2 3 4 5\n"
-     ]
-    }
-   ],
-   "source": [
-    "print(*a)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from decentralizepy.graphs.SmallWorld import SmallWorld\n",
-    "\n",
-    "s = SmallWorld(36, 2, .5)\n",
-    "s.write_graph_to_file('36_nodes.edges')"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "['/home/risharma/miniconda3/envs/decpy/lib/python3.9/site-packages/ipykernel_launcher.py',\n",
-       " '--ip=127.0.0.1',\n",
-       " '--stdin=9008',\n",
-       " '--control=9006',\n",
-       " '--hb=9005',\n",
-       " '--Session.signature_scheme=\"hmac-sha256\"',\n",
-       " '--Session.key=b\"eac5d2f8-c460-45f1-a268-1e4b46a6efd6\"',\n",
-       " '--shell=9007',\n",
-       " '--transport=\"tcp\"',\n",
-       " '--iopub=9009',\n",
-       " '--f=/tmp/tmp-21212479paJaUBJBN84.json']"
-      ]
-     },
-     "execution_count": 1,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "import sys\n",
-    "sys.argv"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  }
- ],
- "metadata": {
-  "interpreter": {
-   "hash": "996934296aa9d79be6c3d800a38d8fdb7dfa8fe7bb07df178f1397cde2cb8742"
-  },
-  "kernelspec": {
-   "display_name": "Python 3.9.7 64-bit ('tff': conda)",
-   "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.9.7"
-  },
-  "orig_nbformat": 4
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/run.py b/run.py
deleted file mode 100644
index ff82fc2..0000000
--- a/run.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import torch
-import torch.multiprocessing as mp
-
-x = [1, 2]
-
-
-def f(id, a):
-    print(id, x)
-    print(id, a)
-
-
-if __name__ == "__main__":
-    x.append(3)
-    mp.spawn(f, nprocs=2, args=(x,))
diff --git a/src/decentralizepy/sharing/PartialModel.py b/src/decentralizepy/sharing/PartialModel.py
index e69de29..7702d2e 100644
--- a/src/decentralizepy/sharing/PartialModel.py
+++ b/src/decentralizepy/sharing/PartialModel.py
@@ -0,0 +1,6 @@
+from decentralizepy.sharing.Sharing import Sharing
+
+class PartialModel(Sharing):
+    def __init__(self, rank, machine_id, communication, mapping, graph, model, dataset):
+        super().__init__(rank, machine_id, communication, mapping, graph, model, dataset)
+        
-- 
GitLab