From 0d0540952f79437026fc5a146b81e4b45190ff6a Mon Sep 17 00:00:00 2001 From: aktersnurra Date: Mon, 3 Aug 2020 23:56:51 +0200 Subject: Fix import error in datasets package. --- README.md | 5 +- src/notebooks/01-look-at-emnist.ipynb | 422 ++------------------- src/notebooks/02b-emnist-lines-dataset.ipynb | 132 ------- src/text_recognizer/datasets/__init__.py | 2 - .../datasets/emnist_lines_dataset.py | 3 +- 5 files changed, 40 insertions(+), 524 deletions(-) diff --git a/README.md b/README.md index b8ae275..46e2611 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ TBC - [x] Start implementing callback list stuff in train.py - [x] Fix s.t. callbacks can be loaded in run_experiment.py - [x] Lift out Emnist dataset out of Emnist dataloaders -- [ ] Finish Emnist line dataset +- [x] Finish Emnist line dataset - [x] SentenceGenerator -- [ ] Implement line model +- [ ] Write a Emnist line data loader +- [ ] Implement ctc line model diff --git a/src/notebooks/01-look-at-emnist.ipynb b/src/notebooks/01-look-at-emnist.ipynb index 044040c..71aa3ec 100644 --- a/src/notebooks/01-look-at-emnist.ipynb +++ b/src/notebooks/01-look-at-emnist.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -25,67 +25,13 @@ "execution_count": 4, "metadata": {}, "outputs": [], - "source": [ - "from text_recognizer.datasets import EmnistDataLoaders" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "data_loaders = EmnistDataLoaders(splits=[\"val\"], sample_to_balance=True,\n", - " subsample_fraction = None,\n", - " transform = None,\n", - " target_transform = None,\n", - " batch_size = 1,\n", - " shuffle = True,\n", - " num_workers = 0,\n", - " cuda = False,\n", - " seed = 4711)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Dataset EMNIST\n", - " Number of datapoints: 55908\n", - " Root location: /home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/data\n", - " Split: Test\n", - " StandardTransform\n", - "Transform: Compose(\n", - " \n", - " ToTensor()\n", - " )" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_loaders" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], "source": [ "from text_recognizer.datasets import EmnistDataset" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -95,379 +41,81 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 9, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "torch.Size([3, 28, 28])" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "EMNIST Dataset\n", + "Num classes: 80\n", + "Mapping: {0: '0', 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: '8', 9: '9', 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F', 16: 'G', 17: 'H', 18: 'I', 19: 'J', 20: 'K', 21: 'L', 22: 'M', 23: 'N', 24: 'O', 25: 'P', 26: 'Q', 27: 'R', 28: 'S', 29: 'T', 30: 'U', 31: 'V', 32: 'W', 33: 'X', 34: 'Y', 35: 'Z', 36: 'a', 37: 'b', 38: 'c', 39: 'd', 40: 'e', 41: 'f', 42: 'g', 43: 'h', 44: 'i', 45: 'j', 46: 'k', 47: 'l', 48: 'm', 49: 'n', 50: 'o', 51: 'p', 52: 'q', 53: 'r', 54: 's', 55: 't', 56: 'u', 57: 'v', 58: 'w', 59: 'x', 60: 'y', 61: 'z', 62: ' ', 63: '!', 64: '\"', 65: '#', 66: '&', 67: \"'\", 68: '(', 69: ')', 70: '*', 71: '+', 72: ',', 73: '-', 74: '.', 75: '/', 76: ':', 77: ';', 78: '?', 79: '_'}\n", + "Input shape: [28, 28]\n", + "\n" + ] } ], "source": [ - "dataset.data[[1, 2, 3]].shape" + "print(dataset)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tensor([18, 36, 0, ..., 28, 0, 5])" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "dataset.targets" + "def display_images(dataset, shift=0):\n", + " fig = plt.figure(figsize=(9, 9))\n", + " for i in range(9):\n", + " x, y = dataset[i + shift]\n", + " ax = fig.add_subplot(3, 3, i + 1)\n", + " x = x.squeeze(0).numpy()\n", + " ax.imshow(x, cmap='gray')\n", + " ax.set_xticks([])\n", + " ax.set_yticks([])\n", + " ax.set_title(dataset.mapping[int(y)])" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { + "image/png": "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x6umxB07drhs586dLrvoootcphoSzXSTlzomUx2zrJp94o59Ru6pqamR+bp161w2ceJEl40YMSJRVttGVPVe6d+/v8tUA6Fa9+9//3uXqcl277zzjlwPTbTnTjVYX3vttS6bMmWKy9R017g93JAaCBXVELx582aXpXuvcocAAABQEAAAAAoCAABgFAQAAMAaYFNhbakmDtXEp5oSjx075rILLrjAZX369HFZhw4d5HrUhEd1/PH69etd9v7777usoTfrQE9/+/u//3uX9erVy2U33HCDy9TkQ3WcuWpsNTO76aabXPb1r3/dZeqYctVAqH6W48ePy9dG3WrXrp3L1DTWli1buqyiosJlZWVl8nVytfEzPz/fZervDzVRVx1bnm7cIQAAABQEAACAggAAABgFAQAAsEbcVKgmbpnpyYCtWrVymZq6pZqirrnmGpcNGTLEZerYZTOzqqoql6lGnGXLliW6LlebdZCcOjK1srLSZWpq5YABA1ym3hPqsffdd59cj5paV11d7bLf/e53Lps7d67LaCBMD3VE9ciRI12mplsqa9ascdnatWvltbnwOaXeA8XFxS5TkzrVVEJ1JHK6cYcAAABQEAAAAAoCAABgFAQAAMAoCAAAgDXAbxmoMZFt2rRx2YwZM+TjR40a5TI1krV169YuU99cKCkpcVnz5s1dptZtZrZ7926Xbdy40WUvvfSSy9Q3FNDw7dmzx2VLlixxWf/+/V3WokULl1188cUumzRpksuuvfZauZ4jR4647Ic//KHLnn32WZepEclIDzWmePr06S4rKipy2cGDB1321FNPuezAgQPnuLrMU2Pg1fjhU6dOuUx9iyIbxspzhwAAAFAQAAAACgIAAGAUBAAAwBpJU6FqjlHnsZuZXXTRRYmeU1GNIqq5Ro1tVeORzcw6dOjgMjUOWZ01/tprr7ls9erVLjtz5ox8beSmEydOuEw1Fd54440u69q1q8t+/OMfu0w1ku3atUuu5xe/+IXLFi1a5DK1h5E5amT1oEGDXKZGHKvPPdUMXVNTc46ryzzVRK5GO8eNpc9G3CEAAAAUBAAAgIIAAAAYBQEAALAG2FSoqKa5Y8eOyWtVk4tqFjx9+rTL1Jnz6rzv8vJyl5WWlsr1DB8+3GWqSfKKK65wmWp62bRpk8vUOdwnT56U60Fu2rt3r8u2bt3qsh49eris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\n", "text/plain": [ - "{0: '0',\n", - " 1: '1',\n", - " 2: '2',\n", - " 3: '3',\n", - " 4: '4',\n", - " 5: '5',\n", - " 6: '6',\n", - " 7: '7',\n", - " 8: '8',\n", - " 9: '9',\n", - " 10: 'A',\n", - " 11: 'B',\n", - " 12: 'C',\n", - " 13: 'D',\n", - " 14: 'E',\n", - " 15: 'F',\n", - " 16: 'G',\n", - " 17: 'H',\n", - " 18: 'I',\n", - " 19: 'J',\n", - " 20: 'K',\n", - " 21: 'L',\n", - " 22: 'M',\n", - " 23: 'N',\n", - " 24: 'O',\n", - " 25: 'P',\n", - " 26: 'Q',\n", - " 27: 'R',\n", - " 28: 'S',\n", - " 29: 'T',\n", - " 30: 'U',\n", - " 31: 'V',\n", - " 32: 'W',\n", - " 33: 'X',\n", - " 34: 'Y',\n", - " 35: 'Z',\n", - " 36: 'a',\n", - " 37: 'b',\n", - " 38: 'c',\n", - " 39: 'd',\n", - " 40: 'e',\n", - " 41: 'f',\n", - " 42: 'g',\n", - " 43: 'h',\n", - " 44: 'i',\n", - " 45: 'j',\n", - " 46: 'k',\n", - " 47: 'l',\n", - " 48: 'm',\n", - " 49: 'n',\n", - " 50: 'o',\n", - " 51: 'p',\n", - " 52: 'q',\n", - " 53: 'r',\n", - " 54: 's',\n", - " 55: 't',\n", - " 56: 'u',\n", - " 57: 'v',\n", - " 58: 'w',\n", - " 59: 'x',\n", - " 60: 'y',\n", - " 61: 'z',\n", - " 62: ' ',\n", - " 63: '!',\n", - " 64: '\"',\n", - " 65: '#',\n", - " 66: '&',\n", - " 67: \"'\",\n", - " 68: '(',\n", - " 69: ')',\n", - " 70: '*',\n", - " 71: '+',\n", - " 72: ',',\n", - " 73: '-',\n", - " 74: '.',\n", - " 75: '/',\n", - " 76: ':',\n", - " 77: ';',\n", - " 78: '?',\n", - " 79: '_'}" + "
" ] }, - "execution_count": 17, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "dataset.mapping" + "display_images(dataset)" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { + "image/png": "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\n", "text/plain": [ - "tensor([18, 36, 0, ..., 28, 0, 5])" + "
" ] }, - "execution_count": 20, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "dataset.targets" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "np.random.randint(0, len(data_loader(\"val\").dataset.data), 4)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data_loader(\"val\").dataset.targets[np.random.randint(0, len(data_loader(\"val\").dataset.data), 4)].numpy()[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "len(data_loader(\"val\"))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x = data_loader(\"val\").dataset.data[np.random.randint(0, len(data_loader(\"val\").dataset.data), 4)]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\"accuracy\" in \"val_accuracy\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x[0].dtype" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x = x[0].type(\"torch.FloatTensor\") / 255" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x = x.numpy().reshape(28, 28).swapaxes(0, 1)\n", - "plt.imshow(x, cmap='gray')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fix below with new data loader" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "classes = load_emnist_mapping()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def display_dl_images(dl, batch_size, classes):\n", - " fig = plt.figure(figsize=(9, 9))\n", - " batch = next(iter(dl))\n", - " for i in range(batch_size):\n", - " x, y = batch[0][i], batch[1][i]\n", - " ax = fig.add_subplot(3, 3, i + 1)\n", - " x = x.squeeze(0).numpy()\n", - " ax.imshow(x, cmap='gray')\n", - " ax.set_xticks([])\n", - " ax.set_yticks([])\n", - " ax.set_title(classes[int(y)])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def display_images(dataset, classes, shift=0):\n", - " fig = plt.figure(figsize=(9, 9))\n", - " for i in range(9):\n", - " x, y = dataset[i + shift]\n", - " ax = fig.add_subplot(3, 3, i + 1)\n", - " x = x.squeeze(0).numpy()\n", - " ax.imshow(x, cmap='gray')\n", - " ax.set_xticks([])\n", - " ax.set_yticks([])\n", - " ax.set_title(classes[int(y)])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "a = None" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if a:\n", - " print(\"afaf\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "classes = load_emnist_mapping()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "display_images(dataset, classes)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "display_dl_images(dl, 9, classes)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "display_dl_images(dl, 9, classes)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "display_dl_images(dl, 9, classes)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fig = plt.figure(figsize=(9, 9))\n", - "for i, j in enumerate([5, 7, 9]):\n", - " x, y = dataset[j]\n", - " ax = fig.add_subplot(3, 3, i + 1)\n", - " x = x.numpy().reshape(28, 28).swapaxes(0, 1)\n", - " ax.imshow(x, cmap='gray')\n", - " ax.set_xticks([])\n", - " ax.set_yticks([])\n", - " ax.set_title(classes[int(y)])" + "display_images(dataset, 9)" ] }, { diff --git a/src/notebooks/02b-emnist-lines-dataset.ipynb b/src/notebooks/02b-emnist-lines-dataset.ipynb index e0bc2c8..3a3b88e 100644 --- a/src/notebooks/02b-emnist-lines-dataset.ipynb +++ b/src/notebooks/02b-emnist-lines-dataset.ipynb @@ -249,138 +249,6 @@ " plt.imshow(data.squeeze(0), cmap='gray')\n" ] }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(tensor([[[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0078, 0.0157, 0.0157, 0.0157, 0.0157, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0118, 0.1333,\n", - " 0.3020, 0.4902, 0.4980, 0.4902, 0.4431, 0.1294, 0.0039, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0039, 0.0863, 0.3725,\n", - " 0.6235, 0.8431, 0.8510, 0.8431, 0.7922, 0.3529, 0.0314, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0118, 0.0314, 0.1843, 0.6235, 0.9098,\n", - " 0.9686, 0.9961, 0.9961, 0.9961, 0.9922, 0.8549, 0.3098, 0.0118,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0314, 0.3098, 0.4941, 0.8157, 0.9569, 0.9137,\n", - " 0.8706, 0.8863, 0.9804, 0.9961, 0.9961, 0.9843, 0.6667, 0.0824,\n", - " 0.0078, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0039, 0.1373, 0.6235, 0.8118, 0.9569, 0.9098, 0.6824,\n", - " 0.5804, 0.6784, 0.9451, 0.9961, 0.9961, 0.9961, 0.7961, 0.1255,\n", - " 0.0157, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0039,\n", - " 0.0275, 0.1843, 0.6431, 0.9608, 0.9686, 0.8118, 0.3725, 0.1765,\n", - " 0.3451, 0.8275, 0.9804, 0.9961, 1.0000, 0.9961, 0.8510, 0.1451,\n", - " 0.0157, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.1294,\n", - " 0.3529, 0.8118, 0.9647, 0.9059, 0.7647, 0.2314, 0.0353, 0.3216,\n", - " 0.6667, 0.9843, 0.9843, 0.9882, 0.9961, 0.9961, 0.8706, 0.2039,\n", - " 0.0431, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0392, 0.4980,\n", - " 0.8118, 0.9804, 0.8549, 0.3725, 0.1843, 0.0196, 0.0157, 0.4392,\n", - " 0.7922, 0.9216, 0.5804, 0.7490, 0.9216, 0.9843, 0.9647, 0.6235,\n", - " 0.3098, 0.0118, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0039, 0.1412, 0.6863,\n", - " 0.9098, 0.9176, 0.6235, 0.1412, 0.0392, 0.0000, 0.0078, 0.3216,\n", - " 0.6745, 0.8627, 0.2863, 0.5686, 0.8431, 0.8902, 0.9647, 0.8118,\n", - " 0.4941, 0.0314, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0039, 0.1373, 0.6392, 0.9569,\n", - " 0.9529, 0.5137, 0.0902, 0.0039, 0.0000, 0.0000, 0.0000, 0.1294,\n", - " 0.4314, 0.7098, 0.1412, 0.3686, 0.4980, 0.2667, 0.6980, 0.9490,\n", - " 0.7961, 0.1255, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0275, 0.1294, 0.6392, 0.9608, 0.8667,\n", - " 0.6392, 0.1294, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0196,\n", - " 0.0706, 0.1216, 0.0235, 0.0510, 0.0549, 0.0275, 0.5098, 0.9608,\n", - " 0.8471, 0.1451, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0784, 0.3020, 0.8549, 0.9843, 0.6941,\n", - " 0.3765, 0.0314, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0078, 0.0118, 0.0000, 0.0039, 0.0039, 0.0431, 0.5529, 0.9647,\n", - " 0.8510, 0.1451, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.1490, 0.4980, 0.9765, 0.9529, 0.4510,\n", - " 0.1333, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0118, 0.3098, 0.8627, 0.9490,\n", - " 0.7922, 0.1255, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0275, 0.3725, 0.6941, 0.9765, 0.6863, 0.1333,\n", - " 0.0275, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0784, 0.1843, 0.6902, 0.9490, 0.6392,\n", - " 0.3529, 0.0275, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0784, 0.6235, 0.8627, 0.9608, 0.5020, 0.0392,\n", - " 0.0039, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0157, 0.2627, 0.4824, 0.8588, 0.8549, 0.3569,\n", - " 0.1373, 0.0039, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.1451, 0.8431, 0.9765, 0.8706, 0.2000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0039, 0.0863, 0.3294, 0.7333, 0.8980, 0.7333, 0.3098, 0.0314,\n", - " 0.0039, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.1451, 0.8510, 0.9804, 0.8510, 0.1529, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0118, 0.0863,\n", - " 0.1843, 0.6235, 0.9059, 0.9490, 0.8549, 0.3098, 0.0157, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.1451, 0.8431, 0.9765, 0.9176, 0.3765, 0.0431,\n", - " 0.0196, 0.0157, 0.0157, 0.0314, 0.0627, 0.1059, 0.3255, 0.6706,\n", - " 0.8157, 0.9333, 0.8627, 0.6196, 0.3529, 0.0314, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.1255, 0.7922, 0.9529, 0.9686, 0.6431, 0.2039,\n", - " 0.1529, 0.1451, 0.1451, 0.1922, 0.2745, 0.3725, 0.6706, 0.9020,\n", - " 0.9333, 0.8157, 0.5451, 0.3020, 0.1294, 0.0039, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0275, 0.3725, 0.6824, 0.9725, 0.9647, 0.8706,\n", - " 0.8510, 0.8510, 0.8510, 0.8667, 0.8941, 0.9137, 0.9020, 0.7922,\n", - " 0.6235, 0.1843, 0.0353, 0.0078, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0784, 0.2549, 0.5412, 0.8000, 0.9137,\n", - " 0.9608, 0.9608, 0.8667, 0.8431, 0.7961, 0.5451, 0.3216, 0.1333,\n", - " 0.0784, 0.0039, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0078, 0.0353, 0.1333, 0.3216,\n", - " 0.4471, 0.4471, 0.2000, 0.1451, 0.1255, 0.0353, 0.0078, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0157, 0.0824,\n", - " 0.1255, 0.1255, 0.0353, 0.0157, 0.0157, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n", - " 0.0000, 0.0000, 0.0000, 0.0000]]]),\n", - " tensor(0))" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "emnist_train[0]" - ] - }, { "cell_type": "code", "execution_count": null, diff --git a/src/text_recognizer/datasets/__init__.py b/src/text_recognizer/datasets/__init__.py index bfa6a02..a8c46c4 100644 --- a/src/text_recognizer/datasets/__init__.py +++ b/src/text_recognizer/datasets/__init__.py @@ -9,7 +9,6 @@ from .emnist_lines_dataset import ( EmnistLinesDataset, get_samples_by_character, ) -from .sentence_generator import SentenceGenerator from .util import Transpose __all__ = [ @@ -19,6 +18,5 @@ __all__ = [ "EmnistDataLoaders", "EmnistLinesDataset", "get_samples_by_character", - "SentenceGenerator", "Transpose", ] diff --git a/src/text_recognizer/datasets/emnist_lines_dataset.py b/src/text_recognizer/datasets/emnist_lines_dataset.py index d49319f..4d8b646 100644 --- a/src/text_recognizer/datasets/emnist_lines_dataset.py +++ b/src/text_recognizer/datasets/emnist_lines_dataset.py @@ -11,7 +11,8 @@ import torch from torch.utils.data import Dataset from torchvision.transforms import Compose, Normalize, ToTensor -from text_recognizer.datasets import DATA_DIRNAME, EmnistDataset, SentenceGenerator +from text_recognizer.datasets import DATA_DIRNAME, EmnistDataset +from text_recognizer.datasets.sentence_generator import SentenceGenerator from text_recognizer.datasets.util import Transpose DATA_DIRNAME = DATA_DIRNAME / "processed" / "emnist_lines" -- cgit v1.2.3-70-g09d2