Skip to content

Instantly share code, notes, and snippets.

@jkrukowski
Last active July 17, 2019 15:40
Show Gist options
  • Save jkrukowski/611ba422838305eb54b756119699a989 to your computer and use it in GitHub Desktop.
Save jkrukowski/611ba422838305eb54b756119699a989 to your computer and use it in GitHub Desktop.
my-mnist.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "my-mnist.ipynb",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"kernelspec": {
"name": "swift",
"display_name": "Swift"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/jkrukowski/611ba422838305eb54b756119699a989/my-mnist.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CoEfOhVWQI9T",
"colab_type": "text"
},
"source": [
"# MNIST SGD with Swift for TensorFlow"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "w9oJuFnoUKuS",
"colab_type": "text"
},
"source": [
"## Imports\n",
"### Import necessary libraries"
]
},
{
"cell_type": "code",
"metadata": {
"id": "glNzWvo49gIl",
"colab_type": "code",
"colab": {}
},
"source": [
"import TensorFlow\n",
"import Python\n",
"import Foundation\n",
"import FoundationNetworking\n",
"%include \"EnableIPythonDisplay.swift\"\n",
"IPythonDisplay.shell.enable_matplotlib(\"inline\")\n",
"let plt = Python.import(\"matplotlib.pyplot\")\n",
"let gzip = Python.import(\"gzip\")\n",
"let pickle = Python.import(\"pickle\")\n",
"let dataPath = \"/content/sample_data/mnist.pkl.gz\""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "S9aaSkrQVw0u",
"colab_type": "text"
},
"source": [
"## Data"
]
},
{
"cell_type": "code",
"metadata": {
"id": "mvW5qNmBNX5_",
"colab_type": "code",
"colab": {}
},
"source": [
"struct MnistData {\n",
" var x: Tensor<Float>\n",
" var y: Tensor<Int32>\n",
"}\n",
"\n",
"extension MnistData {\n",
" init(x: PythonObject, y: PythonObject) {\n",
" self.x = Tensor<Float>(numpy: x)!\n",
" self.y = Raw.cast(Tensor<Int64>(numpy: y)!)\n",
" }\n",
"}"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "bi9j1YCglJ2T",
"colab_type": "text"
},
"source": [
"## Utility functions"
]
},
{
"cell_type": "code",
"metadata": {
"id": "VEHLo6jPCw1i",
"colab_type": "code",
"colab": {}
},
"source": [
"// taken from https://www.tensorflow.org/swift/tutorials/model_training_walkthrough\n",
"\n",
"func download(from sourceString: String, to destinationString: String) {\n",
" let source = URL(string: sourceString)!\n",
" let destination = URL(fileURLWithPath: destinationString)\n",
" let data = try! Data.init(contentsOf: source)\n",
" try! data.write(to: destination)\n",
"}\n",
"\n",
"func loadData(from path: String) -> PythonObject {\n",
" let f = gzip.open(path)\n",
" defer {\n",
" f.close()\n",
" }\n",
" return pickle.load(f, encoding: \"latin-1\")\n",
"}\n",
"\n",
"func parse(data: PythonObject) -> (train: MnistData, vaild: MnistData) {\n",
" let (trainData, validData, _) = data.tuple3\n",
" let (trainX, trainY) = trainData.tuple2\n",
" let (validX, validY) = validData.tuple2\n",
" return (\n",
" MnistData(x: trainX, y: trainY),\n",
" MnistData(x: validX, y: validY)\n",
" )\n",
"}\n",
"\n",
"func randomImage(_ data: MnistData) -> (Int, Tensor<Float>) {\n",
" let index = Int.random(in: 0..<data.x.shape[0]) \n",
" return (index, data.x[index].reshaped(to: [28, 28]))\n",
"}\n",
"\n",
"func plot(_ tensor: Tensor<Float>) {\n",
" plt.imshow(tensor.makeNumpyArray(), cmap: \"gray\")\n",
" plt.show()\n",
"}\n",
"\n",
"func plot(loss: [Float]) {\n",
" plt.plot(loss)\n",
" plt.show()\n",
"}\n",
"\n",
"// taken from https://github.com/tensorflow/swift-models/blob/master/MNIST/main.swift\n",
"\n",
"func minibatch<Scalar>(\n",
" in x: Tensor<Scalar>, \n",
" at index: Int, \n",
" batchSize: Int\n",
") -> Tensor<Scalar> {\n",
" let start = index * batchSize\n",
" return x[start..<start+batchSize]\n",
"}"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "HWzrsNEGnmSG",
"colab_type": "text"
},
"source": [
"## Get the data\n",
"\n",
"Get the 'pickled' MNIST dataset from http://deeplearning.net/data/mnist/mnist.pkl.gz."
]
},
{
"cell_type": "code",
"metadata": {
"id": "bWcmkZnTocK5",
"colab_type": "code",
"colab": {}
},
"source": [
"download(\n",
" from: \"http://deeplearning.net/data/mnist/mnist.pkl.gz\", \n",
" to: dataPath\n",
")\n",
"\n",
"let data = parse(data: loadData(from: dataPath))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "310logT4T-mZ",
"colab_type": "code",
"outputId": "dd1bd0b1-e7a7-4bca-a906-038be9bce728",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 286
}
},
"source": [
"let (index, image) = randomImage(data.train)\n",
"plot(image)\n",
"print(\"Recognized as: \\(data.train.y[index])\")"
],
"execution_count": 6,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Recognized as: 2\r\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EVpVjR7xlggl",
"colab_type": "text"
},
"source": [
"## Train the model"
]
},
{
"cell_type": "code",
"metadata": {
"id": "JrbIs7W9YIDo",
"colab_type": "code",
"colab": {}
},
"source": [
"struct MnistModel: Layer {\n",
" var layer1 = Dense<Float>(inputSize: 784, outputSize: 10)\n",
"\n",
" @differentiable\n",
" func callAsFunction(_ input: Tensor<Float>) -> Tensor<Float> {\n",
" return layer1.call(input)\n",
" }\n",
"}"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "U-GehLP0bWd5",
"colab_type": "code",
"colab": {}
},
"source": [
"func train(\n",
" mnistData: MnistData,\n",
" model: inout MnistModel,\n",
" epochCount: Int = 1,\n",
" larningRate: Float = 2e-2,\n",
" batchSize: Int = 64\n",
") -> [Float] {\n",
" let maxBatch = Int(mnistData.x.shape[0]) / batchSize\n",
" var modelLoss = [Float]()\n",
" for epoch in 0..<epochCount {\n",
" for i in 0..<maxBatch {\n",
" let x = minibatch(in: mnistData.x, at: i, batchSize: batchSize)\n",
" let y = minibatch(in: mnistData.y, at: i, batchSize: batchSize)\n",
" let (loss, grad) = model.valueWithGradient { m -> Tensor<Float> in\n",
" let predicted = m.callAsFunction(x)\n",
" return softmaxCrossEntropy(logits: predicted, labels: y)\n",
" }\n",
" model.layer1.weight -= larningRate * grad.layer1.weight\n",
" model.layer1.bias -= larningRate * grad.layer1.bias\n",
" modelLoss.append(loss.scalarized())\n",
" }\n",
" }\n",
" return modelLoss\n",
"}"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "iHmquk4yzUxG",
"colab_type": "code",
"colab": {}
},
"source": [
"func trainWithWeightDecay(\n",
" mnistData: MnistData,\n",
" model: inout MnistModel,\n",
" epochCount: Int = 1,\n",
" larningRate: Float = 2e-2,\n",
" batchSize: Int = 64,\n",
" weightDecay: Float = 1e-5\n",
") -> [Float] {\n",
" let maxBatch = Int(mnistData.x.shape[0]) / batchSize\n",
" var modelLoss = [Float]()\n",
" for epoch in 0..<epochCount {\n",
" for i in 0..<maxBatch {\n",
" var w2: Float = 0\n",
" for p in model.recursivelyAllWritableKeyPaths(to: Tensor<Float>.self) {\n",
" w2 += pow(model[keyPath: p], 2).sum().scalarized()\n",
" }\n",
" let x = minibatch(in: mnistData.x, at: i, batchSize: batchSize)\n",
" let y = minibatch(in: mnistData.y, at: i, batchSize: batchSize)\n",
" let (loss, grad) = model.valueWithGradient { m -> Tensor<Float> in\n",
" let predicted = m.callAsFunction(x)\n",
" return softmaxCrossEntropy(logits: predicted, labels: y) + w2 * weightDecay\n",
" }\n",
" model.layer1.weight -= larningRate * grad.layer1.weight\n",
" model.layer1.bias -= larningRate * grad.layer1.bias\n",
" modelLoss.append(loss.scalarized())\n",
" }\n",
" }\n",
" return modelLoss\n",
"}"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "dScxOOME2LZK",
"colab_type": "code",
"colab": {}
},
"source": [
"var mnistModel = MnistModel()\n",
"var mnistModelWithWeightDecay = MnistModel()"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "xEr5JA272QXz",
"colab_type": "code",
"colab": {}
},
"source": [
"let loss = train(\n",
" mnistData: data.train, \n",
" model: &mnistModel,\n",
" epochCount: 1\n",
")\n",
"\n",
"let lossWithWeightDecay = train(\n",
" mnistData: data.train, \n",
" model: &mnistModelWithWeightDecay,\n",
" epochCount: 1\n",
")"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "14sham-o5JmP",
"colab_type": "code",
"outputId": "4bd7bbea-4c78-46ad-a847-08637db275b6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 521
}
},
"source": [
"plot(loss: loss)\n",
"plot(loss: lossWithWeightDecay)"
],
"execution_count": 17,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nz3ovDoTqAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "RxM_NmHf2bdo",
"colab_type": "code",
"outputId": "e5155caa-b826-45df-d328-4a10f105312c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 286
}
},
"source": [
"let item = data.vaild.x[0]\n",
"let prediction = model(item.reshaped(to: [1, 784]))\n",
"plot(item.reshaped(to: [28, 28]))\n",
"prediction.argmax(squeezingAxis: 1)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nXGStUmRfAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[3]\n"
]
},
"metadata": {
"tags": []
},
"execution_count": 19
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "FWBLzSbw-tik",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment