{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[autoreload of text_recognizer.data.emnist failed: Traceback (most recent call last):\n",
" File \"/home/aktersnurra/.cache/pypoetry/virtualenvs/text-recognizer-ejNaVa9M-py3.9/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 245, in check\n",
" superreload(m, reload, self.old_objects)\n",
" File \"/home/aktersnurra/.cache/pypoetry/virtualenvs/text-recognizer-ejNaVa9M-py3.9/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 410, in superreload\n",
" update_generic(old_obj, new_obj)\n",
" File \"/home/aktersnurra/.cache/pypoetry/virtualenvs/text-recognizer-ejNaVa9M-py3.9/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 347, in update_generic\n",
" update(a, b)\n",
" File \"/home/aktersnurra/.cache/pypoetry/virtualenvs/text-recognizer-ejNaVa9M-py3.9/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 302, in update_class\n",
" if update_generic(old_obj, new_obj): continue\n",
" File \"/home/aktersnurra/.cache/pypoetry/virtualenvs/text-recognizer-ejNaVa9M-py3.9/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 347, in update_generic\n",
" update(a, b)\n",
" File \"/home/aktersnurra/.cache/pypoetry/virtualenvs/text-recognizer-ejNaVa9M-py3.9/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 266, in update_function\n",
" setattr(old, name, getattr(new, name))\n",
"ValueError: prepare_data() requires a code object with 1 free vars, not 0\n",
"]\n"
]
}
],
"source": [
"%load_ext autoreload\n",
"%autoreload 2\n",
"\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from PIL import Image\n",
"import torch\n",
"from importlib.util import find_spec\n",
"if find_spec(\"text_recognizer\") is None:\n",
" import sys\n",
" sys.path.append('..')\n",
"from text_recognizer.data.emnist_lines import EMNISTLines"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2021-03-28 20:17:54.375 | INFO | text_recognizer.data.emnist_lines:setup:103 - EMNISTLinesDataset loading data from HDF5...\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"/home/aktersnurra/projects/text-recognizer/data/processed/emnist_lines/ml_32_o0.000000_0.330000_ntr10000_ntv2000_nte2000.h5\n",
"EMNISTLines2 Dataset\n",
"Min overlap: 0.0\n",
"Max overlap: 0.33\n",
"Num classes: 83\n",
"Dims: (1, 56, 1024)\n",
"Output dims: (89, 1)\n",
"Train/val/test sizes: 10000, 2000, 2000\n",
"Batch x stats: (torch.Size([128, 1, 56, 1024]), torch.float32, tensor(0.), tensor(0.0152), tensor(0.0954), tensor(0.9960))\n",
"Batch y stats: (torch.Size([128, 89]), torch.int64, tensor(1), tensor(66))\n",
"\n",
"Mapping: ['', '', '', '
', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' ', '!', '\"', '#', '&', \"'\", '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '?']\n"
]
}
],
"source": [
"dataset = EMNISTLines()\n",
"dataset.prepare_data()\n",
"dataset.setup()\n",
"print(dataset)\n",
"print('Mapping:', dataset.mapping)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def convert_y_label_to_string(y, dataset=dataset):\n",
" return ''.join([dataset.mapping[i] for i in y if i != 3])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([ 1, 45, 60, 53, 43, 58, 66, 42, 54, 52, 55, 51, 40, 48, 53, 48, 53, 46,\n",
" 66, 40, 41, 54, 60, 59, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n",
" 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n",
" 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n",
" 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]) torch.Size([89])\n"
]
},
{
"data": {
"text/plain": [
"'funds complaining about'"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_example = dataset.data_train[0][1]\n",
"print(y_example, y_example.shape)\n",
"convert_y_label_to_string(y_example)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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iIhcxBT4EREREREREREZpBT4EREREREREREZpBT4EREREREREREZpBT4EREREREREREZpBT4EREREREREREZpBT4EREREREREREZpBT4EREREREREREZpBT4EREREREREREZpBT4EREREREREREZpBT4EREREREREREZpBT4EREREREREREZpJwX+HiNwOELfEyRfzSxQOXH3QiRQU73mcj5p/tM5PzTfSZy/l2o+2xUfysudODnsLV29gU+psg/FGPMh7rPRM4v3Wci55/uM5HzT/eZyPl3MdxnGuolIiIiIiIiIjJIKfAjIiIiIiIiIjJIXejAzx8v8PFE/hHpPhM5/3SfiZx/us9Ezj/dZyLn38d+nxlr7cfdBhEREREREREROQ801EtEREREREREZJC6YIEfY8xVxpjDxphsY8wPLtRxRQYbY8wIY0y6MeagMeaAMeab3uUxxpg3jTFHvX9He5cbY8xD3nsv0xgz6+P9BCKfDMaYAGNMhjHmDe/rVGPMTu+99IIxJsi73OV9ne1dn/KxNlzkE8QYM8QY85IxJssYc8gYs0DPM5Fzxxjz/7z/X9xvjHneGBOs55nI2TPGPGGMKTfG7O+27LSfX8aYr3i3P2qM+cr5au8FCfwYYwKAR4EVwCTgn4wxky7EsUUGoU7gO9baScB84Gve++kHwBZr7Vhgi/c1eO67sd4/dwC/u/BNFvlE+iZwqNvr+4EHrbVjgBrgNu/y24Aa7/IHvduJyMD8L7DRWjsBmI7nntPzTOQcMMYkAd8AZltrpwABwGr0PBM5F54Crjph2Wk9v4wxMcBPgXnAXOCnvmDRuXahMn7mAtnW2uPW2nbgz8A1F+jYIoOKtbbEWrvH+3MDnv8kJ+G5p572bvY0cK3352uAZ6zH+8AQY0zChW21yCeLMSYZWAU85n1tgKXAS95NTrzHfPfeS8Ay7/YichLGmChgCfA4gLW23Vpbi55nIueSEwgxxjiBUKAEPc9Ezpq19m2g+oTFp/v8uhJ401pbba2tAd6kdzDpnLhQgZ8koKDb60LvMhE5C94U3JnATmC4tbbEu6oUGO79WfefyOn7H+B7gNv7eihQa63t9L7ufh/57zHv+jrv9iJycqlABfCkd1jlY8aYMPQ8EzknrLVFwK+BfDwBnzpgN3qeiZwvp/v8umDPNRV3FvmEMsaEAy8D37LW1ndfZz3T9WnKPpEzYIz5DFBurd39cbdFZJBzArOA31lrZwJN/D0tHtDzTORseIeMXIMnyJoIhHGesglEpKeL7fl1oQI/RcCIbq+TvctE5AwYYwLxBH2es9a+4l1c5kt59/5d7l2u+0/k9CwCrjbG5OIZmrwUTx2SId5Ueeh5H/nvMe/6KKDqQjZY5BOqECi01u70vn4JTyBIzzORc+MKIMdaW2Gt7QBewfOM0/NM5Pw43efXBXuuXajAzwfAWG8F+SA8RcVeu0DHFhlUvGOtHwcOWWt/023Va4CvEvxXgLXdln/ZW01+PlDXLQVRRE5grf13a22ytTYFz/PqLWvtTUA6cIN3sxPvMd+9d4N3+4vmNzwiFytrbSlQYIwZ7120DDiInmci50o+MN8YE+r9/6PvHtPzTOT8ON3n1yZguTEm2puht9y77JwzF+peNsasxFMzIQB4wlp7zwU5sMggY4y5FHgH2Mff64/8EE+dnxeBkUAecKO1ttr7oH8ET2pvM3CLtfbDC95wkU8gY8zlwHettZ8xxqThyQCKATKAL1pr24wxwcCf8NTbqgZWW2uPf0xNFvlEMcbMwFNEPQg4DtyC5xeTep6JnAPGmP8EvoBnVtgM4HY8NUT0PBM5C8aY54HLgVigDM/sXH/lNJ9fxphb8fTlAO6x1j55XtqrIK6IiIiIiIiIyOCk4s4iIiIiIiIiIoOUAj8iIiIiIiIiIoOUAj8iIiIiIiIiIoOUAj8iIiIiIiIiIoOUAj8iIiIiIiIiIoOUAj8iIiIiIiIiIoOUAj8iIiIiIiIiIoOUAj8iIiIiIiIiIoPU/wdqsXntwcbEZAAAAABJRU5ErkJggg==\n",
"text/plain": [
"