├── .gitignore ├── README.md ├── CONTRIBUTING.md ├── LICENSE └── Delta_Orthogonal_Convolution_Demo.ipynb /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This repository contains a short colab notebook demonstrating the use of a Delta-Orthogonal initialization at criticality to train a deep convolutional neural network. 2 | 3 | Link to open and run the notebook in a sandbox environment: [Delta-Orthogonal demo](https://colab.sandbox.google.com/github/brain-research/mean-field-cnns/blob/master/Delta_Orthogonal_Convolution_Demo.ipynb) 4 | 5 | This is based on the paper: 6 | > Dynamical Isometry and a Mean Field Theory of CNNs: How to Train 10,000-Layer Vanilla Convolutional Neural Networks
7 | > Lechao Xiao, Yasaman Bahri, Jascha Sohl-Dickstein, Samuel S. Schoenholz, Jeffrey Pennington
8 | > International Conference on Machine Learnig, 2017 [arXiv/1806.05393](https://arxiv.org/pdf/1806.05393.pdf) 9 | 10 | This is not an official Google product. 11 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to Contribute 2 | 3 | We'd love to accept your patches and contributions to this project. There are 4 | just a few small guidelines you need to follow. 5 | 6 | ## Contributor License Agreement 7 | 8 | Contributions to this project must be accompanied by a Contributor License 9 | Agreement. You (or your employer) retain the copyright to your contribution; 10 | this simply gives us permission to use and redistribute your contributions as 11 | part of the project. Head over to to see 12 | your current agreements on file or to sign a new one. 13 | 14 | You generally only need to submit a CLA once, so if you've already submitted one 15 | (even if it was for a different project), you probably don't need to do it 16 | again. 17 | 18 | ## Code reviews 19 | 20 | All submissions, including submissions by project members, require review. We 21 | use GitHub pull requests for this purpose. Consult 22 | [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more 23 | information on using pull requests. 24 | 25 | ## Community Guidelines 26 | 27 | This project follows [Google's Open Source Community 28 | Guidelines](https://opensource.google.com/conduct/). 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /Delta_Orthogonal_Convolution_Demo.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "Delta-orthogonal convolution demo", 7 | "version": "0.3.2", 8 | "views": {}, 9 | "default_view": {}, 10 | "provenance": [ 11 | { 12 | "file_id": "https://github.com/brain-research/mean-field-cnns/blob/master/Delta_Orthogonal_Convolution_Demo.ipynb", 13 | "timestamp": 1531939751373 14 | }, 15 | { 16 | "file_id": "https://github.com/brain-research/mean-field-cnns/blob/master/Delta_Orthogonal_Convolution_Demo.ipynb", 17 | "timestamp": 1531087430434 18 | }, 19 | { 20 | "file_id": "/piper/depot/google3/experimental/users/xlc/tutorial/delta-orthogonal/Delta_Orthogonal_Convolution_Tutorial.ipynb?workspaceId=xlc:delta-tutorial::citc", 21 | "timestamp": 1530912596374 22 | }, 23 | { 24 | "file_id": "1jCrtgpsARtzdK15DU3n_Fg7sg3i8Z_zH", 25 | "timestamp": 1530817417472 26 | } 27 | ], 28 | "collapsed_sections": [ 29 | "yM4dNJo5vTNK" 30 | ] 31 | }, 32 | "kernelspec": { 33 | "name": "python2", 34 | "display_name": "Python 2" 35 | }, 36 | "accelerator": "GPU" 37 | }, 38 | "cells": [ 39 | { 40 | "metadata": { 41 | "id": "yM4dNJo5vTNK", 42 | "colab_type": "text" 43 | }, 44 | "cell_type": "markdown", 45 | "source": [ 46 | "##### Copyright 2018 Google LLC.\n", 47 | "\n", 48 | "Licensed under the Apache License, Version 2.0 (the \"License\");" 49 | ] 50 | }, 51 | { 52 | "metadata": { 53 | "id": "gXsmXsnSvSWg", 54 | "colab_type": "code", 55 | "colab": { 56 | "autoexec": { 57 | "startup": false, 58 | "wait_interval": 0 59 | } 60 | } 61 | }, 62 | "cell_type": "code", 63 | "source": [ 64 | "#@title Delta Orthogonal Convolution Tutorial\n", 65 | "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", 66 | "# you may not use this file except in compliance with the License.\n", 67 | "# You may obtain a copy of the License at\n", 68 | "#\n", 69 | "# https://www.apache.org/licenses/LICENSE-2.0\n", 70 | "#\n", 71 | "# Unless required by applicable law or agreed to in writing, software\n", 72 | "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", 73 | "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", 74 | "# See the License for the specific language governing permissions and\n", 75 | "# limitations under the License." 76 | ], 77 | "execution_count": 0, 78 | "outputs": [] 79 | }, 80 | { 81 | "metadata": { 82 | "id": "TgkHGgykhOgv", 83 | "colab_type": "text" 84 | }, 85 | "cell_type": "markdown", 86 | "source": [ 87 | "# Initialization" 88 | ] 89 | }, 90 | { 91 | "metadata": { 92 | "id": "zkS604HdvdOc", 93 | "colab_type": "code", 94 | "colab": { 95 | "autoexec": { 96 | "startup": false, 97 | "wait_interval": 0 98 | }, 99 | "base_uri": "https://localhost:8080/", 100 | "height": 85 101 | }, 102 | "outputId": "36f03d7a-c1b9-45d1-e10e-9ab1e5ca3b73", 103 | "executionInfo": { 104 | "status": "ok", 105 | "timestamp": 1531952465146, 106 | "user_tz": 420, 107 | "elapsed": 954, 108 | "user": { 109 | "displayName": "Jascha Sohl-dickstein", 110 | "photoUrl": "//lh4.googleusercontent.com/-ExW5fXMTwx8/AAAAAAAAAAI/AAAAAAAAHWQ/PTjU7Pqr6RY/s50-c-k-no/photo.jpg", 111 | "userId": "111059308654884078644" 112 | } 113 | } 114 | }, 115 | "cell_type": "code", 116 | "source": [ 117 | "import matplotlib.pylab as plt\n", 118 | "import numpy as np\n", 119 | "import tensorflow as tf\n", 120 | "import warnings\n", 121 | "\n", 122 | "from scipy.integrate import quad, dblquad\n", 123 | "from tensorflow.examples.tutorials.mnist import input_data\n", 124 | "\n", 125 | "mnist = input_data.read_data_sets(\"MNIST_data/\", one_hot=True)" 126 | ], 127 | "execution_count": 9, 128 | "outputs": [ 129 | { 130 | "output_type": "stream", 131 | "text": [ 132 | "Extracting MNIST_data/train-images-idx3-ubyte.gz\n", 133 | "Extracting MNIST_data/train-labels-idx1-ubyte.gz\n", 134 | "Extracting MNIST_data/t10k-images-idx3-ubyte.gz\n", 135 | "Extracting MNIST_data/t10k-labels-idx1-ubyte.gz\n" 136 | ], 137 | "name": "stdout" 138 | } 139 | ] 140 | }, 141 | { 142 | "metadata": { 143 | "id": "AQDA6OyOK2mT", 144 | "colab_type": "text" 145 | }, 146 | "cell_type": "markdown", 147 | "source": [ 148 | "## Helper functions and class for mean field calculations." 149 | ] 150 | }, 151 | { 152 | "metadata": { 153 | "id": "nVt1knDlyJrj", 154 | "colab_type": "code", 155 | "colab": { 156 | "autoexec": { 157 | "startup": false, 158 | "wait_interval": 0 159 | } 160 | } 161 | }, 162 | "cell_type": "code", 163 | "source": [ 164 | "def gauss_density(x):\n", 165 | " return np.exp(-x**2/2)/np.sqrt(2*np.pi)\n", 166 | "\n", 167 | "def d_tanh(x):\n", 168 | " \"\"\"Derivative of tanh.\"\"\"\n", 169 | " return 1./ np.cosh(x)**2" 170 | ], 171 | "execution_count": 0, 172 | "outputs": [] 173 | }, 174 | { 175 | "metadata": { 176 | "id": "z6Ps0zhZF2yT", 177 | "colab_type": "code", 178 | "colab": { 179 | "autoexec": { 180 | "startup": false, 181 | "wait_interval": 0 182 | } 183 | } 184 | }, 185 | "cell_type": "code", 186 | "source": [ 187 | "class MeanField(object):\n", 188 | " def __init__(self, f, df):\n", 189 | " \"\"\"\n", 190 | " Args: \n", 191 | " f: activation function\n", 192 | " df: derivative of f. \n", 193 | " \"\"\"\n", 194 | " self.f = f\n", 195 | " self.df = df\n", 196 | " \n", 197 | " def qmap_density(self, x, q):\n", 198 | " \"\"\"Compute the density function of the q-map.\"\"\"\n", 199 | " return (self.f(np.sqrt(q)*x)**2)* gauss_density(x)\n", 200 | " \n", 201 | " def chi_density(self, x, q):\n", 202 | " return gauss_density(x) * (self.df(np.sqrt(q)*x)**2) \n", 203 | " \n", 204 | " def sw_sb(self, q, chi1):\n", 205 | " \"\"\"Compute the critical line. Set chi1=1, return variances of weight and \n", 206 | " bias on the critical line with qstar=q.\n", 207 | " \"\"\"\n", 208 | " big_val = 1e12\n", 209 | " with warnings.catch_warnings():\n", 210 | " warnings.simplefilter(\"ignore\") # silence underflow and overflow warning\n", 211 | " sw = chi1/quad(self.chi_density, -np.inf, np.inf, args= (q))[0]\n", 212 | " sb = q - sw * quad(self.qmap_density, -np.inf, np.inf, args= (q))[0]\n", 213 | " return sw, sb" 214 | ], 215 | "execution_count": 0, 216 | "outputs": [] 217 | }, 218 | { 219 | "metadata": { 220 | "id": "Dq87r6zkKzFF", 221 | "colab_type": "text" 222 | }, 223 | "cell_type": "markdown", 224 | "source": [ 225 | "# Phase diagram" 226 | ] 227 | }, 228 | { 229 | "metadata": { 230 | "id": "7qANsoKoGFUF", 231 | "colab_type": "code", 232 | "colab": { 233 | "autoexec": { 234 | "startup": false, 235 | "wait_interval": 0 236 | }, 237 | "base_uri": "https://localhost:8080/", 238 | "height": 365 239 | }, 240 | "outputId": "376ae514-91e5-4792-d62a-8ce8f20dca74", 241 | "executionInfo": { 242 | "status": "ok", 243 | "timestamp": 1531952378590, 244 | "user_tz": 420, 245 | "elapsed": 1337, 246 | "user": { 247 | "displayName": "Jascha Sohl-dickstein", 248 | "photoUrl": "//lh4.googleusercontent.com/-ExW5fXMTwx8/AAAAAAAAAAI/AAAAAAAAHWQ/PTjU7Pqr6RY/s50-c-k-no/photo.jpg", 249 | "userId": "111059308654884078644" 250 | } 251 | } 252 | }, 253 | "cell_type": "code", 254 | "source": [ 255 | "background = [255.0/255.0, 229/255.0, 204/255.0]\n", 256 | "fontsize=16\n", 257 | "\n", 258 | "mf = MeanField(np.tanh, d_tanh)\n", 259 | "n = 50\n", 260 | "qrange = np.linspace(1e-5, 2.25, n)\n", 261 | "\n", 262 | "sw = [mf.sw_sb(q, 1)[0] for q in qrange]\n", 263 | "sb = [mf.sw_sb(q, 1)[1] for q in qrange]\n", 264 | "\n", 265 | "\n", 266 | "plt.figure(figsize=(5, 5))\n", 267 | "plt.plot(sw, sb)\n", 268 | "plt.xlim(0.5, 3)\n", 269 | "plt.ylim(0, 0.25)\n", 270 | "plt.title('Phase diagram', fontsize=fontsize)\n", 271 | "plt.xlabel('$\\sigma_\\omega^2$', fontsize=fontsize)\n", 272 | "plt.ylabel('$\\sigma_b^2$', fontsize=fontsize)\n", 273 | "\n", 274 | "plt.gca().set_facecolor(background)\n", 275 | "plt.gcf().set_size_inches(plt.gcf().get_size_inches()[1], plt.gcf().get_size_inches()[1])\n" 276 | ], 277 | "execution_count": 5, 278 | "outputs": [ 279 | { 280 | "output_type": "display_data", 281 | "data": { 282 | "image/png": "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\nVAAAAABJRU5ErkJggg==\n", 283 | "text/plain": [ 284 | "" 285 | ] 286 | }, 287 | "metadata": { 288 | "tags": [] 289 | } 290 | } 291 | ] 292 | }, 293 | { 294 | "metadata": { 295 | "id": "d6bOit_9hky-", 296 | "colab_type": "text" 297 | }, 298 | "cell_type": "markdown", 299 | "source": [ 300 | "# Train Delta Orthogonal Network" 301 | ] 302 | }, 303 | { 304 | "metadata": { 305 | "id": "Ly8JGExPqG6b", 306 | "colab_type": "code", 307 | "colab": { 308 | "autoexec": { 309 | "startup": false, 310 | "wait_interval": 0 311 | } 312 | } 313 | }, 314 | "cell_type": "code", 315 | "source": [ 316 | "# DEPTH and C_SIZE are chosen to be small for a fast running demo. You will want\n", 317 | "# to increase both values for most use cases.\n", 318 | "# Further note: this will run *much faster* if you choose a runtime with a GPU\n", 319 | "# accelerator.\n", 320 | "DEPTH = 16 # number of layers.\n", 321 | "C_SIZE = 32 # channel size.\n", 322 | "K_SIZE = 3 # kernel size\n", 323 | "LEARNING_RATE = 1e-2\n", 324 | "MOMENTUM = 0.95\n", 325 | "phi = tf.tanh # non-linearity\n", 326 | "\n", 327 | "# variances of weight and bias. \n", 328 | "# To obtain critical values of the variances of the weights and biases,\n", 329 | "# see compute mean field below. \n", 330 | "mf = MeanField(np.tanh, d_tanh)\n", 331 | "qstar = 1./DEPTH\n", 332 | "W_VAR, B_VAR = mf.sw_sb(qstar, 1)\n", 333 | "\n", 334 | "\n", 335 | "def circular_padding(input_, width, kernel_size):\n", 336 | " \"\"\"Padding input_ for computing circular convolution.\"\"\"\n", 337 | " begin = kernel_size // 2\n", 338 | " end = kernel_size - 1 - begin\n", 339 | " tmp_up = tf.slice(input_, [0, width - begin, 0, 0], [-1, begin, width, -1])\n", 340 | " tmp_down = tf.slice(input_, [0, 0, 0, 0], [-1, end, width, -1])\n", 341 | " tmp = tf.concat([tmp_up, input_, tmp_down], 1)\n", 342 | " new_width = width + kernel_size - 1\n", 343 | " tmp_left = tf.slice(tmp, [0, 0, width - begin, 0], [-1, new_width, begin, -1])\n", 344 | " tmp_right = tf.slice(tmp, [0, 0, 0, 0], [-1, new_width, end, -1])\n", 345 | " return tf.concat([tmp_left, tmp, tmp_right], 2)\n", 346 | "\n", 347 | "def conv2d(x, w, strides=1, padding='SAME'):\n", 348 | " return tf.nn.conv2d(x, w, strides=[1, strides, strides, 1], padding=padding)\n", 349 | "\n", 350 | "def get_weight(shape, std=1., name=None):\n", 351 | " return tf.Variable(tf.random_normal(shape, mean=0, stddev=std), name=name)\n", 352 | "\n", 353 | "def get_orthogonal_weight(name, shape, gain=1.):\n", 354 | " # Can also use tf.contrib.framework.convolutional_orthogonal_2d\n", 355 | " return tf.get_variable(name, shape=shape,\n", 356 | " initializer=tf.contrib.framework.convolutional_delta_orthogonal(gain=gain))\n", 357 | "\n", 358 | "def conv_model(x):\n", 359 | " \"\"\"Convolutional layers. Ouput logits. \"\"\"\n", 360 | " z = tf.reshape(x, [-1,28,28,1])\n", 361 | " # Increase the channel size to C_SIZE.\n", 362 | " std = np.sqrt(W_VAR / (K_SIZE**2 * 1))\n", 363 | " kernel = get_weight([K_SIZE, K_SIZE, 1, C_SIZE], std=std, name='kernel_0')\n", 364 | " bias = get_weight([C_SIZE], std=np.sqrt(B_VAR), name='bias_0')\n", 365 | " h = conv2d(z, kernel, strides=1, padding='SAME') + bias\n", 366 | " z = phi(h)\n", 367 | " \n", 368 | " # Reducing spacial dimension to 7 * 7; applying conv with stride=2 twice.\n", 369 | " std = np.sqrt(W_VAR / (K_SIZE**2 * C_SIZE))\n", 370 | " shape = [K_SIZE, K_SIZE, C_SIZE, C_SIZE]\n", 371 | " for j in range(2):\n", 372 | " kernel = get_weight(shape, std=std, name='reduction_{}_kernel'.format(j))\n", 373 | " bias = get_weight([C_SIZE], std=np.sqrt(B_VAR),\n", 374 | " name='reduction_{}_bias'.format(j))\n", 375 | " h = conv2d(z, kernel, strides=2) + bias\n", 376 | " z = phi(h)\n", 377 | " new_width = 7 # width of the current image after dimension reduction. \n", 378 | " \n", 379 | " # A deep convolution block with depth=DEPTH.\n", 380 | " std = np.sqrt(W_VAR)\n", 381 | " for j in range(DEPTH):\n", 382 | " name = 'block_conv_{}'.format(j)\n", 383 | " kernel_name, bias_name = name + 'kernel', name + 'bias'\n", 384 | " kernel = get_orthogonal_weight(kernel_name, shape, gain=std)\n", 385 | " bias = get_weight([C_SIZE], std=np.sqrt(B_VAR), name=bias_name)\n", 386 | " z_pad = circular_padding(z, new_width, K_SIZE)\n", 387 | " h = conv2d(z_pad, kernel, padding='VALID') + bias\n", 388 | " z = phi(h)\n", 389 | " z_ave = tf.reduce_mean(z, [1, 2])\n", 390 | " logit_W = get_weight([C_SIZE, 10], std=np.sqrt(1./(C_SIZE)))\n", 391 | " logit_b = get_weight([10], std=0.)\n", 392 | " return tf.matmul(z_ave, logit_W) + logit_b\n", 393 | "\n", 394 | "def loss(logits, labels):\n", 395 | " return tf.reduce_mean(\n", 396 | " tf.nn.softmax_cross_entropy_with_logits_v2(logits=logits, labels=labels))\n", 397 | "\n", 398 | "def train_op(loss_, learning_rate, global_step):\n", 399 | " with tf.control_dependencies([tf.assign(global_step, global_step + 1)]):\n", 400 | " return tf.train.MomentumOptimizer(learning_rate, MOMENTUM).minimize(loss_)\n", 401 | "\n", 402 | "def accuracy(logits, labels):\n", 403 | " return tf.reduce_mean(tf.cast(tf.equal(tf.argmax(logits, 1),\n", 404 | " tf.argmax(labels, 1)), \n", 405 | " tf.float32))\n", 406 | "\n", 407 | "def run_model(num_steps=1000):\n", 408 | " tf.reset_default_graph()\n", 409 | " accuracy_log = []\n", 410 | " loss_log = []\n", 411 | " x = tf.placeholder(tf.float32, shape=[None, 784])\n", 412 | " y_ = tf.placeholder(tf.float32, shape=[None, 10])\n", 413 | " global_step = tf.train.get_or_create_global_step()\n", 414 | " logits = conv_model(x)\n", 415 | " acc, loss_ = accuracy(logits, y_), loss(logits, y_)\n", 416 | " training = train_op(loss_, LEARNING_RATE, global_step)\n", 417 | " with tf.Session() as sess:\n", 418 | " sess.run(tf.global_variables_initializer())\n", 419 | " for i in range(num_steps):\n", 420 | " batch_xs, batch_ys = mnist.train.next_batch(100)\n", 421 | " _, acc_value, loss_value, g_step = sess.run(\n", 422 | " [training, acc, loss_, global_step], \n", 423 | " feed_dict={x:batch_xs, y_:batch_ys})\n", 424 | " accuracy_log.append(acc_value)\n", 425 | " loss_log.append(loss_value)\n", 426 | " if i % (num_steps/20) == 0 or i == num_steps-1:\n", 427 | " print('Step: %5d Accuracy: %.2f Loss: %g'%(g_step, acc_value, loss_value))\n", 428 | " return accuracy_log, loss_log\n" 429 | ], 430 | "execution_count": 0, 431 | "outputs": [] 432 | }, 433 | { 434 | "metadata": { 435 | "id": "mi0I2nqPK1pW", 436 | "colab_type": "code", 437 | "colab": { 438 | "autoexec": { 439 | "startup": false, 440 | "wait_interval": 0 441 | }, 442 | "base_uri": "https://localhost:8080/", 443 | "height": 374 444 | }, 445 | "outputId": "b25e5bf4-8ef7-4a9d-f13b-ff23437aa7ca", 446 | "executionInfo": { 447 | "status": "ok", 448 | "timestamp": 1531952418965, 449 | "user_tz": 420, 450 | "elapsed": 39643, 451 | "user": { 452 | "displayName": "Jascha Sohl-dickstein", 453 | "photoUrl": "//lh4.googleusercontent.com/-ExW5fXMTwx8/AAAAAAAAAAI/AAAAAAAAHWQ/PTjU7Pqr6RY/s50-c-k-no/photo.jpg", 454 | "userId": "111059308654884078644" 455 | } 456 | } 457 | }, 458 | "cell_type": "code", 459 | "source": [ 460 | "accuracy_log, loss_log = run_model()" 461 | ], 462 | "execution_count": 7, 463 | "outputs": [ 464 | { 465 | "output_type": "stream", 466 | "text": [ 467 | "Step: 0 Accuracy: 0.07 Loss: 2.30505\n", 468 | "Step: 51 Accuracy: 0.26 Loss: 1.97781\n", 469 | "Step: 100 Accuracy: 0.24 Loss: 1.85622\n", 470 | "Step: 150 Accuracy: 0.38 Loss: 1.48279\n", 471 | "Step: 200 Accuracy: 0.51 Loss: 1.39135\n", 472 | "Step: 250 Accuracy: 0.46 Loss: 1.28701\n", 473 | "Step: 300 Accuracy: 0.50 Loss: 1.27826\n", 474 | "Step: 350 Accuracy: 0.61 Loss: 1.11567\n", 475 | "Step: 400 Accuracy: 0.56 Loss: 0.869806\n", 476 | "Step: 450 Accuracy: 0.80 Loss: 0.696834\n", 477 | "Step: 500 Accuracy: 0.71 Loss: 0.76464\n", 478 | "Step: 550 Accuracy: 0.89 Loss: 0.48842\n", 479 | "Step: 600 Accuracy: 0.89 Loss: 0.536567\n", 480 | "Step: 651 Accuracy: 0.92 Loss: 0.291886\n", 481 | "Step: 700 Accuracy: 0.97 Loss: 0.152038\n", 482 | "Step: 750 Accuracy: 0.93 Loss: 0.252104\n", 483 | "Step: 800 Accuracy: 0.95 Loss: 0.204787\n", 484 | "Step: 850 Accuracy: 0.93 Loss: 0.214044\n", 485 | "Step: 900 Accuracy: 0.97 Loss: 0.14412\n", 486 | "Step: 950 Accuracy: 0.98 Loss: 0.144498\n", 487 | "Step: 999 Accuracy: 0.93 Loss: 0.182756\n" 488 | ], 489 | "name": "stdout" 490 | } 491 | ] 492 | }, 493 | { 494 | "metadata": { 495 | "id": "Fnls4axFv5TZ", 496 | "colab_type": "code", 497 | "colab": { 498 | "autoexec": { 499 | "startup": false, 500 | "wait_interval": 0 501 | }, 502 | "base_uri": "https://localhost:8080/", 503 | "height": 334 504 | }, 505 | "outputId": "d2f95d4e-0861-40b7-8b7c-1be25694b31e", 506 | "executionInfo": { 507 | "status": "ok", 508 | "timestamp": 1531952423297, 509 | "user_tz": 420, 510 | "elapsed": 704, 511 | "user": { 512 | "displayName": "Jascha Sohl-dickstein", 513 | "photoUrl": "//lh4.googleusercontent.com/-ExW5fXMTwx8/AAAAAAAAAAI/AAAAAAAAHWQ/PTjU7Pqr6RY/s50-c-k-no/photo.jpg", 514 | "userId": "111059308654884078644" 515 | } 516 | } 517 | }, 518 | "cell_type": "code", 519 | "source": [ 520 | "background = [255.0/255.0, 229/255.0, 204/255.0]\n", 521 | "\n", 522 | "plt.figure(figsize=(12, 5))\n", 523 | "plt.subplot(1,2,1)\n", 524 | "plt.plot(accuracy_log)\n", 525 | "plt.xlabel('Training step')\n", 526 | "plt.ylabel('Training accuracy')\n", 527 | "plt.gca().set_facecolor(background)\n", 528 | "\n", 529 | "plt.subplot(1,2,2)\n", 530 | "plt.plot(loss_log)\n", 531 | "plt.xlabel('Training step')\n", 532 | "plt.ylabel('Training loss')\n", 533 | "plt.gca().set_facecolor(background)" 534 | ], 535 | "execution_count": 8, 536 | "outputs": [ 537 | { 538 | "output_type": "display_data", 539 | "data": { 540 | "image/png": "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\nAAAASUVORK5CYII=\n", 541 | "text/plain": [ 542 | "" 543 | ] 544 | }, 545 | "metadata": { 546 | "tags": [] 547 | } 548 | } 549 | ] 550 | }, 551 | { 552 | "metadata": { 553 | "id": "vfV9vle55IDU", 554 | "colab_type": "code", 555 | "colab": { 556 | "autoexec": { 557 | "startup": false, 558 | "wait_interval": 0 559 | } 560 | } 561 | }, 562 | "cell_type": "code", 563 | "source": [ 564 | "" 565 | ], 566 | "execution_count": 0, 567 | "outputs": [] 568 | } 569 | ] 570 | } 571 | --------------------------------------------------------------------------------