diff options
author | aktersnurra <gustaf.rydholm@gmail.com> | 2020-09-08 23:14:23 +0200 |
---|---|---|
committer | aktersnurra <gustaf.rydholm@gmail.com> | 2020-09-08 23:14:23 +0200 |
commit | e1b504bca41a9793ed7e88ef14f2e2cbd85724f2 (patch) | |
tree | 70b482f890c9ad2be104f0bff8f2172e8411a2be /src/notebooks/00-testing-stuff-out.ipynb | |
parent | fe23001b6588e6e6e9e2c5a99b72f3445cf5206f (diff) |
IAM datasets implemented.
Diffstat (limited to 'src/notebooks/00-testing-stuff-out.ipynb')
-rw-r--r-- | src/notebooks/00-testing-stuff-out.ipynb | 1652 |
1 files changed, 129 insertions, 1523 deletions
diff --git a/src/notebooks/00-testing-stuff-out.ipynb b/src/notebooks/00-testing-stuff-out.ipynb index 3f008c3..ff9fb20 100644 --- a/src/notebooks/00-testing-stuff-out.ipynb +++ b/src/notebooks/00-testing-stuff-out.ipynb @@ -22,307 +22,11 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "torch.cuda.is_available()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "torch.nn.modules.activation.SELU" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "torch.nn.SELU" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "a = \"nNone\"" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "b = a or \"relu\"" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'nnone'" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "b.lower()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'nNone'" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "b" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "torch.optim.lr_scheduler.StepLR" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "getattr(torch.optim.lr_scheduler, \"StepLR\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "a = getattr(torch.nn, \"ReLU\")()" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 68, "metadata": {}, "outputs": [], "source": [ - "a" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "loss = getattr(torch.nn, \"L1Loss\")()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "input = torch.randn(3, 5, requires_grad=True)\n", - "target = torch.randn(3, 5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "b = torch.randn(2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "b" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "a(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "output = loss(input, target)\n", - "output.backward()" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tensor(1.1283)" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "torch.tensor(output.item())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "s = 1.\n", - "if s is not None:\n", - " assert 0.0 < s < 1.0" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "class A:\n", - " @property\n", - " def __name__(self):\n", - " return \"adafa\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "a = A()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "a.__name__" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "from training.gpu_manager import GPUManager" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "gpu_manager = GPUManager(True)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2020-07-21 14:10:13.170 | DEBUG | training.gpu_manager:_get_free_gpu:57 - pid 11721 picking gpu 0\n" - ] - }, - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gpu_manager.get_free_gpu()" + "from text_recognizer.networks.residual_network import IdentityBlock, ResidualBlock, BasicBlock, BottleNeckBlock, ResidualLayer, Encoder, ResidualNetwork" ] }, { @@ -331,7 +35,7 @@ "metadata": {}, "outputs": [], "source": [ - "from pathlib import Path" + "IdentityBlock(32, 64)" ] }, { @@ -340,7 +44,7 @@ "metadata": {}, "outputs": [], "source": [ - "p = Path(\"/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training\")" + "ResidualBlock(32, 64)" ] }, { @@ -349,342 +53,11 @@ "metadata": {}, "outputs": [], "source": [ + "dummy = torch.ones((1, 32, 224, 224))\n", "\n", - "str(p).split(\"/\")[0] + \"/\" + str(p).split(\"/\")[1]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "p.parents[0].resolve()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "p.exists()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "d = 'Experiment JSON, e.g. \\'{\"dataset\": \"EmnistDataset\", \"model\": \"CharacterModel\", \"network\": \"mlp\"}\\''" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(d)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "import yaml" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "path = \"/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/sample_experiment.yml\"" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "with open(path) as f:\n", - " d = yaml.safe_load(f)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "experiment_config = d[\"experiments\"][0]" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'dataloader': 'EmnistDataLoader',\n", - " 'data_loader_args': {'splits': ['train', 'val'],\n", - " 'sample_to_balance': True,\n", - " 'subsample_fraction': None,\n", - " 'transform': None,\n", - " 'target_transform': None,\n", - " 'batch_size': 256,\n", - " 'shuffle': True,\n", - " 'num_workers': 0,\n", - " 'cuda': True,\n", - " 'seed': 4711},\n", - " 'model': 'CharacterModel',\n", - " 'metrics': ['accuracy'],\n", - " 'network': 'MLP',\n", - " 'network_args': {'input_size': 784, 'num_layers': 2},\n", - " 'train_args': {'batch_size': 256, 'epochs': 16},\n", - " 'criterion': 'CrossEntropyLoss',\n", - " 'criterion_args': {'weight': None, 'ignore_index': -100, 'reduction': 'mean'},\n", - " 'optimizer': 'AdamW',\n", - " 'optimizer_args': {'lr': 0.0003,\n", - " 'betas': [0.9, 0.999],\n", - " 'eps': 1e-08,\n", - " 'weight_decay': 0,\n", - " 'amsgrad': False},\n", - " 'lr_scheduler': 'OneCycleLR',\n", - " 'lr_scheduler_args': {'max_lr': 3e-05, 'epochs': 16}}" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "experiment_config" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "import importlib" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "network_module = importlib.import_module(\"text_recognizer.networks\")\n", - "network_fn_ = getattr(network_module, experiment_config[\"network\"])\n", - "network_args = experiment_config.get(\"network_args\", {})" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 784)" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(1,) + (network_args[\"input_size\"],)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "optimizer_ = getattr(torch.optim, experiment_config[\"optimizer\"])\n", - "optimizer_args = experiment_config.get(\"optimizer_args\", {})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "optimizer_" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "optimizer_args" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "network_args" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "network_fn_" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "net = network_fn_(**network_args)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "optimizer_(net.parameters() , **optimizer_args)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "criterion_ = getattr(torch.nn, experiment_config[\"criterion\"])\n", - "criterion_args = experiment_config.get(\"criterion_args\", {})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "criterion_(**criterion_args)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "models_module = importlib.import_module(\"text_recognizer.models\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "metrics = {metric: getattr(models_module, metric) for metric in experiment_config[\"metrics\"]}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "torch.randn(3, 10)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "torch.randn(3, 1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "metrics['accuracy'](torch.randn(3, 10), torch.randn(3, 1))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "metric_fn_ = getattr(models_module, experiment_config[\"metric\"])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "metric_fn_" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "2.e-3" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lr_scheduler_ = getattr(\n", - " torch.optim.lr_scheduler, experiment_config[\"lr_scheduler\"]\n", - ")\n", - "lr_scheduler_args = experiment_config.get(\"lr_scheduler_args\", {})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\"OneCycleLR\" in str(lr_scheduler_)" + "block = BasicBlock(32, 64)\n", + "block(dummy).shape\n", + "print(block)" ] }, { @@ -693,9 +66,11 @@ "metadata": {}, "outputs": [], "source": [ - "datasets_module = importlib.import_module(\"text_recognizer.datasets\")\n", - "data_loader_ = getattr(datasets_module, experiment_config[\"dataloader\"])\n", - "data_loader_args = experiment_config.get(\"data_loader_args\", {})" + "dummy = torch.ones((1, 32, 10, 10))\n", + "\n", + "block = BottleNeckBlock(32, 64)\n", + "block(dummy).shape\n", + "print(block)" ] }, { @@ -704,422 +79,10 @@ "metadata": {}, "outputs": [], "source": [ - "data_loader_(**data_loader_args)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "cuda = \"cuda:0\"" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "cleanString = re.sub('[^A-Za-z]+','', cuda )" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "cleanString = re.sub('[^0-9]+','', cuda )" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'0'" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cleanString" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "([28, 28], 1)" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "([28, 28], ) + (1,)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(range(3-1))" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1,)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tuple([1])" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "from glob import glob" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/text_recognizer/weights/CharacterModel_Emnist_MLP_weights.pt']" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "glob(\"/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/text_recognizer/weights/CharacterModel_*MLP_weights.pt\")" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "def test(a, b, c, d):\n", - " print(a,b,c,d)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "f = {\"a\": 2, \"b\": 3, \"c\": 4}" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_items([('a', 2), ('b', 3), ('c', 4)])\n" - ] - } - ], - "source": [ - "print(f.items())" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 3 4 1\n" - ] - } - ], - "source": [ - "test(**f, d=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "path = \"/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/*\"" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "l = glob(path)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "l.sort()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_124928' in l" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_124928',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_141139',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_141213',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_141433',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_141702',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_145028',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_150212',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_150301',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_150317',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_151135',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_151408',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_153144',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_153207',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_153310',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_175150',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_180741',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_181933',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_183347',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_190044',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_190633',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_190738',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_191111',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_191310',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_191412',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_191504',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0721_191826',\n", - " '/home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/src/training/experiments/CharacterModel_Emnist_MLP/0722_191559']" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "l" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "class ModeKeys:\n", - " \"\"\"Mode keys for CallbackList.\"\"\"\n", + "dummy = torch.ones((1, 64, 48, 48))\n", "\n", - " TRAIN = \"train\"\n", - " VALIDATION = \"validation\"" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "m = ModeKeys()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'train'" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "m.TRAIN" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([1.00000000e-05, 1.26485522e-05, 1.59985872e-05, 2.02358965e-05,\n", - " 2.55954792e-05, 3.23745754e-05, 4.09491506e-05, 5.17947468e-05,\n", - " 6.55128557e-05, 8.28642773e-05, 1.04811313e-04, 1.32571137e-04,\n", - " 1.67683294e-04, 2.12095089e-04, 2.68269580e-04, 3.39322177e-04,\n", - " 4.29193426e-04, 5.42867544e-04, 6.86648845e-04, 8.68511374e-04,\n", - " 1.09854114e-03, 1.38949549e-03, 1.75751062e-03, 2.22299648e-03,\n", - " 2.81176870e-03, 3.55648031e-03, 4.49843267e-03, 5.68986603e-03,\n", - " 7.19685673e-03, 9.10298178e-03, 1.15139540e-02, 1.45634848e-02,\n", - " 1.84206997e-02, 2.32995181e-02, 2.94705170e-02, 3.72759372e-02,\n", - " 4.71486636e-02, 5.96362332e-02, 7.54312006e-02, 9.54095476e-02,\n", - " 1.20679264e-01, 1.52641797e-01, 1.93069773e-01, 2.44205309e-01,\n", - " 3.08884360e-01, 3.90693994e-01, 4.94171336e-01, 6.25055193e-01,\n", - " 7.90604321e-01, 1.00000000e+00])" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.logspace(-5, 0, base=10)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.018420699693267165" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.random.choice(np.logspace(-5, 0, base=10))" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [], - "source": [ - "import tqdm" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tqdm.notebook.tqdm_notebook" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tqdm.auto.tqdm" + "layer = ResidualLayer(64, 128, block=BasicBlock, num_blocks=3)\n", + "layer(dummy).shape" ] }, { @@ -1128,380 +91,107 @@ "metadata": {}, "outputs": [], "source": [ - "tqdm.auto.tqdm" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "def test():\n", - " for i in tqdm.auto.tqdm(range(9)):\n", - " pass\n", - " print(i)\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e1d3b25d4ee141e882e316ec54e79d60", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, max=9.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "8\n" - ] - } - ], - "source": [ - "test()" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [], - "source": [ - "from time import sleep" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "41b743273ce14236bcb65782dbcd2e75", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, max=4.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "pbar = tqdm.auto.tqdm([\"a\", \"b\", \"c\", \"d\"], leave=True)\n", - "for char in pbar:\n", - " pbar.set_description(\"Processing %s\" % char)\n", - "# pbar.set_prefix()\n", - " sleep(0.25)\n", - "pbar.set_postfix({\"hej\": 0.32})" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "metadata": {}, - "outputs": [], - "source": [ - "pbar.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "cb5ad8d6109f4b1495b8fc7422bafd01", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, max=10.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "with tqdm.auto.tqdm(total=10, bar_format=\"{postfix[0]} {postfix[1][value]:>8.2g}\",\n", - " postfix=[\"Batch\", dict(value=0)]) as t:\n", - " for i in range(10):\n", - " sleep(0.1)\n", - "# t.postfix[2][\"value\"] = 3 \n", - " t.postfix[1][\"value\"] = i / 2\n", - " t.update()" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "0b341d49ad074823881e84a538bcad0c", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "with tqdm.auto.tqdm(total=100, leave=True) as pbar:\n", - " for i in range(2):\n", - " for i in range(10):\n", - " sleep(0.1)\n", - " pbar.update(10)\n", - " pbar.set_postfix({\"adaf\": 23})\n", - " pbar.set_postfix({\"hej\": 0.32})\n", - " pbar.reset()" + "blocks_sizes=[64, 128, 256, 512]\n", + "list(zip(blocks_sizes, blocks_sizes[1:]))" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 69, "metadata": {}, "outputs": [], "source": [ - "from text_recognizer.networks.residual_network import IdentityBlock, ResidualBlock, BasicBlock, BottleNeckBlock, ResidualLayer, Encoder, ResidualNetwork" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "IdentityBlock(\n", - " (blocks): Identity()\n", - " (activation_fn): ReLU(inplace=True)\n", - " (shortcut): Identity()\n", - ")" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "IdentityBlock(32, 64)" + "e = Encoder(depths=[2, 1], block_sizes= [96, 128])" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "ResidualBlock(\n", - " (blocks): Identity()\n", - " (activation_fn): ReLU(inplace=True)\n", - " (shortcut): Sequential(\n", - " (0): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + "Encoder(\n", + " (gate): Sequential(\n", + " (0): Conv2d(1, 96, kernel_size=(3, 3), stride=(2, 2), padding=(3, 3), bias=False)\n", + " (1): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (2): ReLU(inplace=True)\n", + " (3): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", + " )\n", + " (blocks): Sequential(\n", + " (0): ResidualLayer(\n", + " (blocks): Sequential(\n", + " (0): BasicBlock(\n", + " (blocks): Sequential(\n", + " (0): Sequential(\n", + " (0): Conv2dAuto(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", + " (1): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " )\n", + " (1): ReLU(inplace=True)\n", + " (2): Sequential(\n", + " (0): Conv2dAuto(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", + " (1): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " )\n", + " )\n", + " (activation_fn): ReLU(inplace=True)\n", + " (shortcut): None\n", + " )\n", + " (1): BasicBlock(\n", + " (blocks): Sequential(\n", + " (0): Sequential(\n", + " (0): Conv2dAuto(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", + " (1): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " )\n", + " (1): ReLU(inplace=True)\n", + " (2): Sequential(\n", + " (0): Conv2dAuto(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", + " (1): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " )\n", + " )\n", + " (activation_fn): ReLU(inplace=True)\n", + " (shortcut): None\n", + " )\n", + " )\n", + " )\n", + " (1): ResidualLayer(\n", + " (blocks): Sequential(\n", + " (0): BasicBlock(\n", + " (blocks): Sequential(\n", + " (0): Sequential(\n", + " (0): Conv2dAuto(96, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", + " (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " )\n", + " (1): ReLU(inplace=True)\n", + " (2): Sequential(\n", + " (0): Conv2dAuto(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", + " (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " )\n", + " )\n", + " (activation_fn): ReLU(inplace=True)\n", + " (shortcut): Sequential(\n", + " (0): Conv2d(96, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", + " (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " )\n", + " )\n", + " )\n", + " )\n", " )\n", ")" ] }, - "execution_count": 12, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "ResidualBlock(32, 64)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BasicBlock(\n", - " (blocks): Sequential(\n", - " (0): Sequential(\n", - " (0): Conv2dAuto(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - " (1): ReLU(inplace=True)\n", - " (2): Sequential(\n", - " (0): Conv2dAuto(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - " )\n", - " (activation_fn): ReLU(inplace=True)\n", - " (shortcut): Sequential(\n", - " (0): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - ")\n" - ] - } - ], - "source": [ - "dummy = torch.ones((1, 32, 224, 224))\n", - "\n", - "block = BasicBlock(32, 64)\n", - "block(dummy).shape\n", - "print(block)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BottleNeckBlock(\n", - " (blocks): Sequential(\n", - " (0): Sequential(\n", - " (0): Conv2dAuto(32, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - " (1): ReLU(inplace=True)\n", - " (2): Sequential(\n", - " (0): Conv2dAuto(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - " (3): ReLU(inplace=True)\n", - " (4): Sequential(\n", - " (0): Conv2dAuto(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - " )\n", - " (activation_fn): ReLU(inplace=True)\n", - " (shortcut): Sequential(\n", - " (0): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - ")\n" - ] - } - ], - "source": [ - "dummy = torch.ones((1, 32, 10, 10))\n", - "\n", - "block = BottleNeckBlock(32, 64)\n", - "block(dummy).shape\n", - "print(block)" + "Encoder(**{\"depths\": [2, 1], \"block_sizes\": [96, 128]})" ] }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "torch.Size([1, 128, 24, 24])" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dummy = torch.ones((1, 64, 48, 48))\n", - "\n", - "layer = ResidualLayer(64, 128, block=BasicBlock, num_blocks=3)\n", - "layer(dummy).shape" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(64, 128), (128, 256), (256, 512)]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "blocks_sizes=[64, 128, 256, 512]\n", - "list(zip(blocks_sizes, blocks_sizes[1:]))" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "e = Encoder(depths=[1, 1])" - ] - }, - { - "cell_type": "code", - "execution_count": 19, + "execution_count": 51, "metadata": {}, "outputs": [], "source": [ @@ -1510,7 +200,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -1520,41 +210,50 @@ "----------------------------------------------------------------\n", " Layer (type) Output Shape Param #\n", "================================================================\n", - " Conv2d-1 [-1, 32, 15, 15] 800\n", - " BatchNorm2d-2 [-1, 32, 15, 15] 64\n", - " ReLU-3 [-1, 32, 15, 15] 0\n", - " MaxPool2d-4 [-1, 32, 8, 8] 0\n", - " Conv2dAuto-5 [-1, 32, 8, 8] 9,216\n", - " BatchNorm2d-6 [-1, 32, 8, 8] 64\n", - " ReLU-7 [-1, 32, 8, 8] 0\n", - " ReLU-8 [-1, 32, 8, 8] 0\n", - " Conv2dAuto-9 [-1, 32, 8, 8] 9,216\n", - " BatchNorm2d-10 [-1, 32, 8, 8] 64\n", - " ReLU-11 [-1, 32, 8, 8] 0\n", - " ReLU-12 [-1, 32, 8, 8] 0\n", - " BasicBlock-13 [-1, 32, 8, 8] 0\n", - " ResidualLayer-14 [-1, 32, 8, 8] 0\n", - " Conv2d-15 [-1, 64, 4, 4] 2,048\n", - " BatchNorm2d-16 [-1, 64, 4, 4] 128\n", - " Conv2dAuto-17 [-1, 64, 4, 4] 18,432\n", - " BatchNorm2d-18 [-1, 64, 4, 4] 128\n", - " ReLU-19 [-1, 64, 4, 4] 0\n", - " ReLU-20 [-1, 64, 4, 4] 0\n", - " Conv2dAuto-21 [-1, 64, 4, 4] 36,864\n", - " BatchNorm2d-22 [-1, 64, 4, 4] 128\n", - " ReLU-23 [-1, 64, 4, 4] 0\n", - " ReLU-24 [-1, 64, 4, 4] 0\n", - " BasicBlock-25 [-1, 64, 4, 4] 0\n", - " ResidualLayer-26 [-1, 64, 4, 4] 0\n", + " Conv2d-1 [-1, 96, 16, 16] 864\n", + " BatchNorm2d-2 [-1, 96, 16, 16] 192\n", + " ReLU-3 [-1, 96, 16, 16] 0\n", + " MaxPool2d-4 [-1, 96, 8, 8] 0\n", + " Conv2dAuto-5 [-1, 96, 8, 8] 82,944\n", + " BatchNorm2d-6 [-1, 96, 8, 8] 192\n", + " ReLU-7 [-1, 96, 8, 8] 0\n", + " ReLU-8 [-1, 96, 8, 8] 0\n", + " Conv2dAuto-9 [-1, 96, 8, 8] 82,944\n", + " BatchNorm2d-10 [-1, 96, 8, 8] 192\n", + " ReLU-11 [-1, 96, 8, 8] 0\n", + " ReLU-12 [-1, 96, 8, 8] 0\n", + " BasicBlock-13 [-1, 96, 8, 8] 0\n", + " Conv2dAuto-14 [-1, 96, 8, 8] 82,944\n", + " BatchNorm2d-15 [-1, 96, 8, 8] 192\n", + " ReLU-16 [-1, 96, 8, 8] 0\n", + " ReLU-17 [-1, 96, 8, 8] 0\n", + " Conv2dAuto-18 [-1, 96, 8, 8] 82,944\n", + " BatchNorm2d-19 [-1, 96, 8, 8] 192\n", + " ReLU-20 [-1, 96, 8, 8] 0\n", + " ReLU-21 [-1, 96, 8, 8] 0\n", + " BasicBlock-22 [-1, 96, 8, 8] 0\n", + " ResidualLayer-23 [-1, 96, 8, 8] 0\n", + " Conv2d-24 [-1, 128, 4, 4] 12,288\n", + " BatchNorm2d-25 [-1, 128, 4, 4] 256\n", + " Conv2dAuto-26 [-1, 128, 4, 4] 110,592\n", + " BatchNorm2d-27 [-1, 128, 4, 4] 256\n", + " ReLU-28 [-1, 128, 4, 4] 0\n", + " ReLU-29 [-1, 128, 4, 4] 0\n", + " Conv2dAuto-30 [-1, 128, 4, 4] 147,456\n", + " BatchNorm2d-31 [-1, 128, 4, 4] 256\n", + " ReLU-32 [-1, 128, 4, 4] 0\n", + " ReLU-33 [-1, 128, 4, 4] 0\n", + " BasicBlock-34 [-1, 128, 4, 4] 0\n", + " ResidualLayer-35 [-1, 128, 4, 4] 0\n", "================================================================\n", - "Total params: 77,152\n", - "Trainable params: 77,152\n", + "Total params: 604,704\n", + "Trainable params: 604,704\n", "Non-trainable params: 0\n", "----------------------------------------------------------------\n", "Input size (MB): 0.00\n", - "Forward/backward pass size (MB): 0.43\n", - "Params size (MB): 0.29\n", - "Estimated Total Size (MB): 0.73\n", + "Forward/backward pass size (MB): 1.69\n", + "Params size (MB): 2.31\n", + "Estimated Total Size (MB): 4.00\n", "----------------------------------------------------------------\n" ] } @@ -1562,99 +261,6 @@ "source": [ "summary(e, (1, 28, 28), device=\"cpu\")" ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "resnet = ResidualNetwork(1, 80, activation=\"selu\")" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "----------------------------------------------------------------\n", - " Layer (type) Output Shape Param #\n", - "================================================================\n", - " Conv2d-1 [-1, 32, 15, 15] 800\n", - " BatchNorm2d-2 [-1, 32, 15, 15] 64\n", - " SELU-3 [-1, 32, 15, 15] 0\n", - " MaxPool2d-4 [-1, 32, 8, 8] 0\n", - " Conv2dAuto-5 [-1, 32, 8, 8] 9,216\n", - " BatchNorm2d-6 [-1, 32, 8, 8] 64\n", - " SELU-7 [-1, 32, 8, 8] 0\n", - " SELU-8 [-1, 32, 8, 8] 0\n", - " Conv2dAuto-9 [-1, 32, 8, 8] 9,216\n", - " BatchNorm2d-10 [-1, 32, 8, 8] 64\n", - " SELU-11 [-1, 32, 8, 8] 0\n", - " SELU-12 [-1, 32, 8, 8] 0\n", - " BasicBlock-13 [-1, 32, 8, 8] 0\n", - " Conv2dAuto-14 [-1, 32, 8, 8] 9,216\n", - " BatchNorm2d-15 [-1, 32, 8, 8] 64\n", - " SELU-16 [-1, 32, 8, 8] 0\n", - " SELU-17 [-1, 32, 8, 8] 0\n", - " Conv2dAuto-18 [-1, 32, 8, 8] 9,216\n", - " BatchNorm2d-19 [-1, 32, 8, 8] 64\n", - " SELU-20 [-1, 32, 8, 8] 0\n", - " SELU-21 [-1, 32, 8, 8] 0\n", - " BasicBlock-22 [-1, 32, 8, 8] 0\n", - " ResidualLayer-23 [-1, 32, 8, 8] 0\n", - " Conv2d-24 [-1, 64, 4, 4] 2,048\n", - " BatchNorm2d-25 [-1, 64, 4, 4] 128\n", - " Conv2dAuto-26 [-1, 64, 4, 4] 18,432\n", - " BatchNorm2d-27 [-1, 64, 4, 4] 128\n", - " SELU-28 [-1, 64, 4, 4] 0\n", - " SELU-29 [-1, 64, 4, 4] 0\n", - " Conv2dAuto-30 [-1, 64, 4, 4] 36,864\n", - " BatchNorm2d-31 [-1, 64, 4, 4] 128\n", - " SELU-32 [-1, 64, 4, 4] 0\n", - " SELU-33 [-1, 64, 4, 4] 0\n", - " BasicBlock-34 [-1, 64, 4, 4] 0\n", - " Conv2dAuto-35 [-1, 64, 4, 4] 36,864\n", - " BatchNorm2d-36 [-1, 64, 4, 4] 128\n", - " SELU-37 [-1, 64, 4, 4] 0\n", - " SELU-38 [-1, 64, 4, 4] 0\n", - " Conv2dAuto-39 [-1, 64, 4, 4] 36,864\n", - " BatchNorm2d-40 [-1, 64, 4, 4] 128\n", - " SELU-41 [-1, 64, 4, 4] 0\n", - " SELU-42 [-1, 64, 4, 4] 0\n", - " BasicBlock-43 [-1, 64, 4, 4] 0\n", - " ResidualLayer-44 [-1, 64, 4, 4] 0\n", - " Encoder-45 [-1, 64, 4, 4] 0\n", - " Reduce-46 [-1, 64] 0\n", - " Linear-47 [-1, 80] 5,200\n", - " Decoder-48 [-1, 80] 0\n", - "================================================================\n", - "Total params: 174,896\n", - "Trainable params: 174,896\n", - "Non-trainable params: 0\n", - "----------------------------------------------------------------\n", - "Input size (MB): 0.00\n", - "Forward/backward pass size (MB): 0.65\n", - "Params size (MB): 0.67\n", - "Estimated Total Size (MB): 1.32\n", - "----------------------------------------------------------------\n" - ] - } - ], - "source": [ - "summary(resnet, (1, 28, 28), device=\"cpu\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { |