Created
September 16, 2019 18:35
-
-
Save shanecandoit/5b1e63ab589a647f4ef373d69766ab5b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# reuters news categorize" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "Using TensorFlow backend.\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "from keras.datasets import reuters" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Downloading data from https://s3.amazonaws.com/text-datasets/reuters.npz\n", | |
| "2113536/2110848 [==============================] - 1s 1us/step\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "(train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10_000)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "((8982,), (8982,), (2246,), (2246,))" | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "train_data.shape, train_labels.shape, test_data.shape, test_labels.shape" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Downloading data from https://s3.amazonaws.com/text-datasets/reuters_word_index.json\n", | |
| "557056/550378 [==============================] - 0s 1us/step\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# decode to words\n", | |
| "word_index = reuters.get_word_index()\n", | |
| "rev_word_index = dict([(val, key) for (key, val) in word_index.items()])\n", | |
| "def decode(news_id):\n", | |
| " res = ' '.join([rev_word_index.get(i - 3, '?') for i in train_data[news_id]])\n", | |
| " return res\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "0\n", | |
| "? ? ? said as a result of its december acquisition of space co it expects earnings per share in 1987 of 1 15 to 1 30 dlrs per share up from 70 cts in 1986 the company said pretax net should rise to nine to 10 mln dlrs from six mln dlrs in 1986 and rental operation revenues to 19 to 22 mln dlrs from 12 5 mln dlrs it said cash flow per share this year should be 2 50 to three dlrs reuter 3\n", | |
| "3\n", | |
| "\n", | |
| "1\n", | |
| "? generale de banque sa lt ? br and lt heller overseas corp of chicago have each taken 50 pct stakes in ? company sa ? factors generale de banque said in a statement it gave no financial details of the transaction sa ? ? turnover in 1986 was 17 5 billion belgian francs reuter 3\n", | |
| "4\n", | |
| "\n", | |
| "2\n", | |
| "? shr 3 28 dlrs vs 22 cts shr diluted 2 99 dlrs vs 22 cts net 46 0 mln vs 3 328 000 avg shrs 14 0 mln vs 15 2 mln year shr 5 41 dlrs vs 1 56 dlrs shr diluted 4 94 dlrs vs 1 50 dlrs net 78 2 mln vs 25 9 mln avg shrs 14 5 mln vs 15 1 mln note earnings per share reflect the two for one split effective january 6 1987 per share amounts are calculated after preferred stock dividends loss continuing operations for the qtr 1986 includes gains of sale of investments in ? corp of 14 mln dlrs and associated companies of 4 189 000 less writedowns of investments in national ? inc of 11 8 mln and ? corp of 15 6 mln reuter 3\n", | |
| "3\n", | |
| "\n", | |
| "3\n", | |
| "? the farmers home administration the u s agriculture department's farm lending arm could lose about seven billion dlrs in outstanding principal on its severely ? borrowers or about one fourth of its farm loan portfolio the general accounting office gao said in remarks prepared for delivery to the senate agriculture committee brian crowley senior associate director of gao also said that a preliminary analysis of proposed changes in ? financial eligibility standards indicated as many as one half of ? borrowers who received new loans from the agency in 1986 would be ? under the proposed system the agency has proposed evaluating ? credit using a variety of financial ratios instead of relying solely on ? ability senate agriculture committee chairman patrick leahy d vt ? the proposed eligibility changes telling ? administrator ? clark at a hearing that they would mark a dramatic shift in the agency's purpose away from being farmers' lender of last resort toward becoming a big city bank but clark defended the new regulations saying the agency had a responsibility to ? its 70 billion dlr loan portfolio in a ? yet ? manner crowley of gao ? ? arm said the proposed credit ? system attempted to ensure that ? would make loans only to borrowers who had a reasonable change of repaying their debt reuter 3\n", | |
| "4\n", | |
| "\n", | |
| "4\n", | |
| "? seton co said its board has received a proposal from chairman and chief executive officer philip d ? to acquire seton for 15 75 dlrs per share in cash seton said the acquisition bid is subject to ? arranging the necessary financing it said he intends to ask other members of senior management to participate the company said ? owns 30 pct of seton stock and other management members another 7 5 pct seton said it has formed an independent board committee to consider the offer and has deferred the annual meeting it had scheduled for march 31 reuter 3\n", | |
| "4\n", | |
| "\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "for i in range(5):\n", | |
| " print(i)\n", | |
| " print(decode(i))\n", | |
| " print(train_labels[i])\n", | |
| " print()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# one hot encode input" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import numpy as np" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "def vectorize_seqs(seqs, dims=10_000):\n", | |
| " results = np.zeros((len(seqs), dims))\n", | |
| " for i, seq in enumerate(seqs):\n", | |
| " results[i, seq] = 1.\n", | |
| " return results" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 13, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "x_train = vectorize_seqs(train_data)\n", | |
| "x_test = vectorize_seqs(test_data)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "((8982, 10000), (2246, 10000))" | |
| ] | |
| }, | |
| "execution_count": 14, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "x_train.shape, x_test.shape" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# one hot encode category" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 16, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "def to_one_hot(labels, dims=46):\n", | |
| " results = np.zeros((len(labels), dims))\n", | |
| " for i, label in enumerate(labels):\n", | |
| " results[i, label] = 1.\n", | |
| " return results" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 17, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "one_hot_train_labels = to_one_hot(train_labels)\n", | |
| "one_hot_test_labels = to_one_hot(test_labels)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "((8982, 46), (2246, 46))" | |
| ] | |
| }, | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "one_hot_train_labels.shape, one_hot_test_labels.shape" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# model" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "from keras import models\n", | |
| "from keras import layers" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 21, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "WARNING: Logging before flag parsing goes to stderr.\n", | |
| "W0916 13:23:31.052654 4663387584 deprecation_wrapper.py:119] From /anaconda3/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", | |
| "\n", | |
| "W0916 13:23:31.084854 4663387584 deprecation_wrapper.py:119] From /anaconda3/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", | |
| "\n", | |
| "W0916 13:23:31.087738 4663387584 deprecation_wrapper.py:119] From /anaconda3/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", | |
| "\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "model = models.Sequential()\n", | |
| "model.add(layers.Dense(64, activation='relu', input_shape=(10_000,)))\n", | |
| "model.add(layers.Dense(64, activation='relu'))\n", | |
| "model.add(layers.Dense(46, activation='softmax'))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "W0916 13:24:08.987415 4663387584 deprecation_wrapper.py:119] From /anaconda3/lib/python3.7/site-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", | |
| "\n", | |
| "W0916 13:24:09.014467 4663387584 deprecation_wrapper.py:119] From /anaconda3/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", | |
| "\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "model.compile(optimizer='adam',\n", | |
| " loss='categorical_crossentropy',\n", | |
| " metrics=['acc'])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 23, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "_________________________________________________________________\n", | |
| "Layer (type) Output Shape Param # \n", | |
| "=================================================================\n", | |
| "dense_1 (Dense) (None, 64) 640064 \n", | |
| "_________________________________________________________________\n", | |
| "dense_2 (Dense) (None, 64) 4160 \n", | |
| "_________________________________________________________________\n", | |
| "dense_3 (Dense) (None, 46) 2990 \n", | |
| "=================================================================\n", | |
| "Total params: 647,214\n", | |
| "Trainable params: 647,214\n", | |
| "Non-trainable params: 0\n", | |
| "_________________________________________________________________\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "model.summary()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 24, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# validation - set apart 1000 samples" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 25, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "x_val = x_train[:1000]\n", | |
| "partial_x_train = x_train[1000:]\n", | |
| "\n", | |
| "y_val = one_hot_train_labels[:1000]\n", | |
| "partial_y_train = one_hot_train_labels[1000:]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "((1000, 10000), (7982, 10000), (1000, 46), (7982, 46))" | |
| ] | |
| }, | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "x_val.shape, partial_x_train.shape, y_val.shape, partial_y_train.shape" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 27, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# train" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 34, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Train on 7982 samples, validate on 1000 samples\n", | |
| "Epoch 1/9\n", | |
| "7982/7982 [==============================] - 1s 110us/step - loss: 0.0972 - acc: 0.9638 - val_loss: 1.0223 - val_acc: 0.8060\n", | |
| "Epoch 2/9\n", | |
| "7982/7982 [==============================] - 1s 107us/step - loss: 0.0946 - acc: 0.9614 - val_loss: 1.0177 - val_acc: 0.8100\n", | |
| "Epoch 3/9\n", | |
| "7982/7982 [==============================] - 1s 108us/step - loss: 0.0935 - acc: 0.9607 - val_loss: 1.0411 - val_acc: 0.8010\n", | |
| "Epoch 4/9\n", | |
| "7982/7982 [==============================] - 1s 109us/step - loss: 0.0893 - acc: 0.9634 - val_loss: 1.0584 - val_acc: 0.8020\n", | |
| "Epoch 5/9\n", | |
| "7982/7982 [==============================] - 1s 104us/step - loss: 0.0862 - acc: 0.9624 - val_loss: 1.0672 - val_acc: 0.8080\n", | |
| "Epoch 6/9\n", | |
| "7982/7982 [==============================] - 1s 103us/step - loss: 0.0853 - acc: 0.9609 - val_loss: 1.0696 - val_acc: 0.8070\n", | |
| "Epoch 7/9\n", | |
| "7982/7982 [==============================] - 1s 104us/step - loss: 0.0843 - acc: 0.9633 - val_loss: 1.0586 - val_acc: 0.8050\n", | |
| "Epoch 8/9\n", | |
| "7982/7982 [==============================] - 1s 106us/step - loss: 0.0870 - acc: 0.9622 - val_loss: 1.0894 - val_acc: 0.8010\n", | |
| "Epoch 9/9\n", | |
| "7982/7982 [==============================] - 1s 104us/step - loss: 0.0839 - acc: 0.9623 - val_loss: 1.0723 - val_acc: 0.8060\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "history = model.fit(partial_x_train,\n", | |
| " partial_y_train,\n", | |
| " epochs= 9, # 20,\n", | |
| " batch_size=512,\n", | |
| " validation_data=(x_val, y_val))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 35, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# plot" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 36, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import matplotlib.pyplot as plt" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 37, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "loss = history.history['loss']\n", | |
| "val_loss = history.history['val_loss']\n", | |
| "\n", | |
| "epochs = range(1, len(loss)+1)\n", | |
| "\n", | |
| "plt.plot(epochs, loss, 'bo', label='train loss')\n", | |
| "plt.plot(epochs, val_loss, 'b', label='valid loss')\n", | |
| "plt.title('training and validation loss')\n", | |
| "plt.xlabel('epochs')\n", | |
| "plt.ylabel('loss')\n", | |
| "plt.legend()\n", | |
| "\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 38, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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02cB3SX1LnBdJE2RVCOppq6urt0KNzOzxooZFsqzLJrMXw2cIGkhcALwKrC1wHWJiBkRUR0R1X379t3Ves3MrBkdi7jtWmBAznwlsCq3QUSsAiYBSDoAODsi1kmqBcY3WXduEWs1M7MWFHPPYj5wuKTBkjoDFwD35DaQ1EdSfQ3XAj9Ppx8ATpHUKz2wfUq6zMzMSqBoYRERW4ErSN7klwCzI2KxpOmSTk+bjQeWSnoe+ADw7XTdt4B/JQmc+cD0dJmZmZWAInY6FLBHqq6ujpqamlKXYbbP2rJlC7W1tWzatKnUpVgeXbp0obKykk6dOjVaLmlBRFRnrV/MYxZmtg+pra2le/fuVFVVIeU7R8VKJSJYs2YNtbW1DB48uE3b8HAfZtYuNm3aRO/evR0UZUgSvXv33qW9PoeFmbUbB0X52tXXxmFhZnuFt99+mx//+MdtWve0007j7bffbrHNN7/5TR566KE2bX9v4LAws5KYOROqqqBDh+TnzJm7tr2WwmLbtm0trnvffffRs2fPFttMnz6dk046qc317ekcFma2282cCVOmwMsvQ0Tyc8qUXQuMa665hhdffJFRo0bx5S9/mblz53LiiSdy0UUXcdRRRwFw5plncvTRRzNs2DBmzJjRsG5VVRWrV69mxYoVDBkyhM985jMMGzaMU045hffeew+AyZMnc9dddzW0v/766xkzZgxHHXUUzz33HAB1dXWcfPLJjBkzhs9+9rMMGjSI1atX71Tr5ZdfTnV1NcOGDeP6669vWD5//nw+9rGPMXLkSMaOHcv69evZtm0bV199NUcddRQjRozghz/8YdufpF0REXvF7eijjw4zK51nn3224LaDBkUkMdH4NmhQ2x9/+fLlMWzYsIb5OXPmRNeuXeOll15qWLZmzZqIiNi4cWMMGzYsVq9endYzKOrq6mL58uVRUVERCxcujIiIc889N+64446IiPj0pz8dv/nNbxra33TTTRERcfPNN8ell14aERGf+9zn4jvf+U5ERNx///0BRF1d3U611texdevWOOGEE2LRokXx/vvvx+DBg+Nvf/tbRESsW7cutmzZEj/+8Y9j0qRJsWXLlkbrtkW+1wioiQLeY33qrJntdq+80rrlbTV27NhGp4redNNN3H333QCsXLmSF154gd69ezdaZ/DgwYwaNQqAo48+mhUrVuTd9qRJ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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "plt.clf()\n", | |
| "\n", | |
| "acc = history.history['acc']\n", | |
| "val_acc = history.history['val_acc']\n", | |
| "\n", | |
| "plt.plot(epochs, acc, 'bo', label='training acc')\n", | |
| "plt.plot(epochs, val_acc, 'b', label='validation acc')\n", | |
| "plt.title('training and validation acc')\n", | |
| "plt.xlabel('epochs')\n", | |
| "plt.ylabel('acc')\n", | |
| "plt.legend()\n", | |
| "\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 39, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# peaks at 9, do run for 9 epochs" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 40, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "2246/2246 [==============================] - 0s 126us/step\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "results = model.evaluate(x_test, one_hot_test_labels)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 42, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "[1.1937172574224157, 0.7911843276936776]" | |
| ] | |
| }, | |
| "execution_count": 42, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "results\n", | |
| "# [1.1937172574224157, 0.7911843276936776]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.7.3" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment