{ "info": { "author": "delzac", "author_email": "delzac.jh@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# CNTKx\nCNTKx is a deep learning library that builds on and extends Microsoft Cognitive Toolkit [CNTK](https://github.com/Microsoft/CNTK). \nDespite the last planned release of cntk 2.7, cntkx will continue to be in active development, more models and pre-built components coming soon!\n\nFeel free to open an issue for any request or a PR to contribute :)\n\n## Installation\ncntkx is written in pure python and cntk is a dependency to it. Please get a working installation of cntk first. Then:\n\n pip install cntkx\n\ncntkx only works with `python>=3.6`\n\n\n## Available Components\n| ops | Description |\n| --- | ---|\n| `scalar` | cast tensor to scalar (1,) |\n| `cumsum` | Cumulative summation along axis |\n| `upsample` | Upsample by 2x (for image) |\n| `centre_crop` | Crop centre of image |\n| `swish` | Activation |\n| `mish` | Activation |\n| `hardmax` | Activation |\n| `erf` | Error function |\n| `gelu` | Gaussian Error Linear Unit function |\n| `gelu_fast` | fast approximation of Gaussian Error Linear Unit function |\n| `sequence.pad` | Pad at start or end of sequence axis |\n| `sequence.length` | length of sequence |\n| `sequence.position` | position of every sequence element |\n| `sequence.stride` | strides across sequential axis |\n| `sequence.join` | joins two sequence along their sequential axis |\n| `sequence.window` | creates non-overlapping window along the sequence axis |\n| `sequence.reverse` | reverses the items along the dynamic sequence axis |\n| `sequence.reduce_mean` | calculates the mean along the dynamic sequence axis |\n| `random.sample` | Samples an unnormalised log probability distribution |\n| `random.sample_top_k` | Samples from the top_k of an unnormalised log probability distribution |\n| `batchmatmul` | Batch Matrix Multiplication on a static batch axis, similar to tf.matmul |\n\n| Layers | Description |\n| --- | ---|\n| `QRNN` | Quasi-Recurrent Neural Network |\n| `Recurrence` | With option to apply `VariationalDroppout` |\n| `PyramidalBiRecurrence` | Pyramidal bi-directional recurrence |\n| `VariationalDropout` | Single binary dropout mask for entire sequence |\n| `SinusoidalPositionalEmbedding` | Non-learnable positional embedding (no max sequence length) |\n| `PositionalEmbedding` | Learnable Positional Embedding (used in BERT) |\n| `BertEmbeddings` | BERT Embeddings (word + token_type + positional) |\n| `BertPooler` | Pooler used in BERT |\n| `SpatialPyramidPooling` | Fixed pooled representation regardless of image input size |\n| `GatedLinearUnit` | Gated Convolutional Neural Network |\n| `ScaledDotProductAttention` | Attention used in BERT and Transformer (aka 'attention is all you need') |\n| `MultiHeadAttention` | Attention used in BERT and Transformer (aka 'attention is all you need') |\n| `GaussianWindowAttention` | Windowed attention instead of conventional attention where everything is attended at the same time |\n| `SequentialMaxPooling` | Max pool across sequential axis and static axes |\n| `SequentialAveragePooling` | Average pool across sequential axis and static axes |\n| `vFSMN` | Vectorised Feedforward Sequential Memory Networks |\n| `cFSMN` | Compact Feedforward Sequential Memory Networks |\n| `BiRecurrence` | BiRecurrence recurrent layer with weight tying option to half parameter requirement |\n\n| Blocks | Description |\n| --- | ---|\n| `WeightDroppedLSTM` | A form of regularised LSTM |\n| `IndyLSTM` | A parameter efficient form of LSTM |\n| `IndRNN` | a RNN with long memory and can be stacked deeply |\n\n| Loss | Description |\n| --- | ---|\n| `gaussian_mdn_loss` | loss function when using Mixture density network |\n| `focal_loss_with_softmax` | A kind of cross entropy that handles extreme class imbalance |\n| `cross_entropy_with_softmax` | Added `label smoothing regularisation` in cross entropy with softmax |\n\n| Models | Description |\n| --- | ---|\n| `VGG` | Image Classification |\n| `UNET` | Semantic Segmentation |\n| `Transformer` | Language Modelling |\n| `MDN` | Mixture Density Networks | \n\n\n| Pre-trained models | Description |\n| --- | ---|\n| `Bert` | Bidirectional Encoder Representations from Transformers |\n| [fwd_wt103.hdf5](https://1drv.ms/u/s!AjJ4XyC3prp8mItNxiawGK4gD8iMhA?e=wh7PLB) | The weight parameters of the fastai's pytorch model. To be used to initialise `PretrainedWikitext103LanguageModel` |\n| [fwd_wt103.cntk](https://1drv.ms/u/s!AjJ4XyC3prp8mItPBdfmDYr9QP7J4w?e=k1BXlW) | The converted cntk model of fastai's pytorch model. To be used with `C.load_model` |\n| [fwd_wt103.onnx](https://1drv.ms/u/s!AjJ4XyC3prp8mItO70T_q8HOPwa6aQ?e=h2Fiv5) | The converted ONNX model of fastai's pytorch model. |\n\n\n| Learners | Description |\n| --- | ---|\n| `CyclicalLearningRate` | a method to eliminate the need to find best value and schedule for learning rate |\n| `RAdam` | a variant of `Adam` that doesn't require any warmup |\n\n| Misc | Description |\n| --- | ---|\n| `CTCEncoder` | Helper class to convert data into a format acceptable for cntk's ctc implementation |\n\n\n## C# CNTK Tutorials\nThis library is implemented in pure cntk python API. For help in cntk c#, you can refer to the two repository \n[deep-learning-with-csharp-and-cntk](https://github.com/anastasios-stamoulis/deep-learning-with-csharp-and-cntk) \nand [DeepBelief_Course4_Examples](https://github.com/AllanYiin/DeepBelief_Course4_Examples). \n\n\n## F# CNTK\nFor the F# wrapper of CNTK please visit [FsCNTK](https://github.com/fwaris/FsCNTK), \nit also contains some example implementations like seq2seq, autoencoder, LSTM, GAN.\n\n\n## News\n***2019-10-15.***\n#### Added `mish` activation function and `RAdam` learner.\n`mish` is an activation function is introduced in [Mish: A Self Regularized Non-Monotonic Neural Activation Function](https://arxiv.org/abs/1908.08681v2)\nby Diganta Misra. Experiments show that `mish` tends to work better than both ReLU and Swish along with other standard\nactivation functions in many deep networks across challenging datasets. For instance,\nin Squeeze Excite Net-18 for CIFAR 100 classification, the network with Mish had an increase in\nTop-1 test accuracy by 0.494% and 1.671% as compared to the same network with Swish and ReLU respectively.\nThe similarity to Swish along with providing a boost in performance and its simplicity in implementation\nmakes it easier for researchers and developers to use Mish in their Neural Network Models.\n\nThis activation function is adopted in `fast ai`.\n\nRectified Adam or `RAdam` is a `Adam` optimiser variant that doesn't require a warmup schedule, which `Adam` tends\nto need to maintain stability. In this cntk implementation, we added a `RAdam` like optimiser based\non the work of [On the adequacy of untuned warmup for adaptive optimization](https://arxiv.org/abs/1910.04209) by Jerry Ma and Denis Yarats.\n\n`RAdam` is adopted in `fast ai` too.\n\n\n\n***2019-09-30.***\n#### Added `BiRecurrence` with weight tying\nMade improvement to weight tying of BiRecurrence by have one parameter tensor token for every state \nin the step function per direction (forward and backward). This will allow forward and backward token\nto have more representational flexibility. Previously, all states use the same forward or backward token.\n\n\n***2019-09-06.***\n#### Added `BiRecurrence` with weight tying\nAdd a wrapper to create a bidirectional recurrent layer using `BiRecurrence`. Included in the implementation\nis an option to half the number of parameters required by bidirectional recurrent layer. This is done\nby only using one recurrent unit to do both forward and backward computation instead of the usual two.\nA forward and backward token is used to initialise the hidden state so that the recurrent unit can tell\nthe directionality.\n\nMore details can be found in the paper [Efficient Bidirectional Neural Machine Translation](https://arxiv.org/abs/1908.09329)\n\nExample:\n\n a = C.sequence.input_variable(10)\n b = BiRecurrence(LSTM(100), weight_tie=True)(a)\n\n assert b.shape == (200, )\n\n\n***2019-08-29.***\n#### Added `PretrainedWikitext103LanguageModel`\nCNTK implementation of Fast AI's Universal Language ModelFine-tuning (ULMFiT) English model has been added.\nThis language model was trained on Wikitext-103 and can be used as a base model for any downstream language task.\n\nIt is also much more efficient to run compare to BERT and other Transformer language models.\n\nFor more details, you can refer to the original paper [here](https://arxiv.org/abs/1801.06146)\n\nExample:\n\n vocab_size = 238462\n converted_hdf5_model_file_path = 'PATH/fwd_wt103.hdf5' # this is not the original pytorch model\n lm = PretrainedWikitext103LanguageModel(converted_hdf5_model_file_path)\n\n a = C.sequence.input_variable(vocab_size)\n prediction = lm(a) # next-word-prediction\n features = prediction.features # features of tokens\n\n assert prediction.shape == (vocab_size, )\n assert features.shape == (400, )\n\n| Model | Description |\n| --- | ---|\n| [fwd_wt103.hdf5](https://1drv.ms/u/s!AjJ4XyC3prp8mItNxiawGK4gD8iMhA?e=wh7PLB) | The weight parameters of the fastai's pytorch model. To be used to initialise `PretrainedWikitext103LanguageModel` |\n| [fwd_wt103.cntk](https://1drv.ms/u/s!AjJ4XyC3prp8mItPBdfmDYr9QP7J4w?e=k1BXlW) | The converted cntk model of fastai's pytorch model. To be used with `C.load_model` |\n| [fwd_wt103.onnx](https://1drv.ms/u/s!AjJ4XyC3prp8mItO70T_q8HOPwa6aQ?e=h2Fiv5) | The converted ONNX model of fastai's pytorch model. |\n| [itos_wt103.pkl](http://files.fast.ai/models/wt103/) | Tokens used in pretrained model |\n\n\n***2019-08-08.***\n#### Added `cntkx.ops.gelu` and `cntkx.ops.gelu_fast`\nAdded two cntk implementation of `gelu` activation function. `gelu` activation is used in `BERT`\nand OpenAI's `GPT` and `GPT-2`.\n\nGaussian Error Linear Unit (GELU), a high-performing neuralnetwork activation function.\nThe GELU nonlinearity is the expected transforma-tion of a stochastic regularizer which randomly\napplies the identity or zero mapto a neuron\u00e2\u20ac\u2122s input. The GELU nonlinearity weights inputs by their\nmagnitude,rather than gates inputs by their sign as in ReLUs.\n\nFor more detail please refer to [Gaussian Error Linear Units (GELU)](https://arxiv.org/abs/1606.08415)\nby Hendrycks and Gimpel.\n\n\n***2019-07-04.***\n#### Added `cntkx.ops.sequence.reduce_mean`\nCalculates the mean along the dynamic sequential axis in CNTK.\n\n\n***2019-06-26.***\n#### Added `cntkx.ops.sequence.reverse`\nAllows the sequence items along the sequence axis to be reversed. This is useful when you want to create a \nBi-directional Auto-Regressive layer because using UnfoldFrom does not work with Recurrence(go_backwards=True) and\n will result in a ValueError.\n\n\nExample:\n\n import cntk as C\n import cntkx as Cx\n from cntk.layers import Recurrence, UnfoldFrom, LSTM\n\n hidden_dim = 50\n start_token = C.Constant(0, shape=(hidden_dim,))\n a = C.sequence.input_variable(1, name='seq1')\n\n b = UnfoldFrom(Recurrence(LSTM(hidden_dim), go_backwards=True))(start_token, a)\n\n n = [np.random.random((10, hidden_dim)).astype(np.float32),]\n\n # This raise 'ValueError: It is not allowed to have multiple different stepping directions in the same loop'\n b.eval({b.arguments[0]: n})\n\n\nThe workaround would be:\n\n import cntk as C\n import cntkx as Cx\n from cntk.layers import Recurrence, UnfoldFrom, LSTM\n\n hidden_dim = 50\n start_token = C.Constant(0, shape=(hidden_dim,))\n a = C.sequence.input_variable(1, name='seq1')\n a_reversed = Cx.sequence.reverse(a)\n\n b = UnfoldFrom(Recurrence(LSTM(hidden_dim)))(start_token, a_reversed) # remove go_backwards=True\n\n n = [np.random.random((10, hidden_dim)).astype(np.float32),] \n b.eval({b.arguments[0]: n}) # this will run just fine\n\n\n\n***2019-06-21.***\n#### Added `cntkx.ops.random.sample_top_k`\nCNTK implementation of that allows sampling of the top_k unnormalised log-probabilities distribution.\nThis is useful text (or sequence) generation where it is known that greedy decoding will cause\ntext degeneration.\n\nFor more details on this, please refer to [A curious case of neural text degeneration](https://arxiv.org/abs/1904.09751)\n\n\nExample:\n\n import cntk as C\n import cntkx as Cx\n\n a = C.input_variable(5)\n b = Cx.random.sample_top_k(a, k=3, num_classes=5)\n\n n = np.array([[1, 2, 3, 4, 5],] * 1000)\n\n results = b.eval({a: n})\n assert np.sum(results[:, :2]) == 0\n assert np.sum(results[:, 2:]) == 1000\n\n***2019-05-04.***\n#### Added `cntkx.layers.vFSMN` and `cntkx.layers.cFSMN`\nCNTK implementation of Bidirectional vectorised Feedforward Sequential Memory Network (vFSMN)\nand Compact Feedforward Sequential Memory Network (cFSMN).\n\nFSMN is a standard fully-connected feedforward neural network equipped\nwith some learnable memory blocks in its hidden layers. The memory blocks\nuse a tapped-delay line structure to encode the long context information into\na fixed-size representation as short-term memory mechanism.\n\nThe authors claim that FSMNs can be learned much more reliably and faster than\nRNNs or LSTMs due to the inherent non-recurrent model structure while significantly\noutperforming RNNs in language and speech modeling.\n\nFor more details please refer to [Feedforward Sequential Memory Networks: A \nNew Structure to Learn Long-term Dependency](https://arxiv.org/abs/1512.08301)\n\ncFSMN is a compact version of FSMN that can result in a reduction of up\nto 60% in model size and speed up the learning by more than 7 times while\nstill significantly outperforming the popular bi-direction LSTMs for both\nframe-level cross-entropy (CE) criterion based training and MMI based sequence training.\n\nFor more details please refer to \"Compact Feedforward Sequential Memory Networks for\nLarge VocabularyContinuous Speech Recognition\" by Zhang, et al.\n\nExample:\n\n import cntk as C\n from cntkx.layers import vFSMN, cFSMN\n\n # unidirectional vFSMN (only past conext used)\n a = C.sequence.input_variable(10)\n b = vFSMN(100, C.relu, num_past_context=3, num_future_context=0)(a)\n\n assert b.shape == (100,)\n\n # bidirectional vFSMN (enable both past and future context)\n a = C.sequence.input_variable(10)\n b = vFSMN(120, C.relu, num_past_context=3, num_future_context=3)(a)\n\n assert b.shape == (120,)\n\n # bidirectional cFSMN (enable both past and future context)\n a = C.sequence.input_variable(100)\n b = cFSMN(120, 50, C.relu, num_past_context=3, num_future_context=3)(a)\n\n assert b.shape == (120,)\n\n\n***2019-04-19.***\n#### Added `cntkx.misc.CTCEncoder`\nCNTK's CTC implementation requires that data be formatted in a particular way that's typically in acoustic\nmodeling but unusual in other applications. So class provides an easy way to convert data between\nwhat users typically expect and what cntk demands.\n\nExample:\n labels = ['a', 'b', 'c']\n encoder = CTCEncoder(labels)\n\n labels_tensor = C.sequence.input_variable(len(encoder.classes_)) # number of classes = 4\n input_tensor = C.sequence.input_variable(100)\n\n labels_graph = cntk.labels_to_graph(labels_tensor)\n network_out = model(input_tensor)\n\n fb = C.forward_backward(labels_graph, network_out, blankTokenId=encoder.blankTokenId)\n\n ground_truth = ['a', 'b', 'b', 'b', 'c']\n seq_length = 10 # must be the same length as the sequence length in network_out\n\n fb.eval({input_tensor: [...],\n labels_tensor: [encoder.transform(ground_truth, seq_length=seq_length)]})\n\n\n\n***2019-04-14.***\n#### Added `Label Smoothing Regularization`, `seqeuence.window` and `PyramidalBiRecurrence`\nAdded `Label Smoothing Regularization` in `cross_entropy_with_softmax`.\nAdded `sequence.window` that creates non-overlapping window along the sequence axis thereby reducing the \nsequence length and increasing the dimension by the same factor.\n\nImplemented a convenience layer used in acoustic modelling known as `PyramidalBiRecurrence`. Used to create\npyramidal bi-directional LSTM (BLSTM) found in \"Listen, attend and spell\" by Chan et al. (https://arxiv.org/abs/1508.01211)\nTypically used to down sample the sequence length to make memory and runtime manageable.\n\n\n***2019-04-08.***\n#### Added `cntkx.ops.sequence.join`\nAdded a new `op` called `join` where two sequence tensors can be joined along with sequence axis forming a longer sequence.\n\n\n***2019-04-08.***\n#### Added `cntkx.layers.SequentialAveragePooling`\nAdd average pooling layer that works with sequential axis. Current cntk `AveragePooling` doesn't pool across sequence elements.\n\nExample on `cntkx.layers.SequentialAveragePooling`\n\n # rgb image of height 25 and variable width\n a = C.sequence.input_variable((3, 25))\n\n # Convolute across image with (3, 3) kernel with stride (1, 1)\n b = C.layers.SequentialConvolution(filter_shape=(3, 3), num_filters=16, stride=(1, 1), pad=True)(a)\n\n assert b.shape == (16, 25)\n\n # max pool (2,2) in height and width with stride (2,2) in height and width, no padding\n c = SequentialAveragePooling(filter_shape=(2, 2), strides=(2, 2), pad=False)(b)\n\n assert c.shape == (16, 12)\n\n\n***2019-04-07.***\n#### Added `cntkx.sequence.stride` and `cntkx.ops.scalar`\n`Cx.sequence.stride` enables striding across the sequential axis, selecting every integer items along the sequence.\n`Cx.scalar` converts tensor into scalar of shape `(1,)` \n\n\n\n***2019-04-06.***\n#### Added `IndyLSTM` and `IndRNN`\nCNTK implementation of [Independently Recurrent Long Short-term Memory cells: IndyLSTMs](https://arxiv.org/abs/1903.08023)\nby Gonnet and Deselaers, and [Independently Recurrent Neural Network (IndRNN): Building A Longer andDeeper RNN](https://arxiv.org/abs/1803.04831)\nby Li, et al.\n\nBoth `IndyLSTM` and `IndRNN` have hidden-to-hidden weights that are diagonal matrix instead of the usual full matrix.\nThus neurons in each layer are independent from each other, and the cross-channel information is \nobtained through stacking multiple layers.\n\n`IndRNN` allows for the use of `C.relu` activation thus allowing multiple `IndRNN` layers to be stacked together deeply.\n\n`IndyLSTM` has parameters linear to the number of nodes in the linear, as opposed to standard LSTM that is quadratic\nmaking `IndyLSTM` potentially faster and smaller as a model.\n\nAuthors of both `IndRNN` and `IndyLSTM` have claimed performance as good as or even better than regular LSTMs.\n\nExample:\n\n import cntk as C\n from cntkx.layers import IndyLSTM, IndRNN, Recurrence\n\n a = C.sequence.input_variable(10)\n b = Recurrence(IndRNN(20))(a)\n c = Recurrence(IndyLSTM(20))(a)\n\n assert b.shape == c.shape == (20,)\n\n\n\n***2019-03-24.***\n#### Added `cntkx.layers.SequentialMaxPooling`\nAdd max pooling layer that works with sequential axis. Current cntk `MaxPooling` doesn't pool across sequence elements.\n\nExample on `cntkx.layers.SequentialMaxPooling`\n\n # rgb image of height 25 and variable width\n a = C.sequence.input_variable((3, 25))\n\n # Convolute across image with (3, 3) kernel with stride (1, 1)\n b = C.layers.SequentialConvolution(filter_shape=(3, 3), num_filters=16, stride=(1, 1), pad=True)(a)\n\n assert b.shape == (16, 25)\n\n # max pool (2,2) in height and width with stride (2,2) in height and width, no padding\n c = SequentialMaxPooling(filter_shape=(2, 2), strides=(2, 2), pad=False)(b)\n\n assert c.shape == (16, 12)\n\n\n***2019-03-18.***\n#### Added `cntkx.learners.CyclicalLearningRate`\nCyclical learning rate (CLR) is an implementation to that practically eliminates the need to \nexperimentally find the best values and schedule for the global learning rates.\n\nInstead of monotonically decreasing the learning rate, this method lets the learning \nrate cyclically vary between reasonable boundary values. Training with \ncyclical learning rates instead of fixed values achieves improved classification \naccuracy without a need to tune and often in fewer iterations.\n\nMore details can be found in [Cyclical Learning Rates for Training Neural Networks](https://arxiv.org/abs/1506.01186) \nby Leslie N. Smith\n\nThis CLR implementation can be used with the cntk training loop by adding only ***two lines of code***:\n\n model = C.layers.Dense(10)(C.input_variable(10))\n sgd_momentum = C.momentum_sgd(model.parameters, 0.1, 0.9)\n clr = CyclicalLeaningRate(sgd_momentum, minibatch_size=32) # first line of code\n\n for epoch in range(10):\n for batch in range(100):\n trainer.train_minibatch(...)\n clr.batch_step() # second line of code (to be called after every training update)\n\n\n\n\n***2019-03-12.***\n#### Added `cntkx.ops.batchmatmul`\nAdded Batch Matrix Multiplication. This implementation is similar \nto [tensorflow.matmul](https://www.tensorflow.org/api_docs/python/tf/linalg/matmul).\n\nExample:\n\n a = C.sequence.input_variable((3, 4, 5)) # batch matrix\n b = C.sequence.input_variable((3, 5, 6)) # batch matrix\n c = Cx.batchmatmul(a, b)\n assert c.shape == (3, 4, 6) # 3 is treated as a batch axis\n\n\n\n***2019-03-10.***\n#### Added `PretrainedBertEncoder` and `PretrainedBertModel`\nBERT, the state-of-the-art language model is now available as a CNTK pretrained model.\n\nCurrently, it is only tested to work with `BERT-Base, Uncased` (uncased_L-12_H-768_A-12) and can be\ndownloaded from [Google AI](https://github.com/google-research/bert)\n\nWhen you have downloaded `BERT-Base, Uncased`, there should be 5 files inside. You will need to `.zip`\nthree of those files into a tensorflow checkpoint file before you can load it into `cntkx`.\n\nThose three files are: `bert_model.ckpt.data-00000-of-00001`, `bert_model.ckpt.index`, `bert_model.ckpt.meta`.\nThen rename the extension of `.zip` into `.ckpt` and you are good to go.\n\nExample below\n\n text_tensor = C.sequence.input_variable(30522)\n token_type_tensor = C.sequence.input_variable(2)\n filepath_to_tf_bert_model = \"YOUR_FILE_DIRECTORY/bert_model.ckpt\"\n\n model = Cx.layers.PreTrainedBertModel(filepath_to_tf_bert_model, num_heads=12, dropout_rate=0.1)\n b = model(text_tensor, token_type_tensor)\n\n assert b.shape == (768,)\n\nFor more details about BERT, you can find the original paper [here](https://arxiv.org/abs/1810.04805), \nand some useful resources [here](https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270) \nand [here](http://jalammar.github.io/illustrated-bert/).\n\nNote:\nIt goes without saying also that to use these pre-trained models you will need to have tensorflow installed\nsince we are convert them from tensorflow models.\n\n\n***2019-03-06.***\n#### Added `PositionalEmbedding`, `BertEmbeddings` and `PretrainedBertEmbeddings`\nCNTK implementation of `PositionalEmbedding`, `BertEmbeddings` and tf-to-cntk `PreTrainedBertEmbeddings`.\nBERT is a state-of-the-art language model from Google AI, more details can be found in\n[BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding](https://arxiv.org/abs/1810.04805).\n\nGoogle AI's pre-trained BERT tensorflow model can be downloaded [here](https://github.com/google-research/bert).\nTensorflow would need to be installed in your environment if you intend to use `PreTrainedBertEmbeddings`, which\ntakes a tensorflow model and convert it cntk.\n\nExample for `PositionalEmbedding`\n\n a = C.sequence.input_variable(12)\n b = PositionalEmbedding(max_seq_length, hidden_dim)(a)\n\n assert b.shape == (hidden_dim, )\n\nExample for `BertEmbeddings`\n\n text_tensor = C.sequence.input_variable(100)\n token_type_tensor = C.sequence.input_variable(2)\n b = BertEmbeddings(max_seq_length, hidden_dim, 0.1)(text_tensor, token_type_tensor)\n\n assert b.shape == (hidden_dim, )\n\nExample for `PreTrainedBertEmbeddings`\n\n text_tensor = C.sequence.input_variable(30522)\n token_type_tensor = C.sequence.input_variable(2)\n filepath_to_tf_bert_model = \"YOURFILEPATH\"\n embeddings = PreTrainedBertEmbeddings(filepath_to_tf_bert_model, 0.1, False)\n b = embeddings(text_tensor, token_type_tensor)\n\n assert b.shape == (768, )\n\n\n***2019-03-02.***\n#### Added `VariationalDropout` and `WeightDroppedLSTM`\nCNTK implementation of `Variational Dropout` found in \n[A Theoretically Grounded Application of Dropout in Recurrent Neural Networks](https://arxiv.org/abs/1512.05287)\nand `Weight Dropped LSTM` proposed in a salesforce research paper \n[Regularizing and Optimizing LSTM Language Models](https://arxiv.org/abs/1708.02182).\n\n`Weight Dropped LSTM` is a regularised LSTM that uses DropConnect on hidden-to-hidden weights as a form of recurrent\nregularisation. It also include application of variational dropout on the inputs and outputs of the recurrent units\nfor further regularisation.\n\n`Variational Drpoout` is a regularisation that uses same dropout mask at each time step \n(i.e. across the dynamic sequence axis) as opposed to the naive application of `C.layers.Dropout` to a sequence\nwhich will result in a different dropout mask for every tensor along the sequence axis.\n\n\n import cntkx as Cx\n from cntkx.layers import Recurrence, WeightDroppedLSTM\n import cntk as C\n\n dropconnect_rate = 0.2\n variationaldrop_rate = 0.1\n\n seq = C.sequence.input_variable(56)\n b = Recurrence(WeightDroppedLSTM(20, dropconnect_rate),\n variational_dropout_rate_input=variationaldrop_rate,\n variational_dropout_rate_output=variationaldrop_rate)(seq)\n\n assert b.shape == (100, )\n\n seq_dropped = VariationalDropout(0.1)(seq)\n\n assert seq_dropped.shape == seq.shape\n\n\n***2019-02-02.***\n#### Added Gated Linear Unit / Gated CNN\nCNTK implementation of Gated Linear Unit (Gated CNN) founnd in Facebook AI Research Lab's paper:\n[Language Modeling with Gated Convolutional Networks](https://arxiv.org/abs/1612.08083).\nThis paper applies a convolutional approach to language modelling with a novel Gated-CNN model.\n\n import cntkx as Cx\n import cntk as C\n\n seq = C.sequence.input_variable(56)\n hidden = Cx.layers.GatedLinearUnit(window=2, hidden_dim=100)(seq)\n\n assert hidden.shape == (100, )\n\n\n***2019-01-21.***\n#### Added `Focal Loss` for multi-class and binary classification\nCNTK implementation of `Focal Loss` enables the training of highly accurate dense object detectors in the\npresence of vast numbers of easy background examples or dataset with extreme class imbalance (e.g. 1:1000).\n\n`Focal Loss` focuses training on a sparse set of hard examples and prevents the vast number of easy negatives from\noverwhelm-ing the model during training. \n\nFor more details please refer to [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002)\n\n import cntkx as Cx\n\n Cx.focal_loss_with_softmax([[0, 0, 0.8, 0.2]], [[0, 0, 1, 0]]).eval()\n array([[0.31306446]], dtype=float32)\n\n\n\n***2019-01-18.***\n#### Added Gaussian Window Attention Model\nGaussian window attention model was first introduced by Alex Graves in \n\"Generating sequences with recurrent neural networks\".\n\nIt uses a mixture of gaussian windows to attend to \nportions of the sequence as oppose to the widely used attention model introduced in \n\"Neural machine translation by jointly learning to align and translate\" by Bahdanau, et al. that attends\nto the entire sequence all at once.\n\nGaussian window attention is also directional in its attention on the context sequence. When modeling\nstrongly ordered sequences, gaussian window attention will be a natural choice due to this inductive bias.\n\n import cntk as C\n import cntkx as Cx\n\n seq1 = C.Axis.new_unique_dynamic_axis('seq1')\n seq2 = C.Axis.new_unique_dynamic_axis('seq2')\n\n encoded = C.sequence.input_variable(30, sequence_axis=seq1)\n query = C.sequence.input_variable(28, sequence_axis=seq2)\n\n a = Cx.layers.GaussianWindowAttention(10)(encoded, query)\n\n assert a.shape == (30, )\n\n\"Generating sequences with recurrent neural networks\" can be found [here](https://arxiv.org/abs/1308.0850).\n\"Neural machine translation by jointly learning to align and translate\" can be found [here](https://arxiv.org/abs/1409.0473).\n\n***2019-01-16.***\n#### Added Spatial Pyramid Pooling layer\nSpatial pyramid pooling layer is a pooling layer than returns a fixed length representation regardless of the \nimage size/scale. It is frequently used for multi-size image training. It reported SOTA classification results using\na single full-image representation without fine-tuning. For more details on the paper\n\"Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition\" by K. He, X. Zhang, S. Ren, J. Sun,\nlink [here](https://arxiv.org/abs/1406.4729).\n\n import cntk as C\n import cntkx as Cx\n\n n = np.random.random((3, 3, 32, 32)).astype(np.float32)\n a = C.input_variable((3, 32, 32))\n b = Cx.layers.SpatialPyramidPooling((1, 2, 4))(a)\n\n assert b.shape == (3 * (4 * 4 + 2 * 2 + 1),) # representation not dependent on image size\n\n\n***2019-01-15.***\n#### Added Sinusoidal Positional Embedding and `cntkx.ops.erf`\nAdded sinusoidal positional embedding used in [Transformer](https://arxiv.org/abs/1706.03762). For an accessible\nexplanation of transformer, you may look up [here](http://jalammar.github.io/illustrated-transformer/).\n\n import cntk as C\n import cntkx as Cx\n\n a = C.sequence.input_variable(10)\n b = SinusoidalPositionalEmbedding()(a)\n\n assert b.shape == (10, )\n\nAdded `cntkx.ops.erf` error function.\n\n***2019-01-12.***\n#### Added Vision models: VGG16, VGG19 and UNET\nVGG is for image classification and UNET is for semantic segmentation. VGG is implemented for completeness \nsake and should not be used for any serious classification task.\n\n\nPaper on VGG can be found [here](https://arxiv.org/abs/1409.1556) titled \"Very Deep Convolutional Networks \nfor Large-Scale Image Recognition\"\n\nPaper for UNET can be found [here](https://arxiv.org/abs/1505.04597) titled \"U-Net: Convolutional Networks \nfor Biomedical Image Segmentation\"\n\nVGG example:\n\n import cntk as C\n import cntkx as Cx\n\n a = C.input_variable((3, 64, 64))\n b = Cx.layers.VGG19(100)(a)\n\n assert b.shape == (100,)\n\nUNET example:\n\n import cntk as C\n import cntkx as Cx\n\n a = C.input_variable((3, 512, 512))\n b = Cx.layers.UNET(num_classes=10, base_num_filters=64, pad=True)(a)\n\n assert b.shape == (10, 512, 512)\n\nConvenience functions such as `cntkx.ops.upsample` and `centre_crop` have also been added.\n`cntkx.ops.upsample` upsamples an image twice on each spatial dim. `centre_crop` crops a smaller image from\na bigger one in the centre given a reference smaller image.\n\n\n#### Added Transformer attention model and associated components\nThe Transformer was first introduced in the [paper](https://arxiv.org/abs/1706.03762) 'Attention is all you need'.\nThe architecture is based solely on attention mechanisms, dispensing with recurrence and convolutions entirely.\nMore recently, [BERT](https://arxiv.org/abs/1810.04805) which broke almost all SOTA language task is also based on \ntransformer and self-attention.\n\n import cntk as C\n import cntkx as Cx\n\n a = C.sequence.input_variable(512)\n b = C.sequence.input_variable(512)\n\n transformer = Cx.layers.Transformer() # using default settings\n decoded = transformer(a, b)\n\n assert decoded.shape == (512, )\n\n\n***2018-12-08.***\n#### Added QRNN: Quasi-Recurrent Neural Network (QRNN) and `cntkx.ops.cumsum`\nThe QRNN provides similar accuracy to the LSTM but can be betwen 2 and 17 times faster than the \nhighly optimized NVIDIA cuDNN LSTM implementation depending on the use case.\n\nMore details please refer to the original paper [here](https://arxiv.org/abs/1611.01576).\n\n import cntk as C\n import cntkx as Cx\n\n input_seq = C.sequence.input_variable(input_dim)\n prediction_seq = Cx.layers.QRNN(hidden_dim=50)(input_seq)\n\n\n\n***2018-12-07.***\n#### New sequence ops: `cntkx.ops.sequence.pad` and `cntkx.ops.sequence.length`\nAdded two new sequence ops. `cntkx.ops.sequence.pad` allows padding on the sequence axis and \n`cntkx.ops.sequence.length` calculates the length of the sequence.\n\n***2018-12-05.***\n#### Mixture Density Network\nMixture density networks are neural networks that can in principle represent arbitrary conditional \nprobability distributions in the same way that a conventional neural network can represent arbitrary functions.\nMDN are very useful when you need to map an input to several correct targets (aka. one-to-many problem).\n\nUpdated with Gaussian Mixture Density Network ops and loss function. Ops will allow you to extract mdn coefficients and sample from the network.\n\nMore details on mdn can be found in this [paper](https://publications.aston.ac.uk/373/1/NCRG_94_004.pdf) by Christopher Bishop.\n\n import cntk as C\n import cntkx as Cx\n\n input_tensor = C.input_variable(1, name=\"input_tensor\")\n target_tensor = C.input_variable(1, name=\"target_tensor\")\n\n # model\n inner = Dense(50, activation=C.relu)(input_tensor)\n inner = Dense(50, activation=C.relu)(inner)\n prediction_tensor = Dense((ndim + 2) * nmix, activation=None)(inner)\n\n sampled = Cx.sample_gaussian_mdn(prediction_tensor, nmix, ndim) # sampling node\n loss = Cx.gaussian_mdn_loss(prediction_tensor, target_tensor, nmix=nmix, ndim=ndim) # loss function\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/delzac/cntkx", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "cntkx", "package_url": "https://pypi.org/project/cntkx/", "platform": "", "project_url": "https://pypi.org/project/cntkx/", "project_urls": { "Homepage": "https://github.com/delzac/cntkx" }, "release_url": "https://pypi.org/project/cntkx/0.1.23/", "requires_dist": null, "requires_python": ">=3.6", "summary": "Extension library of Microsoft Cognitive Toolkit", "version": "0.1.23" }, "last_serial": 5976841, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "589a619cfd69160284d5db2491937982", "sha256": "19cd149459f346ac7c55ee73ea8a695cdfc462ceedc6eeee09c12bf4123eec9b" }, "downloads": -1, "filename": "cntkx-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "589a619cfd69160284d5db2491937982", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10994, "upload_time": "2018-12-09T10:35:38", "url": "https://files.pythonhosted.org/packages/b9/01/22dca62cdaddf8684c12a87f7988eea4a551bb10ebaff3eda45cb7468b49/cntkx-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bc33bd5979b9bb90a40cfd2f55afa533", "sha256": "67080bb58a8f36c6380b938b2883c66db1ffbfa2f62b48c9ae8d3eb14a7dc4c7" }, "downloads": -1, "filename": "cntkx-0.0.1.tar.gz", "has_sig": false, "md5_digest": "bc33bd5979b9bb90a40cfd2f55afa533", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6405, "upload_time": "2018-12-09T10:35:40", "url": "https://files.pythonhosted.org/packages/72/13/d2177fee5ca28782a816e171be0d74a7424e25aadd548cc2677ae77b2b46/cntkx-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "3011d3cde6a4c6e57f78a8ecebea2650", "sha256": "b0937106f17ba3b3043069c946fb26971c545d11eb26c600f503c507a77606ac" }, "downloads": -1, "filename": "cntkx-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3011d3cde6a4c6e57f78a8ecebea2650", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22263, "upload_time": "2019-01-12T08:47:25", "url": "https://files.pythonhosted.org/packages/ed/fe/21baf9847001deccf01d858a5b3f956e157b767afbf86e48470284e745cf/cntkx-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "de353b2ee856cbcf215d71292ed72f63", "sha256": "9f0209f1ff60453ca67d4d15d3f7ffba5ec90ae690cae437ed340e6b78e9bfee" }, "downloads": -1, "filename": "cntkx-0.0.2.tar.gz", "has_sig": false, "md5_digest": "de353b2ee856cbcf215d71292ed72f63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15115, "upload_time": "2019-01-12T08:47:27", "url": "https://files.pythonhosted.org/packages/48/43/dc48dc16fce7588ff73f4f997251c87cf16223d8d8139f9638b4d34e9d24/cntkx-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "fbd72596f8f80637c8ed009b71e46719", "sha256": "865d8fa01e881bc06206983e06da875313ca39d8b90e48780ce43db68e43bf63" }, "downloads": -1, "filename": "cntkx-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "fbd72596f8f80637c8ed009b71e46719", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24689, "upload_time": "2019-01-17T16:19:09", "url": "https://files.pythonhosted.org/packages/8d/6c/e56e08077010179a0caea528b0744762fe7809ef72eba8d2e760b9f96003/cntkx-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9273c5bf95330428c4f4153c4499a48", "sha256": "c880b5ea82753f1d1635af23d19d2d1d883a8ea8c45d4ea76b6f5f76c3a66348" }, "downloads": -1, "filename": "cntkx-0.0.3.tar.gz", "has_sig": false, "md5_digest": "a9273c5bf95330428c4f4153c4499a48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16829, "upload_time": "2019-01-17T16:19:12", "url": "https://files.pythonhosted.org/packages/43/e8/77793d68ac61d99b10e565f24ffed67e041732e8867299e162f89fa57be9/cntkx-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "3b0108aed97f0f6050400472b4901f45", "sha256": "d595451326f775c0f0149251492c2767a2cd73a15174cc6e9fc08cec4568e2e8" }, "downloads": -1, "filename": "cntkx-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3b0108aed97f0f6050400472b4901f45", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27894, "upload_time": "2019-01-21T14:41:35", "url": "https://files.pythonhosted.org/packages/ff/0e/d116d1c77df5381b477fc80709e6fa1660208224e1d75abf94c2f9f8c4c4/cntkx-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5fa41e9284a41888fbda7866f0ee2850", "sha256": "43f7f228740ef95b1d97d14fff887933cb8bcfbb7fd08a2e41d5253054fcf426" }, "downloads": -1, "filename": "cntkx-0.0.4.tar.gz", "has_sig": false, "md5_digest": "5fa41e9284a41888fbda7866f0ee2850", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19547, "upload_time": "2019-01-21T14:41:37", "url": "https://files.pythonhosted.org/packages/dd/e9/ace1aee34b226231f0cad2e02c2cb9475f62450592741e96dff08b4851b7/cntkx-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "1dd73f18d677657e8e97660bb12d1496", "sha256": "d6a07470668473c667389d5babfd4683a5df91c0e6cc255dc2f0affa7c6500b6" }, "downloads": -1, "filename": "cntkx-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "1dd73f18d677657e8e97660bb12d1496", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42413, "upload_time": "2019-03-10T16:50:34", "url": "https://files.pythonhosted.org/packages/aa/34/7b8e65fb45e6a53303fb20101094fd11264512a3c89eeb2698b138127f9a/cntkx-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6241929992e97bde29ac93c7eb2610fe", "sha256": "d327bf5f766d8dd734477dbbf8c44ad0bbb9577ba50eff570f0096c2c2c75349" }, "downloads": -1, "filename": "cntkx-0.0.5.tar.gz", "has_sig": false, "md5_digest": "6241929992e97bde29ac93c7eb2610fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32918, "upload_time": "2019-03-10T16:50:36", "url": "https://files.pythonhosted.org/packages/17/be/4c7284a7b281c5760c424a3ffb4337326c7726cf7b0ae1ec3421f534a784/cntkx-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "14924a50fdcd85a28731e806c0782458", "sha256": "d11d99c5fbff2403002e899a3a172f454b482bfecef2cb56c250d7ece7ac146a" }, "downloads": -1, "filename": "cntkx-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "14924a50fdcd85a28731e806c0782458", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 47259, "upload_time": "2019-03-11T01:52:11", "url": "https://files.pythonhosted.org/packages/fe/ac/26c905347fde38153003f330806933206c4a14d718bdf1d87b8cbfd6b8ec/cntkx-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "678eea409dbe27992e68d37701005863", "sha256": "7492356a60525eb7ccc7fb46478fe6b2b880e0e88b0f0ca0062667fe4eea4f2a" }, "downloads": -1, "filename": "cntkx-0.0.6.tar.gz", "has_sig": false, "md5_digest": "678eea409dbe27992e68d37701005863", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38776, "upload_time": "2019-03-11T01:52:13", "url": "https://files.pythonhosted.org/packages/03/ee/c38499636982b9b0f03139bb056c22bb1ec1b38955ec85abdb3290faaf19/cntkx-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "709b41d683fa06864059c59359ec314e", "sha256": "bde534e64035e31240a3a0fc57cc57b73c14ac3e6580cf2fd5564f237e62858c" }, "downloads": -1, "filename": "cntkx-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "709b41d683fa06864059c59359ec314e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 48998, "upload_time": "2019-03-12T13:11:37", "url": "https://files.pythonhosted.org/packages/50/fa/5c1d5d25949a7cd67225c0b658052692c8a3c413c42efe0dce7eea92bf82/cntkx-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a1795bbd85cf47101fe91c35ac877030", "sha256": "54fde696a9effbf1275414a731bf17b4651719202e994dfa0c90bc6d99e49915" }, "downloads": -1, "filename": "cntkx-0.0.7.tar.gz", "has_sig": false, "md5_digest": "a1795bbd85cf47101fe91c35ac877030", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40477, "upload_time": "2019-03-12T13:11:39", "url": "https://files.pythonhosted.org/packages/8b/44/0750346e7567bbe19eda6af97bd404f287cc573053435c7517823c442d16/cntkx-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "4750abff1a0fa26bde3d2c9ee37d40a2", "sha256": "db950a827335b73c89b34a8d01bd2ab9eb33f067dead4de67649dcb649008d50" }, "downloads": -1, "filename": "cntkx-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "4750abff1a0fa26bde3d2c9ee37d40a2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 56770, "upload_time": "2019-03-24T10:44:59", "url": "https://files.pythonhosted.org/packages/de/bc/c19d47d51209309fa16c884a7b6a2da3ed141102fbfd6e56b04052205c12/cntkx-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "98451ab0411f59f63bbe3758337e5ab4", "sha256": "0fde7edf503650ef1d7cef28abeb1b6757268bc097a5e1de42eb0ff4820d2acd" }, "downloads": -1, "filename": "cntkx-0.0.8.tar.gz", "has_sig": false, "md5_digest": "98451ab0411f59f63bbe3758337e5ab4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47750, "upload_time": "2019-03-24T10:45:01", "url": "https://files.pythonhosted.org/packages/1c/d7/1ec98043df76742047fedbe3a497528fe7ec848a21944d84fe39283b8f2f/cntkx-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "6ef09feca0a113a50bbe89c9d24b5de6", "sha256": "7f39beebad044ca11a08f8772ef1685728f8b6bc96d343ce4c598c9584dd54eb" }, "downloads": -1, "filename": "cntkx-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "6ef09feca0a113a50bbe89c9d24b5de6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 71120, "upload_time": "2019-04-01T06:31:39", "url": "https://files.pythonhosted.org/packages/56/68/83dee4c5f8a6bb8d51fd7e951df61a9898ee5124a00d5381bf66b42df950/cntkx-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a19f9f13ca11ab443a540885fd71bba7", "sha256": "e62fdbc39538ba700a917419781618767254cc76c3f3271f05579397f3fb21b7" }, "downloads": -1, "filename": "cntkx-0.0.9.zip", "has_sig": false, "md5_digest": "a19f9f13ca11ab443a540885fd71bba7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 77822, "upload_time": "2019-04-01T06:31:42", "url": "https://files.pythonhosted.org/packages/c3/87/95209bc60d21aa6ef04ccb062e924cbcf05d3db5aea02cbaac65a2d932bf/cntkx-0.0.9.zip" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "80993d4b54a45fb2238e58dab0751ad7", "sha256": "ff145f3b3cae2dc178e081d8d12316930203a7702c612c68c2190d0b89a46512" }, "downloads": -1, "filename": "cntkx-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "80993d4b54a45fb2238e58dab0751ad7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 66095, "upload_time": "2019-04-07T10:23:27", "url": "https://files.pythonhosted.org/packages/b3/77/054dca742dbfa759fa5c8ab1d33d0f78e857ccb271a29aec87446d8cc6ce/cntkx-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ca5a8d574517e590f871338f9c3ba7ad", "sha256": "317fd238f3a68e92c11b6fbf24fdefdf49df6a94ea1b2e538b8194a239864185" }, "downloads": -1, "filename": "cntkx-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ca5a8d574517e590f871338f9c3ba7ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56019, "upload_time": "2019-04-07T10:23:30", "url": "https://files.pythonhosted.org/packages/99/d8/afcb0d8ba2b5ff350a98319a4aae6ea10077603b842cdcb72fe9ada4314b/cntkx-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "533453bf2b09c61bcfc75d7484e4c3f9", "sha256": "db7bb4ba297c6186f378413dd85402490c78aa1c703273c793f9f8dcec038a15" }, "downloads": -1, "filename": "cntkx-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "533453bf2b09c61bcfc75d7484e4c3f9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 68186, "upload_time": "2019-04-08T10:34:08", "url": "https://files.pythonhosted.org/packages/ac/84/4a921fc388c0e0f142c5fa5d800c51f652f41f9c835f81b119a5f4898b3b/cntkx-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "601d3143c77a929a7b7ed8141a96e684", "sha256": "7563247cd5086c9219900e5e7b6b36683fe66b3e1b320eba07f0f740a79eb89f" }, "downloads": -1, "filename": "cntkx-0.1.1.tar.gz", "has_sig": false, "md5_digest": "601d3143c77a929a7b7ed8141a96e684", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57827, "upload_time": "2019-04-08T10:34:12", "url": "https://files.pythonhosted.org/packages/0b/76/16655078ba1feb56b25fb238ef78a0cec356d7e685d1a920cbb4ea3589fb/cntkx-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "b703957e4841a6b916f6c236603204a1", "sha256": "50e980c4656cbe3d7750c615a7f3aafd0c0694e29bd8966384672417073a988a" }, "downloads": -1, "filename": "cntkx-0.1.10-py3-none-any.whl", "has_sig": false, "md5_digest": "b703957e4841a6b916f6c236603204a1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 77864, "upload_time": "2019-06-20T17:28:17", "url": "https://files.pythonhosted.org/packages/b7/19/5dc2e9815d4e02af6bc0ec18d718d51c0fc22b0288b7ae2494b91ee43470/cntkx-0.1.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "be5879ce5d4064b98cef8b857d6f30c3", "sha256": "1cef50e250fcb71809f1c41f98d371afc890aee4ba839c3341c5db2e65e624ca" }, "downloads": -1, "filename": "cntkx-0.1.10.tar.gz", "has_sig": false, "md5_digest": "be5879ce5d4064b98cef8b857d6f30c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 74953, "upload_time": "2019-06-20T17:28:20", "url": "https://files.pythonhosted.org/packages/0c/0a/8843af68272f353f69a602a8378162d68ee5aea81365f42839282b455312/cntkx-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "3a794c17e4830d4db18d6f365bdbce84", "sha256": "b0a88b893b9dcbf0046d0f0f0250af49655cf38935b3a2b3e6fad6cc40d5038c" }, "downloads": -1, "filename": "cntkx-0.1.11-py3-none-any.whl", "has_sig": false, "md5_digest": "3a794c17e4830d4db18d6f365bdbce84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 79600, "upload_time": "2019-06-26T07:46:54", "url": "https://files.pythonhosted.org/packages/45/71/41d3e98aa3419a9b5f09d2dbae5ed5c5e3b7de8a3abf05524129cb279cc1/cntkx-0.1.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7f263b3730a6b7b511c51ed934193fb4", "sha256": "731c324139c2b313459346ca583c6bbbb72801827406f0a61e4c145bc0bf41ef" }, "downloads": -1, "filename": "cntkx-0.1.11.tar.gz", "has_sig": false, "md5_digest": "7f263b3730a6b7b511c51ed934193fb4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 78682, "upload_time": "2019-06-26T07:46:58", "url": "https://files.pythonhosted.org/packages/e3/93/2f99068f2a49dd76068c65d682a1442abbb4581365882c732b690bd38d21/cntkx-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "153afc9f400bfb6bad2a3d8c775e0886", "sha256": "69d25570d449fa7827bf67878beb50b7a7f5361fb2aaae42f1960e50f47347a4" }, "downloads": -1, "filename": "cntkx-0.1.12-py3-none-any.whl", "has_sig": false, "md5_digest": "153afc9f400bfb6bad2a3d8c775e0886", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 79933, "upload_time": "2019-07-04T08:07:36", "url": "https://files.pythonhosted.org/packages/c3/20/f6e7ae580fb5401c1f0b2f6eedc2aa3ea3b03acabc4dc582c4a801ff4340/cntkx-0.1.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1465c71c9f12fc667a2cf6802a87b80d", "sha256": "0858c6b6cab0400b0d395a11e6f453cc7ca835442175a9723f47f888d9833181" }, "downloads": -1, "filename": "cntkx-0.1.12.tar.gz", "has_sig": false, "md5_digest": "1465c71c9f12fc667a2cf6802a87b80d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 79446, "upload_time": "2019-07-04T08:07:38", "url": "https://files.pythonhosted.org/packages/79/61/ab6c402fcb238c626ef6e202a0d739e2fa0bb7da0c36b4a183ae2ee430a7/cntkx-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "aba8d77b8bb7b5cc87e44488d74611b5", "sha256": "c711074e41fb26480940891840ea371221d16ab429c732257098e8d0635bac1f" }, "downloads": -1, "filename": "cntkx-0.1.13-py3-none-any.whl", "has_sig": false, "md5_digest": "aba8d77b8bb7b5cc87e44488d74611b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 80795, "upload_time": "2019-08-09T16:04:34", "url": "https://files.pythonhosted.org/packages/ae/76/36a9fb7dff0016393582f64b6ee941735c38f40e732d7ace819fd1e620f5/cntkx-0.1.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3bd3019dd664b72bfa81db4c26936610", "sha256": "ff85703f6fda3a8fd3bc5d0b125a9664a3083fbebe9fb2097ad5748eaff256a4" }, "downloads": -1, "filename": "cntkx-0.1.13.tar.gz", "has_sig": false, "md5_digest": "3bd3019dd664b72bfa81db4c26936610", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 81104, "upload_time": "2019-08-09T16:04:37", "url": "https://files.pythonhosted.org/packages/ce/6b/4f9a07a7959da5b7350274de84c380bd0c9b347a121b6ed85a8eb0fe6802/cntkx-0.1.13.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "1d336158f3e318ba7e31ecec81095a91", "sha256": "60bde7a4803332e1e45f2ff67216c5671eabc6593e8a88c7d4725e134f3bb960" }, "downloads": -1, "filename": "cntkx-0.1.14-py3-none-any.whl", "has_sig": false, "md5_digest": "1d336158f3e318ba7e31ecec81095a91", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 84189, "upload_time": "2019-08-29T13:59:47", "url": "https://files.pythonhosted.org/packages/9f/70/b5c36e6fffde6d5fafde3abe30650d2431d500333a2e1abba461c7a86b9d/cntkx-0.1.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "94f93a27467da3feb14de55239eacb69", "sha256": "db37b6c9052aa3b27c1657fcfc4ca553392aee1fdad01988bd5e7126eb6f1607" }, "downloads": -1, "filename": "cntkx-0.1.14.tar.gz", "has_sig": false, "md5_digest": "94f93a27467da3feb14de55239eacb69", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 88806, "upload_time": "2019-08-29T13:59:52", "url": "https://files.pythonhosted.org/packages/d2/37/2ebabe01b49ba93014574ec879f00c01ce60232f5f2626b44f64d38cde8d/cntkx-0.1.14.tar.gz" } ], "0.1.15": [ { "comment_text": "", "digests": { "md5": "71770025cc83c105af24c9b5106892e1", "sha256": "4db90cbae958eec41bc6d67a50ccd8657e8c72e8da9847f06fabc3fa0a1c2978" }, "downloads": -1, "filename": "cntkx-0.1.15-py3-none-any.whl", "has_sig": false, "md5_digest": "71770025cc83c105af24c9b5106892e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 84496, "upload_time": "2019-09-03T09:43:05", "url": "https://files.pythonhosted.org/packages/a5/1b/0e0915f680e8506d0fd2fcb01bf1b8e25e3b3c49f262825e9e1b02109222/cntkx-0.1.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "67aef2a1d7cfad71e63676aa0367243c", "sha256": "29a4508cac8e09660bbda47dc98c8948cde868041b9d9ec162a80f55ef6dc3a5" }, "downloads": -1, "filename": "cntkx-0.1.15.tar.gz", "has_sig": false, "md5_digest": "67aef2a1d7cfad71e63676aa0367243c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 89256, "upload_time": "2019-09-03T09:43:10", "url": "https://files.pythonhosted.org/packages/32/77/6ef9a5709afbe51affef47454320be3ddb0693083d2fdd28899796eb54dc/cntkx-0.1.15.tar.gz" } ], "0.1.16": [ { "comment_text": "", "digests": { "md5": "bab6422c4efcaaeb356bb48a7acf7fb1", "sha256": "c1a085b708fb1158400858083f47a200243b3ff45efa7f9033b12261f302ebc4" }, "downloads": -1, "filename": "cntkx-0.1.16-py3-none-any.whl", "has_sig": false, "md5_digest": "bab6422c4efcaaeb356bb48a7acf7fb1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 84497, "upload_time": "2019-09-03T09:59:36", "url": "https://files.pythonhosted.org/packages/5f/69/f368f70ac4598997d5c54fd8d2540c244eb2728cb67fe8f9c888615dcdca/cntkx-0.1.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16af0753155309a9de39986d6cad241d", "sha256": "b1f726082da22a91c8b5f122dceeb56849d3cdccd3a13868af34a579d7e86771" }, "downloads": -1, "filename": "cntkx-0.1.16.tar.gz", "has_sig": false, "md5_digest": "16af0753155309a9de39986d6cad241d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 89254, "upload_time": "2019-09-03T09:59:41", "url": "https://files.pythonhosted.org/packages/f2/f0/2a0fb6efb90000cf70a444500e1f7c82872f25671e9434aff2e90863c8a9/cntkx-0.1.16.tar.gz" } ], "0.1.17": [ { "comment_text": "", "digests": { "md5": "990da5409a464679ec9ffcf24a84ec9f", "sha256": "4082d2c7f5e1d6de9100260bb7d5b427c0093af1bc88d520d793581ac8cc9f7d" }, "downloads": -1, "filename": "cntkx-0.1.17-py3-none-any.whl", "has_sig": false, "md5_digest": "990da5409a464679ec9ffcf24a84ec9f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 84496, "upload_time": "2019-09-03T10:04:11", "url": "https://files.pythonhosted.org/packages/c9/ea/a8e8adce5b2ef95310666534b1295c8f93da147cc00f4fd913747722b722/cntkx-0.1.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89d37e67982274e868b56fcad4f12994", "sha256": "4b7b3027dfdb3c14effa3fca0953a3101c1d23cb75c18aea3df382d27f45c861" }, "downloads": -1, "filename": "cntkx-0.1.17.tar.gz", "has_sig": false, "md5_digest": "89d37e67982274e868b56fcad4f12994", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 89251, "upload_time": "2019-09-03T10:04:13", "url": "https://files.pythonhosted.org/packages/96/e6/b3d497b167e5e97832e417a93a52e7ae7796825187e528bae61e84167d82/cntkx-0.1.17.tar.gz" } ], "0.1.18": [ { "comment_text": "", "digests": { "md5": "4546f0a901e167f165541cf2588785b3", "sha256": "04309a66f161851dcd32ba3427f8164e03e99c31a09ea192975ad753908b38d1" }, "downloads": -1, "filename": "cntkx-0.1.18-py3-none-any.whl", "has_sig": false, "md5_digest": "4546f0a901e167f165541cf2588785b3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 84497, "upload_time": "2019-09-03T10:09:36", "url": "https://files.pythonhosted.org/packages/ba/09/e0249d61350e1d9558fb092010f51324062777067393c0b6ebf03fc42f34/cntkx-0.1.18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3d696a0de9ff39b69de959d96ecaa6c8", "sha256": "5dd7a7e12fc1dad5c8f9c125f23dedcc207680ba6a475390381f4896f2ff0cbd" }, "downloads": -1, "filename": "cntkx-0.1.18.tar.gz", "has_sig": false, "md5_digest": "3d696a0de9ff39b69de959d96ecaa6c8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 89264, "upload_time": "2019-09-03T10:09:39", "url": "https://files.pythonhosted.org/packages/01/a1/05dc150e10b297fb5daea9272116a8fb104c271faa7b27d127416ad3e88d/cntkx-0.1.18.tar.gz" } ], "0.1.18.1": [ { "comment_text": "", "digests": { "md5": "4e8069783b0c282b268935aef168a327", "sha256": "eb1891c6f9f90c494e23c853ce2fb5f305e2e60727c6cca51938f29bb86c9f5f" }, "downloads": -1, "filename": "cntkx-0.1.18.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4e8069783b0c282b268935aef168a327", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 84520, "upload_time": "2019-09-03T10:19:50", "url": "https://files.pythonhosted.org/packages/e1/9f/a490f98ee8f83d1a3ea74a85897ddacf03100e949ebd76e1f3158f1e77d7/cntkx-0.1.18.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b8bcb91da85ad300ccdcdde14de7c63a", "sha256": "3580fdd9ae2e2fb3d8e7aebbec650f0b4529c70fa94bbfce5c5fe60544f117e9" }, "downloads": -1, "filename": "cntkx-0.1.18.1.tar.gz", "has_sig": false, "md5_digest": "b8bcb91da85ad300ccdcdde14de7c63a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 89271, "upload_time": "2019-09-03T10:19:54", "url": "https://files.pythonhosted.org/packages/8c/c0/025d6c10de53afdf96737cfd25f5bf3e7cf70a8b0bd6500b53231a2a4249/cntkx-0.1.18.1.tar.gz" } ], "0.1.18.2": [ { "comment_text": "", "digests": { "md5": "94a7c662af8f494c188cb347c57d9508", "sha256": "4e80ce976df451cc80b93b14b00ae4f26f0cc99f75fc95787a0895adaac6f727" }, "downloads": -1, "filename": "cntkx-0.1.18.2-py3-none-any.whl", "has_sig": false, "md5_digest": "94a7c662af8f494c188cb347c57d9508", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 84521, "upload_time": "2019-09-03T11:47:01", "url": "https://files.pythonhosted.org/packages/a1/68/2451f961acca49de1888871008ffe7c09db3d3f0b97416aacc03e776efcc/cntkx-0.1.18.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "368efe9b74ef6b010f4e9d630919fbbc", "sha256": "5c9367158574b2e238fb91213de88768214bea9707864866149935d4b242e841" }, "downloads": -1, "filename": "cntkx-0.1.18.2.tar.gz", "has_sig": false, "md5_digest": "368efe9b74ef6b010f4e9d630919fbbc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 89272, "upload_time": "2019-09-03T11:47:03", "url": "https://files.pythonhosted.org/packages/f3/09/7a2599a7f7208e39250d58e9eadeb178daa519a7c0804adb87bfcaa5c66f/cntkx-0.1.18.2.tar.gz" } ], "0.1.18.3": [ { "comment_text": "", "digests": { "md5": "c0d12d51632863bc331880d9c5613bc1", "sha256": "a1524d1e112ab92d8cedef6c15e5cb038b880c3e1d327b61ea5fa49c6eb9195b" }, "downloads": -1, "filename": "cntkx-0.1.18.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c0d12d51632863bc331880d9c5613bc1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 85569, "upload_time": "2019-09-03T11:52:08", "url": "https://files.pythonhosted.org/packages/56/0f/eea52c5c9d11e241f1e615ba9c210c7cac7e83a203b542c4fccee18fb17c/cntkx-0.1.18.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e6b536bf95e69379624e130a854ba7a", "sha256": "bc28acde088abb31356bb00b73d776fe1b3384a2fd8046747e2dd70e4388c018" }, "downloads": -1, "filename": "cntkx-0.1.18.3.tar.gz", "has_sig": false, "md5_digest": "1e6b536bf95e69379624e130a854ba7a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 89283, "upload_time": "2019-09-03T11:52:12", "url": "https://files.pythonhosted.org/packages/57/4a/b235d16f9cfb344b311ecacdf895ff1346dd19f68243ef8fe759ddb59e54/cntkx-0.1.18.3.tar.gz" } ], "0.1.19": [ { "comment_text": "", "digests": { "md5": "4c468bcfefd0d3c466a5f6a156517ee0", "sha256": "cd3278be723cee25f3da7c04a06a4fee00345724f1be8b112750619861053ac6" }, "downloads": -1, "filename": "cntkx-0.1.19-py3-none-any.whl", "has_sig": false, "md5_digest": "4c468bcfefd0d3c466a5f6a156517ee0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 86335, "upload_time": "2019-09-05T17:44:44", "url": "https://files.pythonhosted.org/packages/55/0d/0234186568b0010d4b985352612135c2c04654fcc6916d69bcce0f268735/cntkx-0.1.19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2e4088cb3f47502fe3aebc9403d97f2", "sha256": "5490b7d27ef77e1633dc23b95fc371644d80cca636151a9023fe8b7c7b07c07f" }, "downloads": -1, "filename": "cntkx-0.1.19.tar.gz", "has_sig": false, "md5_digest": "c2e4088cb3f47502fe3aebc9403d97f2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 90805, "upload_time": "2019-09-05T17:44:49", "url": "https://files.pythonhosted.org/packages/c2/92/b0c0e714e90f46bffa7c21bdbb64fdf480c9cb51bdfc0fe9447174dc10d6/cntkx-0.1.19.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "43635d8679035d0808f728a9eb925235", "sha256": "8c4e2c7f288fc21f10981833db32b9cc02e8d2827d3e0041bb61889135355183" }, "downloads": -1, "filename": "cntkx-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "43635d8679035d0808f728a9eb925235", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 68453, "upload_time": "2019-04-10T04:21:18", "url": "https://files.pythonhosted.org/packages/0e/8d/ccdbecbd1cfceb824c558613d6f6c1c1abc34e10f511ba8692382d334d31/cntkx-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b25d4d2b9b0ad61ae4083c08a4b3a06c", "sha256": "1f36242ecf99dfccddceeef4ba7e7b4462d7e03fa06e5abcdf89d5497abb7ff1" }, "downloads": -1, "filename": "cntkx-0.1.2.tar.gz", "has_sig": false, "md5_digest": "b25d4d2b9b0ad61ae4083c08a4b3a06c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58064, "upload_time": "2019-04-10T04:21:23", "url": "https://files.pythonhosted.org/packages/40/d7/3751872bd6a6b431ec8490caae19827124dee6820b7c0123b9398e6060f3/cntkx-0.1.2.tar.gz" } ], "0.1.20": [ { "comment_text": "", "digests": { "md5": "e187f530e7fe309b2d5d36dde6fbb243", "sha256": "40da9bd3ba9376b5371af33b0c4a38a75d12291afc9ff325090447b1da551aa8" }, "downloads": -1, "filename": "cntkx-0.1.20-py3-none-any.whl", "has_sig": false, "md5_digest": "e187f530e7fe309b2d5d36dde6fbb243", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 86460, "upload_time": "2019-09-07T15:05:43", "url": "https://files.pythonhosted.org/packages/38/20/23775f702c4a779ff5bb4549a2b96dd29de4b665abdd8c2818e2822755e6/cntkx-0.1.20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23265bafd80a5326af74272086cc56fe", "sha256": "57ff3f14a1e080c6cfb172588bdd60bae5e630a5297772ea31b2ae153aff7f5e" }, "downloads": -1, "filename": "cntkx-0.1.20.tar.gz", "has_sig": false, "md5_digest": "23265bafd80a5326af74272086cc56fe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 90944, "upload_time": "2019-09-07T15:05:49", "url": "https://files.pythonhosted.org/packages/df/d8/02cc3ab6a669184e0cc2162920e28ceee1ff0dcb2ab4996954414b538aad/cntkx-0.1.20.tar.gz" } ], "0.1.21": [ { "comment_text": "", "digests": { "md5": "820d2e02395624afa680694764282a67", "sha256": "5328e91a470d59faddabb19acadc07fbc58f18965f533e7abc6565035b0e5181" }, "downloads": -1, "filename": "cntkx-0.1.21-py3-none-any.whl", "has_sig": false, "md5_digest": "820d2e02395624afa680694764282a67", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 86467, "upload_time": "2019-09-09T07:27:56", "url": "https://files.pythonhosted.org/packages/ed/43/995d3a0af59daa78d178f9d5f6bd8c14a3e149d7ecc107726c5d2f29dc63/cntkx-0.1.21-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9fdb0610ec53c8b2c856751dd69cb406", "sha256": "ad668b2a438088a09cfbb3217922047357525a317910074bec33d6e53e2749da" }, "downloads": -1, "filename": "cntkx-0.1.21.tar.gz", "has_sig": false, "md5_digest": "9fdb0610ec53c8b2c856751dd69cb406", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 91012, "upload_time": "2019-09-09T07:28:02", "url": "https://files.pythonhosted.org/packages/53/55/22c1d0b4c7f589343a7826b9af94ed46b22761f077d011b84b245efa2651/cntkx-0.1.21.tar.gz" } ], "0.1.22": [ { "comment_text": "", "digests": { "md5": "df95d8bfdeb6c0122fa52b340ec2a112", "sha256": "b99abfc33295a28aaa323116adc505e6f639116a4faa00ab220268e81384ead3" }, "downloads": -1, "filename": "cntkx-0.1.22-py3-none-any.whl", "has_sig": false, "md5_digest": "df95d8bfdeb6c0122fa52b340ec2a112", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 85858, "upload_time": "2019-09-30T04:28:40", "url": "https://files.pythonhosted.org/packages/22/d4/bd83ab5946eeee1fa2ced236ba003a7a37b4f4923f8dc2b096546d7ad77e/cntkx-0.1.22-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a1c4f61576630a2efb5f8151f30cd56", "sha256": "5356fdfe6bf33d65c083ac08afbbea3d00df6ec6721b6a38a1183d1b18654cee" }, "downloads": -1, "filename": "cntkx-0.1.22.tar.gz", "has_sig": false, "md5_digest": "3a1c4f61576630a2efb5f8151f30cd56", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 91444, "upload_time": "2019-09-30T04:28:45", "url": "https://files.pythonhosted.org/packages/2c/e7/587a0d8369dfa458ece81eb59758dfb80f96ec5e2a3a17f5b686056c3bbb/cntkx-0.1.22.tar.gz" } ], "0.1.23": [ { "comment_text": "", "digests": { "md5": "3f3456cbacdc3caa6b18be31d3b9e96c", "sha256": "2824f097d1c917a3cc686d46d6f6d8d373499260f3e136fa5a0aac736329e524" }, "downloads": -1, "filename": "cntkx-0.1.23-py3-none-any.whl", "has_sig": false, "md5_digest": "3f3456cbacdc3caa6b18be31d3b9e96c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 89424, "upload_time": "2019-10-15T12:59:09", "url": "https://files.pythonhosted.org/packages/a8/dc/e47d1bbd5c157c75a5ab457de8720154b3941afbb67109915bec0d646e1b/cntkx-0.1.23-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "793a4ac505756b3faabef4545cf08110", "sha256": "c455ca286cc4b50592d8872ab761c073a2a5d23c49d0f14ee992b6285ae6863e" }, "downloads": -1, "filename": "cntkx-0.1.23.tar.gz", "has_sig": false, "md5_digest": "793a4ac505756b3faabef4545cf08110", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 94565, "upload_time": "2019-10-15T12:59:13", "url": "https://files.pythonhosted.org/packages/4c/95/72c81c8122e5abdd484401dc9716c945a2af82a7296fb9f76821c19b968c/cntkx-0.1.23.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "fc594ff099128b7c4eb2600c32224c04", "sha256": "a26175fd09a8ce0d55113c51b328bcb5b1fd90e53ba446c4ab0f168f8a54e141" }, "downloads": -1, "filename": "cntkx-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "fc594ff099128b7c4eb2600c32224c04", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 68464, "upload_time": "2019-04-10T06:38:17", "url": "https://files.pythonhosted.org/packages/35/90/17cb965592c3909aff79aefc3ceaeeb1775ef5de66037b373f9f2ce285aa/cntkx-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ad41e547bca4d41cb49085dd66d118d", "sha256": "58c2082dca196f84e2e24979cafecb3e5f867172e08000bafdf9188139730ec8" }, "downloads": -1, "filename": "cntkx-0.1.3.tar.gz", "has_sig": false, "md5_digest": "5ad41e547bca4d41cb49085dd66d118d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 58083, "upload_time": "2019-04-10T06:38:22", "url": "https://files.pythonhosted.org/packages/f1/94/c31f3ab2194eba0f118a70fc7720a5a7fb9f389db21e7b1b7e2737646825/cntkx-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "9dd2a0ce69cc193f7f3f1b242928d099", "sha256": "6ea0c0dd18c83aab5b06101d5be957d305701e17d664fd1c460cf394c16369cc" }, "downloads": -1, "filename": "cntkx-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "9dd2a0ce69cc193f7f3f1b242928d099", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 68934, "upload_time": "2019-04-10T07:29:24", "url": "https://files.pythonhosted.org/packages/57/1d/6f882629c9aeb8da185187e9b9b455c0e9ce45b4c5e41610b780f83e6a47/cntkx-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "505a4712ba7acd387e6918d87007f4e2", "sha256": "b0123846b9a273ddec5dc69fcd62e6d6481b3fb4bbc59bdf50cd9d9473232577" }, "downloads": -1, "filename": "cntkx-0.1.4.tar.gz", "has_sig": false, "md5_digest": "505a4712ba7acd387e6918d87007f4e2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 58440, "upload_time": "2019-04-10T07:29:31", "url": "https://files.pythonhosted.org/packages/c3/d7/c8954d99fb8bfe2359fc4d2c03f09c95641bd7251e1d7b53fde281785b5c/cntkx-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "22d8d8f486960242cf4c6eee7101695e", "sha256": "999f785137e5d8ae478f8cca45474f2bfd375f6db6e44701b155529a71d905f5" }, "downloads": -1, "filename": "cntkx-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "22d8d8f486960242cf4c6eee7101695e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 70405, "upload_time": "2019-04-14T12:00:58", "url": "https://files.pythonhosted.org/packages/bb/70/a548f55ecd3e985dfaf0d73f745e9a302b13d56d10b3cba3c744f024fe69/cntkx-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b14278e8893619536edf3b5bd255591f", "sha256": "f631ebe761683fd2d3ffd78710fc4afb2f560ea8edd044976128e7296fba0ca9" }, "downloads": -1, "filename": "cntkx-0.1.5.tar.gz", "has_sig": false, "md5_digest": "b14278e8893619536edf3b5bd255591f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 60614, "upload_time": "2019-04-14T12:01:06", "url": "https://files.pythonhosted.org/packages/23/97/5d87db798d32705ea5c3d88f0cfa9e78ed574340d87e695332c3af787e00/cntkx-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "7a228ed199a5cab67c160399b6dd1c59", "sha256": "319b303693c27a335f8f0529d3a1d05a10cfc3cee983c3c323bf3c585c9a6997" }, "downloads": -1, "filename": "cntkx-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "7a228ed199a5cab67c160399b6dd1c59", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 72464, "upload_time": "2019-04-18T15:23:00", "url": "https://files.pythonhosted.org/packages/7b/ea/87e9c76af575ba9072b75ecf8985f7350387dd41d578d8d5319e8e6ae755/cntkx-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "efd7cb11a5ffae094c4ccef5992aea79", "sha256": "2c060751da5f0b65b6137388539f7cd625a1a2f3bae7949039ebe8eb7b868c8c" }, "downloads": -1, "filename": "cntkx-0.1.6.tar.gz", "has_sig": false, "md5_digest": "efd7cb11a5ffae094c4ccef5992aea79", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 62530, "upload_time": "2019-04-18T15:23:09", "url": "https://files.pythonhosted.org/packages/d1/28/400930bd638c213084282e6238523211899414071b0be4c595f71e6ea7c4/cntkx-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "51377dcc0f98df1b8c0f94ee7fc708b4", "sha256": "90e67a318cb61bf02a2b33a0fb06df71b32bd8170f934524e82df94b9a2ecb8e" }, "downloads": -1, "filename": "cntkx-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "51377dcc0f98df1b8c0f94ee7fc708b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 73644, "upload_time": "2019-05-02T05:47:09", "url": "https://files.pythonhosted.org/packages/f6/59/587b0151f964c429bc9af455cffd89de50c6fd292aac97d1d50734126777/cntkx-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43d89b9280ac6e4342862952cbd7f132", "sha256": "a114a5fbd902c390a52dca1c9c6be8ab285dc59a76cd8645eeb7e803165934fa" }, "downloads": -1, "filename": "cntkx-0.1.7.tar.gz", "has_sig": false, "md5_digest": "43d89b9280ac6e4342862952cbd7f132", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 63415, "upload_time": "2019-05-02T05:47:17", "url": "https://files.pythonhosted.org/packages/94/b2/b27ab195e15ebd14a07dba4c324b57761375f8bca96fe7ca51108f6cef65/cntkx-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "376b74fcfd34345036e206bf8ba9be50", "sha256": "7fb5bf4ac05981867f82b239547a66f97c6668d30abc57e1e0a33d5872bdbaa1" }, "downloads": -1, "filename": "cntkx-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "376b74fcfd34345036e206bf8ba9be50", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 75972, "upload_time": "2019-05-04T14:07:12", "url": "https://files.pythonhosted.org/packages/eb/c2/6626e3a7de08177d5f90cd3e571ef9411a3c6c59d34d8fcf96a76dd986b4/cntkx-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40e926da2f0f53e0148e518078ee55f2", "sha256": "0eca821a18cf92f2d17f871b584253bf4fc7a7441d433d148471ddd76b6b369c" }, "downloads": -1, "filename": "cntkx-0.1.8.tar.gz", "has_sig": false, "md5_digest": "40e926da2f0f53e0148e518078ee55f2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 73093, "upload_time": "2019-05-04T14:07:20", "url": "https://files.pythonhosted.org/packages/ad/a2/0c69f65069a745eac0b1e7e6d8f14712594ef9ebe706f3ffe8aa4755078b/cntkx-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "bc0f8f1adbfb8f02dc6d66acb8ec16c0", "sha256": "9b21d9abdbf4a93f8a64e11d4599165483c220587145b8a0ba4427b182da0cc0" }, "downloads": -1, "filename": "cntkx-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "bc0f8f1adbfb8f02dc6d66acb8ec16c0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 76951, "upload_time": "2019-05-25T05:31:42", "url": "https://files.pythonhosted.org/packages/11/25/e37c437dc4b05783bff38bca8e18d53c14d39b2ec6df9c56c95ccff58457/cntkx-0.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d555bea7cb14329c49f39eeb6811b4b9", "sha256": "49a9e06a59f4434fca73fabb902e17c25ff3d87e77d3eb29ce9eac78c802f1c2" }, "downloads": -1, "filename": "cntkx-0.1.9.tar.gz", "has_sig": false, "md5_digest": "d555bea7cb14329c49f39eeb6811b4b9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 73285, "upload_time": "2019-05-25T05:31:44", "url": "https://files.pythonhosted.org/packages/61/6b/b77aa23b3a0ef3961baca6b4a6f4f97e54ff8531a156a9690eff801f5732/cntkx-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3f3456cbacdc3caa6b18be31d3b9e96c", "sha256": "2824f097d1c917a3cc686d46d6f6d8d373499260f3e136fa5a0aac736329e524" }, "downloads": -1, "filename": "cntkx-0.1.23-py3-none-any.whl", "has_sig": false, "md5_digest": "3f3456cbacdc3caa6b18be31d3b9e96c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 89424, "upload_time": "2019-10-15T12:59:09", "url": "https://files.pythonhosted.org/packages/a8/dc/e47d1bbd5c157c75a5ab457de8720154b3941afbb67109915bec0d646e1b/cntkx-0.1.23-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "793a4ac505756b3faabef4545cf08110", "sha256": "c455ca286cc4b50592d8872ab761c073a2a5d23c49d0f14ee992b6285ae6863e" }, "downloads": -1, "filename": "cntkx-0.1.23.tar.gz", "has_sig": false, "md5_digest": "793a4ac505756b3faabef4545cf08110", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 94565, "upload_time": "2019-10-15T12:59:13", "url": "https://files.pythonhosted.org/packages/4c/95/72c81c8122e5abdd484401dc9716c945a2af82a7296fb9f76821c19b968c/cntkx-0.1.23.tar.gz" } ] }