{ "info": { "author": "Philippe Remy", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "# Keras TCN\n\n\n[![Downloads](https://pepy.tech/badge/keras-tcn)](https://pepy.tech/project/keras-tcn)\n[![Downloads](https://pepy.tech/badge/keras-tcn/month)](https://pepy.tech/project/keras-tcn)\n```bash\npip install keras-tcn\n```\n\n*Keras Temporal Convolutional Network*\n\n * [Keras TCN](#keras-tcn)\n * [Why Temporal Convolutional Network?](#why-temporal-convolutional-network)\n * [API](#api)\n * [Arguments](#arguments)\n * [Input shape](#input-shape)\n * [Output shape](#output-shape)\n * [Supported task types](#supported-task-types)\n * [Receptive field](#receptive-field)\n * [Non-causal TCN](#non-causal-tcn)\n * [Installation (Python 3)](#installation-python-3)\n * [Run](#run)\n * [Tasks](#tasks)\n * [Adding Task](#adding-task)\n * [Explanation](#explanation)\n * [Implementation results](#implementation-results)\n * [Copy Memory Task](#copy-memory-task)\n * [Explanation](#explanation-1)\n * [Implementation results (first epochs)](#implementation-results-first-epochs)\n * [Sequential MNIST](#sequential-mnist)\n * [Explanation](#explanation-2)\n * [Implementation results](#implementation-results-1)\n * [References](#references)\n\n## Why Temporal Convolutional Network?\n\n- TCNs exhibit longer memory than recurrent architectures with the same capacity.\n- Constantly performs better than LSTM/GRU architectures on a vast range of tasks (Seq. MNIST, Adding Problem, Copy Memory, Word-level PTB...).\n- Parallelism, flexible receptive field size, stable gradients, low memory requirements for training, variable length inputs...\n\n

\n \n Visualization of a stack of dilated causal convolutional layers (Wavenet, 2016)

\n

\n\n## API\n\nThe usual way is to import the TCN layer and use it inside a Keras model. An example is provided below for a regression task (cf. `tasks/` for other examples):\n\n```python\nfrom keras.layers import Dense\nfrom keras.models import Input, Model\n\nfrom tcn import TCN\n\nbatch_size, timesteps, input_dim = None, 20, 1\n\n\ndef get_x_y(size=1000):\n import numpy as np\n pos_indices = np.random.choice(size, size=int(size // 2), replace=False)\n x_train = np.zeros(shape=(size, timesteps, 1))\n y_train = np.zeros(shape=(size, 1))\n x_train[pos_indices, 0] = 1.0\n y_train[pos_indices, 0] = 1.0\n return x_train, y_train\n\n\ni = Input(batch_shape=(batch_size, timesteps, input_dim))\n\no = TCN(return_sequences=False)(i) # The TCN layers are here.\no = Dense(1)(o)\n\nm = Model(inputs=[i], outputs=[o])\nm.compile(optimizer='adam', loss='mse')\n\nx, y = get_x_y()\nm.fit(x, y, epochs=10, validation_split=0.2)\n```\n\nIn the example above, TCNs can also be stacked together, like this:\n\n```python\no = TCN(return_sequences=True)(i)\no = TCN(return_sequences=False)(o)\n```\n\nA ready-to-use TCN model can be used that way (cf. `tasks/` for the full code):\n\n```python\nfrom tcn import compiled_tcn\n\nmodel = compiled_tcn(...)\nmodel.fit(x, y) # Keras model.\n```\n\n### Arguments\n\n`TCN(nb_filters=64, kernel_size=2, nb_stacks=1, dilations=[1, 2, 4, 8, 16, 32], padding='causal', use_skip_connections=True, dropout_rate=0.0, return_sequences=True, activation='linear', name='tcn', kernel_initializer='he_normal', use_batch_norm=False)`\n\n- `nb_filters`: Integer. The number of filters to use in the convolutional layers. Would be similar to `units` for LSTM.\n- `kernel_size`: Integer. The size of the kernel to use in each convolutional layer.\n- `dilations`: List. A dilation list. Example is: [1, 2, 4, 8, 16, 32, 64].\n- `nb_stacks`: Integer. The number of stacks of residual blocks to use.\n- `padding`: String. The padding to use in the convolutions. 'causal' for a causal network (as in the original implementation) and 'same' for a non-causal network.\n- `use_skip_connections`: Boolean. If we want to add skip connections from input to each residual block.\n- `return_sequences`: Boolean. Whether to return the last output in the output sequence, or the full sequence.\n- `dropout_rate`: Float between 0 and 1. Fraction of the input units to drop.\n- `activation`: The activation used in the residual blocks o = activation(x + F(x)).\n- `name`: Name of the model. Useful when having multiple TCN.\n- `kernel_initializer`: Initializer for the kernel weights matrix (Conv1D).\n- `use_batch_norm`: Whether to use batch normalization in the residual layers or not.\n\n### Input shape\n\n3D tensor with shape `(batch_size, timesteps, input_dim)`.\n\n`timesteps` can be None. This can be useful if each sequence is of a different length: [Multiple Length Sequence Example](tasks/multi_length_sequences.py).\n\n### Output shape\n\n- if `return_sequences=True`: 3D tensor with shape `(batch_size, timesteps, nb_filters)`.\n- if `return_sequences=False`: 2D tensor with shape `(batch_size, nb_filters)`.\n\n### Supported task types\n\n- Regression (Many to one) e.g. adding problem\n- Classification (Many to many) e.g. copy memory task\n- Classification (Many to one) e.g. sequential mnist task\n\nFor a Many to Many regression, a cheap fix for now is to change the [number of units of the final Dense layer](https://github.com/philipperemy/keras-tcn/blob/8151b4a87f906fd856fd1c113c48392d542d0994/tcn/tcn.py#L90).\n\n### Receptive field\n\n- Receptive field = **nb_stacks_of_residuals_blocks * kernel_size * last_dilation**.\n- If a TCN has only one stack of residual blocks with a kernel size of 2 and dilations [1, 2, 4, 8], its receptive field is 2 * 1 * 8 = 16. The image below illustrates it:\n\n

\n \n ks = 2, dilations = [1, 2, 4, 8], 1 block

\n

\n\n- If the TCN has now 2 stacks of residual blocks, wou would get the situation below, that is, an increase in the receptive field to 32:\n\n

\n \n ks = 2, dilations = [1, 2, 4, 8], 2 blocks

\n

\n\n\n- If we increased the number of stacks to 3, the size of the receptive field would increase again, such as below:\n\n

\n \n ks = 2, dilations = [1, 2, 4, 8], 3 blocks

\n

\n\nThanks to [@alextheseal](https://github.com/alextheseal) for providing such visuals.\n\n### Non-causal TCN\n\nMaking the TCN architecture non-causal allows it to take the future into consideration to do its prediction as shown in the figure below.\n\nHowever, it is not anymore suitable for real-time applications.\n\n

\n \n Non-Causal TCN - ks = 3, dilations = [1, 2, 4, 8], 1 block

\n

\n\nTo use a non-causal TCN, specify `padding='valid'` or `padding='same'` when initializing the TCN layers.\n\nSpecial thanks to: [@qlemaire22](https://github.com/qlemaire22)\n\n## Installation (Python 3)\n\n```bash\ngit clone git@github.com:philipperemy/keras-tcn.git\ncd keras-tcn\nvirtualenv -p python3.6 venv\nsource venv/bin/activate\npip install -r requirements.txt # change to tensorflow if you dont have a gpu.\npip install . --upgrade # install it as a package.\n```\n\nNote: Only compatible with Python 3 at the moment. Should be almost compatible with python 2.\n\n## Run\n\nOnce `keras-tcn` is installed as a package, you can take a glimpse of what's possible to do with TCNs. Some tasks examples are available in the repository for this purpose:\n\n```bash\ncd adding_problem/\npython main.py # run adding problem task\n\ncd copy_memory/\npython main.py # run copy memory task\n\ncd mnist_pixel/\npython main.py # run sequential mnist pixel task\n```\n\n## Tasks\n\n### Adding Task\n\nThe task consists of feeding a large array of decimal numbers to the network, along with a boolean array of the same length. The objective is to sum the two decimals where the boolean array contain the two 1s.\n\n#### Explanation\n\n

\n \n Adding Problem Task

\n

\n\n#### Implementation results\n\nThe model takes time to learn this task. It's symbolized by a very long plateau (could take ~8 epochs on some runs).\n\n```\n200000/200000 [==============================] - 293s 1ms/step - loss: 0.1731 - val_loss: 0.1662\n200000/200000 [==============================] - 289s 1ms/step - loss: 0.1675 - val_loss: 0.1665\n200000/200000 [==============================] - 287s 1ms/step - loss: 0.1670 - val_loss: 0.1665\n200000/200000 [==============================] - 288s 1ms/step - loss: 0.1668 - val_loss: 0.1669\n200000/200000 [==============================] - 285s 1ms/step - loss: 0.1085 - val_loss: 0.0019\n200000/200000 [==============================] - 285s 1ms/step - loss: 0.0011 - val_loss: 4.1667e-04\n200000/200000 [==============================] - 282s 1ms/step - loss: 6.0470e-04 - val_loss: 6.7708e-04\n200000/200000 [==============================] - 282s 1ms/step - loss: 4.3099e-04 - val_loss: 7.3898e-04\n200000/200000 [==============================] - 282s 1ms/step - loss: 3.9102e-04 - val_loss: 1.8727e-04\n200000/200000 [==============================] - 280s 1ms/step - loss: 3.1040e-04 - val_loss: 0.0010\n200000/200000 [==============================] - 281s 1ms/step - loss: 3.1166e-04 - val_loss: 2.2333e-04\n200000/200000 [==============================] - 281s 1ms/step - loss: 2.8046e-04 - val_loss: 1.5194e-04\n```\n\n### Copy Memory Task\n\nThe copy memory consists of a very large array:\n- At the beginning, there's the vector x of length N. This is the vector to copy.\n- At the end, N+1 9s are present. The first 9 is seen as a delimiter.\n- In the middle, only 0s are there.\n\nThe idea is to copy the content of the vector x to the end of the large array. The task is made sufficiently complex by increasing the number of 0s in the middle.\n\n#### Explanation\n\n

\n \n Copy Memory Task

\n

\n\n#### Implementation results (first epochs)\n\n```\n30000/30000 [==============================] - 30s 1ms/step - loss: 0.1174 - acc: 0.9586 - val_loss: 0.0370 - val_acc: 0.9859\n30000/30000 [==============================] - 26s 874us/step - loss: 0.0367 - acc: 0.9859 - val_loss: 0.0363 - val_acc: 0.9859\n30000/30000 [==============================] - 26s 852us/step - loss: 0.0361 - acc: 0.9859 - val_loss: 0.0358 - val_acc: 0.9859\n30000/30000 [==============================] - 26s 872us/step - loss: 0.0355 - acc: 0.9859 - val_loss: 0.0349 - val_acc: 0.9859\n30000/30000 [==============================] - 25s 850us/step - loss: 0.0339 - acc: 0.9864 - val_loss: 0.0291 - val_acc: 0.9881\n30000/30000 [==============================] - 26s 856us/step - loss: 0.0235 - acc: 0.9896 - val_loss: 0.0159 - val_acc: 0.9944\n30000/30000 [==============================] - 26s 872us/step - loss: 0.0169 - acc: 0.9929 - val_loss: 0.0125 - val_acc: 0.9966\n```\n\n### Sequential MNIST\n\n#### Explanation\n\nThe idea here is to consider MNIST images as 1-D sequences and feed them to the network. This task is particularly hard because sequences are 28*28 = 784 elements. In order to classify correctly, the network has to remember all the sequence. Usual LSTM are unable to perform well on this task.\n\n

\n \n Sequential MNIST

\n

\n\n#### Implementation results\n\n```\n60000/60000 [==============================] - 118s 2ms/step - loss: 0.2348 - acc: 0.9265 - val_loss: 0.1308 - val_acc: 0.9579\n60000/60000 [==============================] - 116s 2ms/step - loss: 0.0973 - acc: 0.9698 - val_loss: 0.0645 - val_acc: 0.9798\n[...]\n60000/60000 [==============================] - 112s 2ms/step - loss: 0.0075 - acc: 0.9978 - val_loss: 0.0547 - val_acc: 0.9894\n60000/60000 [==============================] - 111s 2ms/step - loss: 0.0093 - acc: 0.9968 - val_loss: 0.0585 - val_acc: 0.9895\n```\n\n\n## References\n- https://github.com/locuslab/TCN/ (TCN for Pytorch)\n- https://arxiv.org/pdf/1803.01271.pdf (An Empirical Evaluation of Generic Convolutional and Recurrent Networks\nfor Sequence Modeling)\n- https://arxiv.org/pdf/1609.03499.pdf (Original Wavenet paper)\n\n## Useful links\n- https://github.com/Baichenjia/Tensorflow-TCN (Tensorflow Eager implementation of TCNs)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "keras-tcn", "package_url": "https://pypi.org/project/keras-tcn/", "platform": "", "project_url": "https://pypi.org/project/keras-tcn/", "project_urls": null, "release_url": "https://pypi.org/project/keras-tcn/2.8.3/", "requires_dist": [ "numpy", "keras" ], "requires_python": "", "summary": "Keras TCN", "version": "2.8.3" }, "last_serial": 5726000, "releases": { "2.1.0": [ { "comment_text": "", "digests": { "md5": "1ef22244ccba1a9be3fc54bce665bdad", "sha256": "90a79f050592a031d243ff7746b9cffeb8419a0895c6ab2d01125355867bfab2" }, "downloads": -1, "filename": "keras_tcn-2.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1ef22244ccba1a9be3fc54bce665bdad", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3721, "upload_time": "2018-09-28T05:04:13", "url": "https://files.pythonhosted.org/packages/c0/d4/4cd13df3832c55b1103843764bb1c71398b0d22f00a27d8b1b701f04b51f/keras_tcn-2.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c976e38da161a20ea6c40a5a2218602", "sha256": "db1fa81a398c2d44423a5c198646472b8b96c54696fb0a7e916b3caf84d3cf3c" }, "downloads": -1, "filename": "keras-tcn-2.1.0.tar.gz", "has_sig": false, "md5_digest": "7c976e38da161a20ea6c40a5a2218602", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6413, "upload_time": "2018-09-28T05:04:14", "url": "https://files.pythonhosted.org/packages/9a/96/4f0e012b952cf03800219e3b1c1a87389f6d7bac35a4001976c481e583e8/keras-tcn-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "8c2803a43efa7a9691fd1a6830c8dda3", "sha256": "84194d438336d2be946750ee8e7d54e7e28310a1f2c411f478896fe0e8099edd" }, "downloads": -1, "filename": "keras_tcn-2.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8c2803a43efa7a9691fd1a6830c8dda3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7278, "upload_time": "2018-09-28T05:08:52", "url": "https://files.pythonhosted.org/packages/a7/f8/780b2694b52bd7122b3dad640f79f10f626c7e055f6a24b4e1b07423069c/keras_tcn-2.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a82db18eccaa6e3ea14a528e78560aeb", "sha256": "ff1a4b34bb6b730d819f20025f752361e00387ce6e0c8d631036cccb8e36406c" }, "downloads": -1, "filename": "keras-tcn-2.1.1.tar.gz", "has_sig": false, "md5_digest": "a82db18eccaa6e3ea14a528e78560aeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7287, "upload_time": "2018-09-28T05:08:53", "url": "https://files.pythonhosted.org/packages/6c/1e/7286876ee6b154c528fbf4d784cb2dc70a65a65ae27f4866b1f7077d5c0d/keras-tcn-2.1.1.tar.gz" } ], "2.1.2": [ { "comment_text": "", "digests": { "md5": "c015a10cf5608c517a2b730e627c95da", "sha256": "7235cefc49d93fad4062d30131432d5d400b352323190fce979fe4c60752fd5e" }, "downloads": -1, "filename": "keras_tcn-2.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c015a10cf5608c517a2b730e627c95da", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7299, "upload_time": "2018-09-28T05:11:07", "url": "https://files.pythonhosted.org/packages/8a/0f/bcb1cc86a29f8a4654ece336067f3fb55cb1abd7a8f9cf5bf9a354242630/keras_tcn-2.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fbdcf3a8bbff41a54ee79ae98d469d6", "sha256": "7dd0765f130db920106175958aa2cb285c2e83ef4f2568dd478efde98308aa43" }, "downloads": -1, "filename": "keras-tcn-2.1.2.tar.gz", "has_sig": false, "md5_digest": "4fbdcf3a8bbff41a54ee79ae98d469d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7321, "upload_time": "2018-09-28T05:11:08", "url": "https://files.pythonhosted.org/packages/76/e9/e68e45c0780219261deab912238a38cfe465efc7c759322ee26603f42f10/keras-tcn-2.1.2.tar.gz" } ], "2.2.3": [ { "comment_text": "", "digests": { "md5": "6f6a9f99ec1f320cad53dacdf7a9d545", "sha256": "dea58a4e7466a8b6c2f981a093177e696f8878b3499b5c5f6811f0df4b79f50d" }, "downloads": -1, "filename": "keras_tcn-2.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6f6a9f99ec1f320cad53dacdf7a9d545", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12177, "upload_time": "2018-10-16T05:25:57", "url": "https://files.pythonhosted.org/packages/54/3b/6ba16c05f999a6fdd9fcea3a3c44f498e88244b924b07e892145761fc3c7/keras_tcn-2.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e35b32c3df99aa23b8ba2745849e9d1f", "sha256": "11dfdb5f96b1e67e573350e54e5638e29b24af8fd9b5feee6347550a9c61c04e" }, "downloads": -1, "filename": "keras-tcn-2.2.3.tar.gz", "has_sig": false, "md5_digest": "e35b32c3df99aa23b8ba2745849e9d1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7780, "upload_time": "2018-10-16T05:25:59", "url": "https://files.pythonhosted.org/packages/7d/2a/c39f747b6748545875c0a790b515d5382be5066b21d780306a894ad4954d/keras-tcn-2.2.3.tar.gz" } ], "2.3.3": [ { "comment_text": "", "digests": { "md5": "0573dc6ae042271d2dbc9575e058ea35", "sha256": "cbbdc49fb554e25cfba7debbbec72306c5c53595ca77558316434366ad150b51" }, "downloads": -1, "filename": "keras_tcn-2.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0573dc6ae042271d2dbc9575e058ea35", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13123, "upload_time": "2018-11-28T01:52:30", "url": "https://files.pythonhosted.org/packages/cf/07/763107386eeaa137bc1b365a0e4e46daaafa7c9064e03ace2635bfc367b0/keras_tcn-2.3.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6a4d7ad96585383815caf618c2ba555", "sha256": "8ffbed492358e4bdb161156058207f7c1ee05a842b394ce6fbb02450c39909cb" }, "downloads": -1, "filename": "keras-tcn-2.3.3.tar.gz", "has_sig": false, "md5_digest": "f6a4d7ad96585383815caf618c2ba555", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8538, "upload_time": "2018-11-28T01:52:32", "url": "https://files.pythonhosted.org/packages/a7/53/74ff6e6ab7eca173fd9736209d57653620156e15a1c7ac3895ec5effbd5b/keras-tcn-2.3.3.tar.gz" } ], "2.3.4": [ { "comment_text": "", "digests": { "md5": "b7585b63d7012ec883c63b5a703c2ede", "sha256": "e4c06a57bdf92494f08f89b3e1d516f61348d71841397f1d27d1789aef740e0f" }, "downloads": -1, "filename": "keras_tcn-2.3.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b7585b63d7012ec883c63b5a703c2ede", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13138, "upload_time": "2019-01-04T05:20:39", "url": "https://files.pythonhosted.org/packages/6d/71/b4e58d4033cb7518f54e09d22998c2cde7c12e25816cf434b76fff1eb604/keras_tcn-2.3.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c015138ce3b53ce4ff9804918af4d45b", "sha256": "f950ceefcd12cfeb5eb1db34bbabef3e198e697263923c1bc2fe44cd7dd721a6" }, "downloads": -1, "filename": "keras-tcn-2.3.4.tar.gz", "has_sig": false, "md5_digest": "c015138ce3b53ce4ff9804918af4d45b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8560, "upload_time": "2019-01-04T05:20:40", "url": "https://files.pythonhosted.org/packages/6f/9e/dfcdf25159d6b3b7116bf0ef8adf14ad4287643407d6729c4be78d63d035/keras-tcn-2.3.4.tar.gz" } ], "2.3.5": [ { "comment_text": "", "digests": { "md5": "a20abff98ee9b931b94b9ce530d983b1", "sha256": "f383d28d7622013a1d57e576aa1b9b693cd666651d9633488b4be57ef4314c1a" }, "downloads": -1, "filename": "keras_tcn-2.3.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a20abff98ee9b931b94b9ce530d983b1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13099, "upload_time": "2019-01-09T04:41:13", "url": "https://files.pythonhosted.org/packages/f2/bc/dcbdc24d80229022333150f42ff88ddf4c6793568f711a0d6fc1e83b102e/keras_tcn-2.3.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "576e8c45ebba9ccc9fb55498aa2dab23", "sha256": "27b8f67bff133d9ebe23a734506c78cf5f80dd1e596e29239bdaf85a9bcc9a03" }, "downloads": -1, "filename": "keras-tcn-2.3.5.tar.gz", "has_sig": false, "md5_digest": "576e8c45ebba9ccc9fb55498aa2dab23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8528, "upload_time": "2019-01-09T04:41:14", "url": "https://files.pythonhosted.org/packages/6a/d2/14584d066cda39f786ecfea4e8417b5661b7f99e841a9e7154d7dc473606/keras-tcn-2.3.5.tar.gz" } ], "2.3.6": [ { "comment_text": "", "digests": { "md5": "566f5ec344e5798ce3ed00103653bb3c", "sha256": "4b5e60ee1da3d86cff0f337aeb481fba403c26411bb9f16c8eedc2486c020959" }, "downloads": -1, "filename": "keras_tcn-2.3.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "566f5ec344e5798ce3ed00103653bb3c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9387, "upload_time": "2019-02-20T03:49:55", "url": "https://files.pythonhosted.org/packages/24/7c/76ce6e230aceb858b3273242e6e8f0f4e8d14bc4a8d664c63aae6e5f7cef/keras_tcn-2.3.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b94e15ffa3f9674002a368e2fd7b6869", "sha256": "4edd0239196adaf4f0cc8326f1a9550c499954e307857577df29a6fb3be75e5a" }, "downloads": -1, "filename": "keras-tcn-2.3.6.tar.gz", "has_sig": false, "md5_digest": "b94e15ffa3f9674002a368e2fd7b6869", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8673, "upload_time": "2019-02-20T03:49:57", "url": "https://files.pythonhosted.org/packages/7c/c0/9df3b04464293597dd10dfc43a2f425c2a474185849ef89d2757c403c0b6/keras-tcn-2.3.6.tar.gz" } ], "2.5.6": [ { "comment_text": "", "digests": { "md5": "a44c62bb7b95b7af45645c2cfc493792", "sha256": "3399f4c7e2b1f0e5abda6073ae66d53f9b226f811f567e380848c4655a77b0ac" }, "downloads": -1, "filename": "keras_tcn-2.5.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a44c62bb7b95b7af45645c2cfc493792", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8880, "upload_time": "2019-02-24T17:15:12", "url": "https://files.pythonhosted.org/packages/21/ce/ab513c067157f3b294a611609c29a2f2b2eee84e7cbef2f09772db433029/keras_tcn-2.5.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b6934fb848bed7e7c541f071899e5cec", "sha256": "e5aaaf490105f5f8bd9ec3e4eb654db4487f461d6dc807bb3f4aaf0ca4eebc34" }, "downloads": -1, "filename": "keras-tcn-2.5.6.tar.gz", "has_sig": false, "md5_digest": "b6934fb848bed7e7c541f071899e5cec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8178, "upload_time": "2019-02-24T17:15:14", "url": "https://files.pythonhosted.org/packages/29/22/ba93a33522e9898ea7376cb78eca8116af31852435704ebe03fa41cd5b5c/keras-tcn-2.5.6.tar.gz" } ], "2.5.7": [ { "comment_text": "", "digests": { "md5": "92d211eeb808d1bcfdeab117c644866e", "sha256": "3ed1f382af63cc2192a8e646e532a1fb1c78d746e1ac0703e61b3e6e902d3e25" }, "downloads": -1, "filename": "keras_tcn-2.5.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "92d211eeb808d1bcfdeab117c644866e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8831, "upload_time": "2019-02-26T16:23:04", "url": "https://files.pythonhosted.org/packages/42/05/9c8640d47c6e593166ab64b4575982ddb35e1c73ae4e8372ae63fc0e2712/keras_tcn-2.5.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40cc1a05c5937eb6bea6a1a7b43856d4", "sha256": "6ab7a0783e494691fb4a1747400b08f3dee6c0c96a209616ae18e1e8061ecde7" }, "downloads": -1, "filename": "keras-tcn-2.5.7.tar.gz", "has_sig": false, "md5_digest": "40cc1a05c5937eb6bea6a1a7b43856d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8123, "upload_time": "2019-02-26T16:23:06", "url": "https://files.pythonhosted.org/packages/51/50/0134fe4118520afa977f5c8eb3e821c3e5322dd28aa6aaa144a36a9fc6c7/keras-tcn-2.5.7.tar.gz" } ], "2.6.7": [ { "comment_text": "", "digests": { "md5": "817694f207e412ab563ac4576afa679a", "sha256": "7f8c04856de85f9ffef2d44d1527e2b58b6cf94bbfdbdaf4aaaf4ae879cc7161" }, "downloads": -1, "filename": "keras_tcn-2.6.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "817694f207e412ab563ac4576afa679a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8935, "upload_time": "2019-03-18T06:00:28", "url": "https://files.pythonhosted.org/packages/a4/f7/f584a9b82c7c7110165949b3e9f1f6e0859979589eaed2b2bd70747e723a/keras_tcn-2.6.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c3e95752a3f0a713076526d49b30ed5", "sha256": "f04b6009b2f3eefc10adf21fb3a41ec31da6c8154a87dd63970d9490cffdbffe" }, "downloads": -1, "filename": "keras-tcn-2.6.7.tar.gz", "has_sig": false, "md5_digest": "7c3e95752a3f0a713076526d49b30ed5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8255, "upload_time": "2019-03-18T06:00:30", "url": "https://files.pythonhosted.org/packages/26/87/61ba7d43ebeed15d00377ba9d0a1f1a9bb8a8d08168606c849293e42e046/keras-tcn-2.6.7.tar.gz" } ], "2.7.0": [ { "comment_text": "", "digests": { "md5": "119d166aed14c3c3b8d6a5c222cd855c", "sha256": "cee47cde41786a90b89cebf45570d4fab34e2bbd6065825e40763964bd8bfadf" }, "downloads": -1, "filename": "keras_tcn-2.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "119d166aed14c3c3b8d6a5c222cd855c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9184, "upload_time": "2019-06-14T02:14:08", "url": "https://files.pythonhosted.org/packages/9d/40/baf02143f287b290437cd74e417711d188832c207edf33127f2bd3f50e49/keras_tcn-2.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc2ac9389a368dfe80704197c0bfd889", "sha256": "4f8e3b272904d7df1d8b45bfb0f70161a351d268f5025ee4ca756292fd216284" }, "downloads": -1, "filename": "keras-tcn-2.7.0.tar.gz", "has_sig": false, "md5_digest": "fc2ac9389a368dfe80704197c0bfd889", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8508, "upload_time": "2019-06-14T02:14:09", "url": "https://files.pythonhosted.org/packages/d1/2b/39b89d009154143f30ca97a2c29eea9663490d806b788fc2cf6707581994/keras-tcn-2.7.0.tar.gz" } ], "2.7.1": [ { "comment_text": "", "digests": { "md5": "edb0fa77809fc85dd309ad0128cc7658", "sha256": "3a456ce7cd49ba0c8949fdf7bd2f7fc00d7a87e766cf15e28317beffd59e1a38" }, "downloads": -1, "filename": "keras_tcn-2.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "edb0fa77809fc85dd309ad0128cc7658", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9137, "upload_time": "2019-06-20T02:37:53", "url": "https://files.pythonhosted.org/packages/e0/e0/73ad4b7e4c4c791f02d4e1555a21a65e2b92ce232e916a9ae95c3b7a97a4/keras_tcn-2.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "055e9594c3c51ec790e07cf826164653", "sha256": "ad8c35fe79c61ec0e6e12157add978f5991c7def952d7be1102f5febac5a2e49" }, "downloads": -1, "filename": "keras-tcn-2.7.1.tar.gz", "has_sig": false, "md5_digest": "055e9594c3c51ec790e07cf826164653", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8467, "upload_time": "2019-06-20T02:37:55", "url": "https://files.pythonhosted.org/packages/97/50/46cd6f8b30e7164ff92f3cbccf7d24fb18f17dfc9a1dcd13f195f2e67efb/keras-tcn-2.7.1.tar.gz" } ], "2.8.1": [ { "comment_text": "", "digests": { "md5": "b78340f27136978063e706d1dd6cd383", "sha256": "06c049f4bd9c9dea9fd303f4c30991c1818a0ba4ce5adda795bab5b4d7ef35db" }, "downloads": -1, "filename": "keras_tcn-2.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b78340f27136978063e706d1dd6cd383", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9267, "upload_time": "2019-06-28T07:38:20", "url": "https://files.pythonhosted.org/packages/4d/26/91c55e8ebde1271a40b5ca1e703e2445bf0b1a95a88be6fcf07a84dbe78e/keras_tcn-2.8.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fe1febd5d692fce00f53733927c96b6", "sha256": "29efb548524107b6b9b795443f202a417ea32a369868de6675bdd50499609733" }, "downloads": -1, "filename": "keras-tcn-2.8.1.tar.gz", "has_sig": false, "md5_digest": "4fe1febd5d692fce00f53733927c96b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8576, "upload_time": "2019-06-28T07:38:22", "url": "https://files.pythonhosted.org/packages/f5/64/81c1540c5ececc6b57e5fb72fb59be76d3ca98834e4cc8f0f3338f28427f/keras-tcn-2.8.1.tar.gz" } ], "2.8.2": [ { "comment_text": "", "digests": { "md5": "7729dd67491f0f24e77cdf94ad7ff633", "sha256": "c6b0b8d872fedc59585c100e34455bea3156467e3d9f99f8367987b2175a1e70" }, "downloads": -1, "filename": "keras_tcn-2.8.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7729dd67491f0f24e77cdf94ad7ff633", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9403, "upload_time": "2019-07-12T08:29:17", "url": "https://files.pythonhosted.org/packages/ea/71/a23ddfcee18342a4c3ce464f99c44e5dad1c637be13c73638d8551d57906/keras_tcn-2.8.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fd4558c51393f4a48ad2fed0d97ecd13", "sha256": "c714fdb6353fce2085ecd80e0494e4de18e6be29e2fa928d5e0cdf3b33e4bcc3" }, "downloads": -1, "filename": "keras-tcn-2.8.2.tar.gz", "has_sig": false, "md5_digest": "fd4558c51393f4a48ad2fed0d97ecd13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8663, "upload_time": "2019-07-12T08:29:19", "url": "https://files.pythonhosted.org/packages/6e/ef/ea92cb3903f7d7f0ca68a15e0dbc38be60b7e1d993f0d85f66e3e1de4db0/keras-tcn-2.8.2.tar.gz" } ], "2.8.3": [ { "comment_text": "", "digests": { "md5": "48b5284879878ead8f52bff9efe49a92", "sha256": "070850300a9fee29d5511411ae5c12646b364629c9f53d1269caff71e0733dfe" }, "downloads": -1, "filename": "keras_tcn-2.8.3-py3-none-any.whl", "has_sig": false, "md5_digest": "48b5284879878ead8f52bff9efe49a92", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9449, "upload_time": "2019-08-25T04:42:40", "url": "https://files.pythonhosted.org/packages/d4/c4/438c86b27ab11a79cc659d8d6878682c4eb80caa0c0b3d620740cef762f5/keras_tcn-2.8.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e7e0fc1162168e8fee739724530e230", "sha256": "92355f0289fbc2300f0960f43d53d6e8a90b0d4603a9590b16cc952ea45fa6e0" }, "downloads": -1, "filename": "keras-tcn-2.8.3.tar.gz", "has_sig": false, "md5_digest": "1e7e0fc1162168e8fee739724530e230", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8663, "upload_time": "2019-08-25T04:42:42", "url": "https://files.pythonhosted.org/packages/20/16/76cb4568a0dfc07e712545f3e2534412bbf347dce1ef7af8f396a7549c51/keras-tcn-2.8.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "48b5284879878ead8f52bff9efe49a92", "sha256": "070850300a9fee29d5511411ae5c12646b364629c9f53d1269caff71e0733dfe" }, "downloads": -1, "filename": "keras_tcn-2.8.3-py3-none-any.whl", "has_sig": false, "md5_digest": "48b5284879878ead8f52bff9efe49a92", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9449, "upload_time": "2019-08-25T04:42:40", "url": "https://files.pythonhosted.org/packages/d4/c4/438c86b27ab11a79cc659d8d6878682c4eb80caa0c0b3d620740cef762f5/keras_tcn-2.8.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e7e0fc1162168e8fee739724530e230", "sha256": "92355f0289fbc2300f0960f43d53d6e8a90b0d4603a9590b16cc952ea45fa6e0" }, "downloads": -1, "filename": "keras-tcn-2.8.3.tar.gz", "has_sig": false, "md5_digest": "1e7e0fc1162168e8fee739724530e230", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8663, "upload_time": "2019-08-25T04:42:42", "url": "https://files.pythonhosted.org/packages/20/16/76cb4568a0dfc07e712545f3e2534412bbf347dce1ef7af8f396a7549c51/keras-tcn-2.8.3.tar.gz" } ] }