├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── dsprites.gif ├── dsprites_ndarray_co1sh3sc6or40x32y32_64x64.hdf5 ├── dsprites_ndarray_co1sh3sc6or40x32y32_64x64.npz └── dsprites_reloading_example.ipynb /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dSprites - Disentanglement testing Sprites dataset 2 | 3 | This repository contains the dSprites dataset, used to assess the 4 | disentanglement properties of unsupervised learning methods. 5 | 6 | If you use this dataset in your work, please cite it as follows: 7 | 8 | ## Bibtex 9 | 10 | ``` 11 | @misc{dsprites17, 12 | author = {Loic Matthey and Irina Higgins and Demis Hassabis and Alexander Lerchner}, 13 | title = {dSprites: Disentanglement testing Sprites dataset}, 14 | howpublished= {https://github.com/deepmind/dsprites-dataset/}, 15 | year = "2017", 16 | } 17 | ``` 18 | 19 | ## Description 20 | 21 | ![dsprite_gif](dsprites.gif) 22 | 23 | dSprites is a dataset of 2D shapes procedurally generated from 6 ground truth 24 | independent latent factors. These factors are *color*, *shape*, *scale*, 25 | *rotation*, *x* and *y* positions of a sprite. 26 | 27 | All possible combinations of these latents are present exactly once, 28 | generating N = 737280 total images. 29 | 30 | ### Latent factor values 31 | 32 | * Color: white 33 | * Shape: square, ellipse, heart 34 | * Scale: 6 values linearly spaced in [0.5, 1] 35 | * Orientation: 40 values in [0, 2 pi] 36 | * Position X: 32 values in [0, 1] 37 | * Position Y: 32 values in [0, 1] 38 | 39 | We varied one latent at a time (starting from Position Y, then Position X, etc), 40 | and sequentially stored the images in fixed order. 41 | Hence the order along the first dimension is fixed and allows you to map back to 42 | the value of the latents corresponding to that image. 43 | 44 | We chose the latents values deliberately to have the smallest step changes 45 | while ensuring that all pixel outputs were different. No noise was added. 46 | 47 | The data is a NPZ NumPy archive with the following fields: 48 | 49 | * `imgs`: (737280 x 64 x 64, uint8) Images in black and white. 50 | * `latents_values`: (737280 x 6, float64) Values of the latent factors. 51 | * `latents_classes`: (737280 x 6, int64) Integer index of the latent factor 52 | values. Useful as classification targets. 53 | * `metadata`: some additional information, including the possible latent 54 | values. 55 | 56 | Alternatively, a HDF5 version is also available, containing the same data, 57 | packed as Groups and Datasets. 58 | 59 | ## Disentanglement metric 60 | 61 | This dataset was created as a unit test of disentanglement properties of 62 | unsupervised models. It can be used to determine how well models recover the 63 | ground truth latents presented above. 64 | 65 | You find our proposed disentanglement metric assessing the disentanglement 66 | quality of a model (along with an example usage of this dataset) in: 67 | 68 | [Higgins, Irina, Loic Matthey, Arka Pal, Christopher Burgess, Xavier Glorot, 69 | Matthew Botvinick, Shakir Mohamed, and Alexander Lerchner. "beta-VAE: Learning 70 | basic visual concepts with a constrained variational framework." In *Proceedings 71 | of the International Conference on Learning Representations (ICLR). 72 | 2017.*](https://openreview.net/forum?id=Sy2fzU9gl) 73 | 74 | ## Disclaimers 75 | 76 | This is not an official Google product. 77 | 78 | The images were generated using the LOVE framework, which is licenced under 79 | zlib/libpng licence: 80 | 81 | ``` 82 | LOVE is Copyright (c) 2006-2016 LOVE Development Team 83 | 84 | This software is provided 'as-is', without any express or implied 85 | warranty. In no event will the authors be held liable for any damages 86 | arising from the use of this software. 87 | 88 | Permission is granted to anyone to use this software for any purpose, 89 | including commercial applications, and to alter it and redistribute it 90 | freely, subject to the following restrictions: 91 | 92 | 1. The origin of this software must not be misrepresented; you must not 93 | claim that you wrote the original software. If you use this software 94 | in a product, an acknowledgment in the product documentation would be 95 | appreciated but is not required. 96 | 97 | 2. Altered source versions must be plainly marked as such, and must not be 98 | misrepresented as being the original software. 99 | 100 | 3. This notice may not be removed or altered from any source 101 | distribution. 102 | ``` 103 | -------------------------------------------------------------------------------- /dsprites.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google-deepmind/dsprites-dataset/fa310c66517cfc1939d77fe17c725154efc97127/dsprites.gif -------------------------------------------------------------------------------- /dsprites_ndarray_co1sh3sc6or40x32y32_64x64.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google-deepmind/dsprites-dataset/fa310c66517cfc1939d77fe17c725154efc97127/dsprites_ndarray_co1sh3sc6or40x32y32_64x64.hdf5 -------------------------------------------------------------------------------- /dsprites_ndarray_co1sh3sc6or40x32y32_64x64.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google-deepmind/dsprites-dataset/fa310c66517cfc1939d77fe17c725154efc97127/dsprites_ndarray_co1sh3sc6or40x32y32_64x64.npz -------------------------------------------------------------------------------- /dsprites_reloading_example.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "colab_type": "text", 7 | "id": "26ScWNvYSgQg" 8 | }, 9 | "source": [ 10 | "Copyright 2017 Google Inc.\n", 11 | "\n", 12 | "Licensed under the Apache License, Version 2.0 (the \"License\");\n", 13 | "you may not use this file except in compliance with the License.\n", 14 | "You may obtain a copy of the License at\n", 15 | "\n", 16 | " http://www.apache.org/licenses/LICENSE-2.0\n", 17 | "\n", 18 | "Unless required by applicable law or agreed to in writing, software\n", 19 | "distributed under the License is distributed on an \"AS IS\" BASIS,\n", 20 | "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", 21 | "See the License for the specific language governing permissions and\n", 22 | "limitations under the License.\n", 23 | "\n", 24 | "\n", 25 | "# dSprites - Disentanglement testing Sprites dataset\n", 26 | "\n", 27 | "## Description\n", 28 | "Procedurally generated 2D shapes dataset. This dataset uses 6 latents, controlling the color, shape, scale, rotation and position of a sprite (color isn't varying here, its value is fixed).\n", 29 | "\n", 30 | "All possible combinations of the latents are present.\n", 31 | "\n", 32 | "The ordering of images in the dataset (i.e. shape[0] in all ndarrays) is fixed and meaningful, see below.\n", 33 | "\n", 34 | "We chose the smallest changes in latent values that generated different pixel outputs at our 64x64 resolution after rasterization.\n", 35 | "\n", 36 | "No noise added, single image sample for a given latent setting.\n", 37 | "\n", 38 | "## Details about the ordering of the dataset\n", 39 | "\n", 40 | "The dataset was generated procedurally, and its order is deterministic.\n", 41 | "For example, the image at index 0 corresponds to the latents (0, 0, 0, 0, 0, 0).\n", 42 | "\n", 43 | "Then the image at index 1 increases the least significant \"bit\" of the latent:\n", 44 | "(0, 0, 0, 0, 0, 1)\n", 45 | "\n", 46 | "And similarly, till we reach index 32, where we get (0, 0, 0, 0, 1, 0). \n", 47 | "\n", 48 | "Hence the dataset is sequentially addressable using variable bases for every \"bit\".\n", 49 | "Using dataset['metadata']['latents_sizes'] makes this conversion trivial, see below." 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 0, 55 | "metadata": { 56 | "cellView": "both", 57 | "colab": { 58 | "autoexec": { 59 | "startup": false, 60 | "wait_interval": 0 61 | } 62 | }, 63 | "colab_type": "code", 64 | "id": "jJ02BsnqSa96" 65 | }, 66 | "outputs": [], 67 | "source": [ 68 | "from __future__ import absolute_import\n", 69 | "from __future__ import division\n", 70 | "from __future__ import print_function\n", 71 | "from matplotlib import pyplot as plt\n", 72 | "import numpy as np\n", 73 | "import seaborn as sns\n", 74 | "\n", 75 | "# Change figure aesthetics\n", 76 | "%matplotlib inline\n", 77 | "sns.set_context('talk', font_scale=1.2, rc={'lines.linewidth': 1.5})\n" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 2, 83 | "metadata": { 84 | "colab": { 85 | "autoexec": { 86 | "startup": false, 87 | "wait_interval": 0 88 | }, 89 | "output_extras": [ 90 | { 91 | "item_id": 2 92 | } 93 | ] 94 | }, 95 | "colab_type": "code", 96 | "executionInfo": { 97 | "elapsed": 10952, 98 | "status": "ok", 99 | "timestamp": 1495021223246, 100 | "user": { 101 | "displayName": "", 102 | "photoUrl": "", 103 | "userId": "" 104 | }, 105 | "user_tz": -60 106 | }, 107 | "id": "uDL3Iw0WFw1L", 108 | "outputId": "1a3ce845-1add-41c3-ee3d-6018d09423bc" 109 | }, 110 | "outputs": [ 111 | { 112 | "name": "stdout", 113 | "output_type": "stream", 114 | "text": [ 115 | "Keys in the dataset: ['metadata', 'imgs', 'latents_classes', 'latents_values']\n", 116 | "Metadata: \n", 117 | " {'description': 'Disentanglement test Sprites dataset.Procedurally generated 2D shapes, from 6 disentangled latent factors.This dataset uses 6 latents, controlling the color, shape, scale, rotation and position of a sprite. All possible variations of the latents are present. Ordering along dimension 1 is fixed and can be mapped back to the exact latent values that generated that image.We made sure that the pixel outputs are different. No noise added.', 'latents_sizes': array([ 1, 3, 6, 40, 32, 32]), 'latents_names': ('color', 'shape', 'scale', 'orientation', 'posX', 'posY'), 'date': 'April 2017', 'version': 1, 'title': 'dSprites dataset', 'latents_possible_values': {'posX': array([ 0. , 0.03225806, 0.06451613, 0.09677419, 0.12903226,\n", 118 | " 0.16129032, 0.19354839, 0.22580645, 0.25806452, 0.29032258,\n", 119 | " 0.32258065, 0.35483871, 0.38709677, 0.41935484, 0.4516129 ,\n", 120 | " 0.48387097, 0.51612903, 0.5483871 , 0.58064516, 0.61290323,\n", 121 | " 0.64516129, 0.67741935, 0.70967742, 0.74193548, 0.77419355,\n", 122 | " 0.80645161, 0.83870968, 0.87096774, 0.90322581, 0.93548387,\n", 123 | " 0.96774194, 1. ]), 'posY': array([ 0. , 0.03225806, 0.06451613, 0.09677419, 0.12903226,\n", 124 | " 0.16129032, 0.19354839, 0.22580645, 0.25806452, 0.29032258,\n", 125 | " 0.32258065, 0.35483871, 0.38709677, 0.41935484, 0.4516129 ,\n", 126 | " 0.48387097, 0.51612903, 0.5483871 , 0.58064516, 0.61290323,\n", 127 | " 0.64516129, 0.67741935, 0.70967742, 0.74193548, 0.77419355,\n", 128 | " 0.80645161, 0.83870968, 0.87096774, 0.90322581, 0.93548387,\n", 129 | " 0.96774194, 1. ]), 'scale': array([ 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]), 'orientation': array([ 0. , 0.16110732, 0.32221463, 0.48332195, 0.64442926,\n", 130 | " 0.80553658, 0.96664389, 1.12775121, 1.28885852, 1.44996584,\n", 131 | " 1.61107316, 1.77218047, 1.93328779, 2.0943951 , 2.25550242,\n", 132 | " 2.41660973, 2.57771705, 2.73882436, 2.89993168, 3.061039 ,\n", 133 | " 3.22214631, 3.38325363, 3.54436094, 3.70546826, 3.86657557,\n", 134 | " 4.02768289, 4.1887902 , 4.34989752, 4.51100484, 4.67211215,\n", 135 | " 4.83321947, 4.99432678, 5.1554341 , 5.31654141, 5.47764873,\n", 136 | " 5.63875604, 5.79986336, 5.96097068, 6.12207799, 6.28318531]), 'shape': array([ 1., 2., 3.]), 'color': array([ 1.])}, 'author': 'lmatthey@google.com'}\n" 137 | ] 138 | } 139 | ], 140 | "source": [ 141 | "# Load dataset\n", 142 | "dataset_zip = np.load('dsprites_ndarray_co1sh3sc6or40x32y32_64x64.npz')\n", 143 | "\n", 144 | "print('Keys in the dataset:', dataset_zip.keys())\n", 145 | "imgs = dataset_zip['imgs']\n", 146 | "latents_values = dataset_zip['latents_values']\n", 147 | "latents_classes = dataset_zip['latents_classes']\n", 148 | "metadata = dataset_zip['metadata'][()]\n", 149 | "\n", 150 | "print('Metadata: \\n', metadata)\n" 151 | ] 152 | }, 153 | { 154 | "cell_type": "code", 155 | "execution_count": 0, 156 | "metadata": { 157 | "colab": { 158 | "autoexec": { 159 | "startup": false, 160 | "wait_interval": 0 161 | } 162 | }, 163 | "colab_type": "code", 164 | "id": "9RWpIJtiHYUL" 165 | }, 166 | "outputs": [], 167 | "source": [ 168 | "# Define number of values per latents and functions to convert to indices\n", 169 | "latents_sizes = metadata['latents_sizes']\n", 170 | "latents_bases = np.concatenate((latents_sizes[::-1].cumprod()[::-1][1:],\n", 171 | " np.array([1,])))\n", 172 | "\n", 173 | "def latent_to_index(latents):\n", 174 | " return np.dot(latents, latents_bases).astype(int)\n", 175 | "\n", 176 | "\n", 177 | "def sample_latent(size=1):\n", 178 | " samples = np.zeros((size, latents_sizes.size))\n", 179 | " for lat_i, lat_size in enumerate(latents_sizes):\n", 180 | " samples[:, lat_i] = np.random.randint(lat_size, size=size)\n", 181 | "\n", 182 | " return samples\n" 183 | ] 184 | }, 185 | { 186 | "cell_type": "code", 187 | "execution_count": 0, 188 | "metadata": { 189 | "colab": { 190 | "autoexec": { 191 | "startup": false, 192 | "wait_interval": 0 193 | } 194 | }, 195 | "colab_type": "code", 196 | "id": "W8LKpGjGKaiN" 197 | }, 198 | "outputs": [], 199 | "source": [ 200 | "# Helper function to show images\n", 201 | "def show_images_grid(imgs_, num_images=25):\n", 202 | " ncols = int(np.ceil(num_images**0.5))\n", 203 | " nrows = int(np.ceil(num_images / ncols))\n", 204 | " _, axes = plt.subplots(ncols, nrows, figsize=(nrows * 3, ncols * 3))\n", 205 | " axes = axes.flatten()\n", 206 | "\n", 207 | " for ax_i, ax in enumerate(axes):\n", 208 | " if ax_i \u003c num_images:\n", 209 | " ax.imshow(imgs_[ax_i], cmap='Greys_r', interpolation='nearest')\n", 210 | " ax.set_xticks([])\n", 211 | " ax.set_yticks([])\n", 212 | " else:\n", 213 | " ax.axis('off')\n", 214 | "\n", 215 | "def show_density(imgs):\n", 216 | " _, ax = plt.subplots()\n", 217 | " ax.imshow(imgs.mean(axis=0), interpolation='nearest', cmap='Greys_r')\n", 218 | " ax.grid('off')\n", 219 | " ax.set_xticks([])\n", 220 | " ax.set_yticks([])" 221 | ] 222 | }, 223 | { 224 | "cell_type": "markdown", 225 | "metadata": { 226 | "colab_type": "text", 227 | "id": "lXSlqKKAJirL" 228 | }, 229 | "source": [ 230 | "## Randomly sampling into the dataset" 231 | ] 232 | }, 233 | { 234 | "cell_type": "code", 235 | "execution_count": 24, 236 | "metadata": { 237 | "colab": { 238 | "autoexec": { 239 | "startup": false, 240 | "wait_interval": 0 241 | }, 242 | "output_extras": [ 243 | { 244 | "item_id": 1 245 | } 246 | ] 247 | }, 248 | "colab_type": "code", 249 | "executionInfo": { 250 | "elapsed": 1282, 251 | "status": "ok", 252 | "timestamp": 1495021397861, 253 | "user": { 254 | "displayName": "", 255 | "photoUrl": "", 256 | "userId": "" 257 | }, 258 | "user_tz": -60 259 | }, 260 | "id": "MFJLYKK5RzbH", 261 | "outputId": "270d35ee-f376-47a1-9f88-1b279f70c2ca" 262 | }, 263 | "outputs": [ 264 | { 265 | "data": { 266 | "image/png": "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\n", 267 | "text/plain": [ 268 | "\u003cmatplotlib.figure.Figure at 0xda7bb10\u003e" 269 | ] 270 | }, 271 | "metadata": { 272 | "tags": [] 273 | }, 274 | "output_type": "display_data" 275 | } 276 | ], 277 | "source": [ 278 | "# Sample latents randomly\n", 279 | "latents_sampled = sample_latent(size=5000)\n", 280 | "\n", 281 | "# Select images\n", 282 | "indices_sampled = latent_to_index(latents_sampled)\n", 283 | "imgs_sampled = imgs[indices_sampled]\n", 284 | "\n", 285 | "# Show images\n", 286 | "show_images_grid(imgs_sampled)" 287 | ] 288 | }, 289 | { 290 | "cell_type": "code", 291 | "execution_count": 25, 292 | "metadata": { 293 | "colab": { 294 | "autoexec": { 295 | "startup": false, 296 | "wait_interval": 0 297 | }, 298 | "output_extras": [ 299 | { 300 | "item_id": 1 301 | } 302 | ] 303 | }, 304 | "colab_type": "code", 305 | "executionInfo": { 306 | "elapsed": 125, 307 | "status": "ok", 308 | "timestamp": 1495021398201, 309 | "user": { 310 | "displayName": "", 311 | "photoUrl": "", 312 | "userId": "" 313 | }, 314 | "user_tz": -60 315 | }, 316 | "id": "IygFe_LtLoUg", 317 | "outputId": "8ce35c72-f502-4f8f-d0c6-71ae645662c4" 318 | }, 319 | "outputs": [ 320 | { 321 | "data": { 322 | "image/png": "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\nsLfAmw4AYxQdAMYoOgCMUXQAGKPoADDm6um1ron0WpXO6dpJkHXHaO80/Expm7RGarK4k/pKdsYp\nd8dVJ9Xfd5N7O2m3U2O3q2uemlJ2m4d2G+hW+9pJte2s310j2fk982+uIABjFB0Axig6AIxRdAAY\no+gAMObq6bVuGq1KnHR7d+2kV1KKK62x06stHVca7ZtSSVV67dSI4on02s49n1ijmzg72QvvpHRc\n6fnZSfrtjCLvrtHtG1j1RTuVWDzpVnqyedMBYIyiA8AYRQeAMYoOAGMUHQDGXD291lWllbr9tpKT\nKZGdXnHdlFNKGVU9qrqTEbuTOKs1kp3ea92U0cnz6KaiqrTUqT5uJ69V2l6dRzeteTLV1u1HV/3O\ndqamdtauPktp1NQX8aHxpgPAGEUHgDGKDgBjFB0Axig6AIxRdAAY8+Ai01UEMcUcu+Ntq/hs2leK\nLXcbIO4cV2pCurNGNz5bXdsUrT3VpHOtfN1PjlpO0r660eTqOzsNSpNTDTGrtb98+dI+rq6J8+g+\nPzvPerdJ8M6I8p1/svG9edMBYIyiA8AYRQeAMYoOAGMUHQDGPLj0WqXboHCnUWY3vZKkpn5r9ZNi\nqRFglZZK++quUSVn0ndS08SdZpzdkdE7jTLT8XYTZ5Xuce2k106tsdNYt9u4tLqG3SahaV876c70\nu02//2qN7nPSfabvK286AIxRdAAYo+gAMEbRAWCMogPAmJtKr3WlxEmVzun2Jkuq0bPdFM6nT58u\nbn/16lV7/ZTU2klL3d3dtdZOqmvbTVid7F/V7Yt28jx2erJ1z+NkWirtKyVIq2v1+fPni9u7fd9O\njbdfay+Fl3R/a9JrABAoOgCMUXQAGKPoADBG0QFgzINLr51Mg3RTYmv10zapl1mVnEnprpRSS2me\nKiWWkj7dCYg7CaBun6qdiZvp3E9NM62+s5P0606L3Dne9OymNXZ6+nXXTvv6+PFj3Fc6rrR95/fR\n7U2Ytp9M+j20lFriTQeAMYoOAGMUHQDGKDoAjFF0ABij6AAw5sFFpqs46snxwUm3SWiKiqYY51pr\nffjw4eL21MCzG6VeK0dSu6OAKymWnfaVrm01PvxUlLs7brySmqbuRL/Tce3EmbtNRdMaVWPN9Lyn\n5y1tT890tX73Wdhp7JuuSTrv6tlNn6V9iUwDQJOiA8AYRQeAMYoOAGMUHQDG3Nv02k5a6lTTzZPN\nFLtpl+qzd+/eXdz+/Pnzi9tfvnwZ10jfSWmpnRHM6bNuynAnvdZNyFVJv5RGS8eV9lU906fGUp98\ndtO+qmc3JS9TGu3t27cXt//xxx9xjffv31/c/ueff17cnn6D1XPVbSq60/Dz5Ijrh8SbDgBjFB0A\nxig6AIxRdAAYo+gAMObeptcmnBy7291ejcpN6aeURkvJoJTmWSun15J0rV68eBG/U53jJTvjqqsE\n0qk1uv3o0vanT/PPLV2rbpJpJ03YPaYq6Zf6oqVn8c2bNxe3V+Oq0/OeknPpeKv+buk73YRldc1v\nPaWWeNMBYIyiA8AYRQeAMYoOAGMUHQDG3Nv0Wrfn1M6+dv6+Oxkxpbuq6YspNZTSOSmJlvpaVVLa\n5u7u7uL26jxSn7Nuf7duQm2t/j3fWeNUqm2tfp+zk2t0p2Sm53Ct/Dvo9mRL/dXWyn3ZUkIu/Q5S\nL8O1+om37uTg6rNb78nmTQeAMYoOAGMUHQDGKDoAjFF0ABij6AAw5uqR6W4Eeic2mOKM3ajoWv1m\nnDtNE1MsMzWMrKKfSbqO6bhev359cXvVmDHd2zT+eScO322Umdaoot8pGp2i390o9Vr5eNNxdWPn\n1RopLt5trFl9p7u9alab4tRpe3pGq4afaV/pfuyMxO4SmQaAJkUHgDGKDgBjFB0Axig6AIy5enpt\norFnN7VTJU5SeiUlZLojptfK6a50Hik5UzUbTCm1V69etf6+GnvdTXel8z45rjrdv+papXNM96N7\n3pXuGOTqd1MlJjt/v5Pu7DbQrH4fp5qHVk1Fu7+pdJ+qxFm6h93/Jj60VJs3HQDGKDoAjFF0ABij\n6AAwRtEBYMzV02tJSmRUCaBT6bWddE6yM1Y4nWO3V1yV7OqmcFIvrCq9lnrFJTvpnG5fvXRtq7RU\nGtWd7KSJun3qql5xSXpO0vaUwqt+H910Z7ru1e8spde626v+bumzbvqx+g0+tNTZKd50ABij6AAw\nRtEBYIyiA8AYRQeAMfc2vZacnBya9rXT6yslelJyJiWD1spJmDS9M6WrqoRTShOl7SmJViXUuhM3\n07527kdKg3XTh9VxddN2O/0Ek52JlN2k387vI6XR0rOY7kc1kbabLNvpvdbtO1ddE/7Nmw4AYxQd\nAMYoOgCMUXQAGKPoADBG0QFgzE1FplMktRsVrUYXd0cOp3hw1WwwrZ8ioWkkdhVnTmOpU+Q1NZ7c\naVza3V7Fy0/FfU82X0zHW8Vq03XsRsJ3zqM7tr1aIz276bnqNulcK8eZ09pv3769uH2ncWlao/vf\nmMfMmw4AYxQdAMYoOgCMUXQAGKPoADDmwaXXKt1GiymdUyXUqmRbR5Vq6TYbTMmgasxy2lc3Wfbi\nxYu4Rndcdffv1zqX4tpJfaVnIaXXdlKR6T7tNA9Nz3s63vQc7qTX0toppVZdq26z2nQNqzXSZ919\nPdaR1BVvOgCMUXQAGKPoADBG0QFgjKIDwJgHl17bSYN0+3CdHAW8c7wpyZSOK/VFq/pXvXv3rrWv\ntL1K+nWPN12rqvdat8/ZTn+3bvoxnUfV6+vks5h0k37dnmzVZynd1U27rZWvY0rbpWtb3Y9T/ehO\n/vfqVpJw3nQAGKPoADBG0QFgjKIDwBhFB4AxT74VkYid/k7XlI63ex47aamUitqZuJnW6K5dncep\n6Z07k0NTmihdqyrJlL7TPaad9Fo3pVb120vf6SbLqvvR/R2kZFm1n27aLp1fmtxZfaebkKvuRzqP\nbkq1SpzdekotnYc3HQDGKDoAjFF0ABij6AAwRtEBYIyiA8CYm4pMJ90o9U6cOUkjmKtGmUk6rp0Y\ncDquk9cq6Z5795qv1T+unfNI8dm0r6rBZNJtMFlFlk/9nqtIb/ea7DQV7TbwTapx1d19df9+rduJ\nRici0wBcnaIDwBhFB4Axig4AYxQdAMY8ivRaspPI6ibIuvup9pW2P7QE2U5yL0mP78m0XVd33Hj1\nWTe9Vul+J12rnaTWzne6++o20Nxpxtk9psdMeg2Aq1N0ABij6AAwRtEBYIyiA8CYR51eS3bO+2Sv\nr1P9z6qUWErbdEdin3TyebuVUcDpPnUTXPfVNe+Tfmnfl/QaAFen6AAwRtEBYIyiA8AYRQeAMdJr\n39nJJNw1+4yd7PuWdM+v+s6pPmNTa3TXPvX3O6rz6CbCJp6fU39Pj/QaAFen6AAwRtEBYIyiA8AY\nRQeAMYoOAGNEpm/YROPSqX0l14zJXjPue801duLlPD4i0wBcnaIDwBhFB4Axig4AYxQdAMZIr/Hd\nXPP5uY8pqoeWdoP/D+k1AK5O0QFgjKIDwBhFB4Axig4AY55e+wC4XRJW/+Z6gDcdAAYpOgCMUXQA\nGKPoADBG0QFgjKIDwBhFB4Axig4AYxQdAMYoOgCMUXQAGKPoADBG0QFgjKIDwBhFB4Axig4AYxQd\nAMYoOgCMUXQAGKPoADBG0QFgjKIDwBhFB4Axig4AY55WH3779m3qOAB4BLzpADBG0QFgjKIDwBhF\nB4Axig4AYxQdAMb8H9bP1DAOnAvsAAAAAElFTkSuQmCC\n", 323 | "text/plain": [ 324 | "\u003cmatplotlib.figure.Figure at 0xda7ba90\u003e" 325 | ] 326 | }, 327 | "metadata": { 328 | "tags": [] 329 | }, 330 | "output_type": "display_data" 331 | } 332 | ], 333 | "source": [ 334 | "# Compute the density of the data to show that no pixel ever goes out of\n", 335 | "# the boundary. Obviously it also means that the main support of the pixels is in the center\n", 336 | "# half. \n", 337 | "# Locations cover a square, which make the aligned X-Y latents more likely for\n", 338 | "# models to discover.\n", 339 | "\n", 340 | "show_density(imgs_sampled)" 341 | ] 342 | }, 343 | { 344 | "cell_type": "markdown", 345 | "metadata": { 346 | "colab_type": "text", 347 | "id": "peJaYLHyLKDu" 348 | }, 349 | "source": [ 350 | "## Conditional sampling of the dataset" 351 | ] 352 | }, 353 | { 354 | "cell_type": "code", 355 | "execution_count": 27, 356 | "metadata": { 357 | "colab": { 358 | "autoexec": { 359 | "startup": false, 360 | "wait_interval": 0 361 | }, 362 | "output_extras": [ 363 | { 364 | "item_id": 1 365 | }, 366 | { 367 | "item_id": 2 368 | } 369 | ] 370 | }, 371 | "colab_type": "code", 372 | "executionInfo": { 373 | "elapsed": 551, 374 | "status": "ok", 375 | "timestamp": 1495021412038, 376 | "user": { 377 | "displayName": "", 378 | "photoUrl": "", 379 | "userId": "" 380 | }, 381 | "user_tz": -60 382 | }, 383 | "id": "6DYLZkFJQjb9", 384 | "outputId": "601edffd-fa13-474b-e61c-0c476f00b52d" 385 | }, 386 | "outputs": [ 387 | { 388 | "data": { 389 | "image/png": "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\nDOSLs4jOAAAAAElFTkSuQmCC\n", 390 | "text/plain": [ 391 | "\u003cmatplotlib.figure.Figure at 0xe13c850\u003e" 392 | ] 393 | }, 394 | "metadata": { 395 | "tags": [] 396 | }, 397 | "output_type": "display_data" 398 | }, 399 | { 400 | "data": { 401 | "image/png": "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\nf3G3dER6AAAAAElFTkSuQmCC\n", 402 | "text/plain": [ 403 | "\u003cmatplotlib.figure.Figure at 0xe13c790\u003e" 404 | ] 405 | }, 406 | "metadata": { 407 | "tags": [] 408 | }, 409 | "output_type": "display_data" 410 | } 411 | ], 412 | "source": [ 413 | "## Fix posX latent to left\n", 414 | "latents_sampled = sample_latent(size=5000)\n", 415 | "latents_sampled[:, -2] = 0\n", 416 | "indices_sampled = latent_to_index(latents_sampled)\n", 417 | "imgs_sampled = imgs[indices_sampled]\n", 418 | "\n", 419 | "# Samples\n", 420 | "show_images_grid(imgs_sampled, 9)\n", 421 | "\n", 422 | "# Show the density too to check\n", 423 | "show_density(imgs_sampled)" 424 | ] 425 | }, 426 | { 427 | "cell_type": "code", 428 | "execution_count": 29, 429 | "metadata": { 430 | "colab": { 431 | "autoexec": { 432 | "startup": false, 433 | "wait_interval": 0 434 | }, 435 | "output_extras": [ 436 | { 437 | "item_id": 1 438 | }, 439 | { 440 | "item_id": 2 441 | } 442 | ] 443 | }, 444 | "colab_type": "code", 445 | "executionInfo": { 446 | "elapsed": 708, 447 | "status": "ok", 448 | "timestamp": 1495021438003, 449 | "user": { 450 | "displayName": "", 451 | "photoUrl": "", 452 | "userId": "" 453 | }, 454 | "user_tz": -60 455 | }, 456 | "id": "l2g-xquoTJaG", 457 | "outputId": "3e3df869-eab7-4428-9749-81440506f0d6" 458 | }, 459 | "outputs": [ 460 | { 461 | "data": { 462 | "image/png": "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\nYII=\n", 463 | "text/plain": [ 464 | "\u003cmatplotlib.figure.Figure at 0x107de190\u003e" 465 | ] 466 | }, 467 | "metadata": { 468 | "tags": [] 469 | }, 470 | "output_type": "display_data" 471 | }, 472 | { 473 | "data": { 474 | "image/png": "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\ndRuE/t1nl5wcx5vivt14cOVkvPzUqPWdMehJeg6rcdxpjTRi+sOHD621qzVOxsu797DbTLX6zkPn\nTQeAMYoOAGMUHQDGKDoAjFF0ABhzs+m1U2menX1ViZPumOCUqKmSZU+ePLm4vTsyeuca7jRa7e4r\n2Tne7qjllLyq7kf3uLoJp7X6Y55TirI6j25D1dQgtGo8m8497Ss969V5pORnt4HmztjtZOf3ke5h\nN0l58nc+wZsOAGMUHQDGKDoAjFF0ABij6AAw5mbTa8lEUqNKrnTTaN101Vr5HFPSZyeJMtGvrZvC\n2TmPbv+znbW7a5xME3ZTajvXsDvGOh1TtX53/HP1G+wmRU8+6+l4q8Qr/82bDgBjFB0Axig6AIxR\ndAAYo+gAMObepdd2pi92p0tWugmkk2mXnX5bSfeanExkdXvIVU6lpSZ6/VXnl56H7vFW6bVukjL9\nfTX19u7u7uL27vHupAm702JP9vpLa0yk2u7bBFJvOgCMUXQAGKPoADBG0QFgjKIDwBhFB4Ax9y4y\nfbIh5U7sNH2WYqSpcWF1HqcaGu40Lu3GS6vYaTc63I0/V/vqHtPOPe8eU9UosxvfPRk17l7D6jxO\n/j67utcwjS5f61wMOf2e/m79SyZGxk/wpgPAGEUHgDGKDgBjFB0Axig6AIy5d+m1yqnmj1XiJCXC\n0r4eP37c+vu1+umuncalycnRvt0moSdHME808Ow2edwZUd41Mc59R/feVo0y02cpVbfTdDN95xbT\nYLd4TBVvOgCMUXQAGKPoADBG0QFgjKIDwJibTa/t9Jbq7iulj6r0WjeN1l1757hS37dqjSQlgHau\n1URKLekmlqrz6Cb3TvYf6yYTT6b2kuqY0mfdMdZVX7L0WXp2P336dHF79Yx0U3U7Pf267ltKLfGm\nA8AYRQeAMYoOAGMUHQDGKDoAjLnZ9NrJHlLdBFk1cbO7drKzRvpOSgzt9GTrXpOd+9RNtVW6KbXu\nxNS18nXs9vqrzi+dRzquk+nObiJrJxWZUp+vX7++uL16dlMaLZ1793ezVv+53unV1k28TSQTJ3jT\nAWCMogPAGEUHgDGKDgBjFB0Axig6AIy52ch0shMJ7cZOd0bldmO1VUPD1LgwNU1Mx7TT0DDFMtP5\n7cScu2vv3PNuNLpa41SD0up+nGoSuhPL7p7fztjtbqS4ulbdZzH9nnYiyCl+vRNhPxV7r87jFpuE\netMBYIyiA8AYRQeAMYoOAGMUHQDG3Lv0WqWbRtlJziTdJojVsaa0TTeJUh1TGnGdEkAnU2rd7VVj\nxnRcE80R0/Xdaf54qnnoyQaTE41kd56rlCA72ZS2+4x2U3vVvtI12fl36RZ50wFgjKIDwBhFB4Ax\nig4AYxQdAMbcbHrtVke2dhM9KYlW9V5LKZxueqVKr51KyJ3s7dQdm1x91k13VWt0U2rp73fOo9sL\nr9K9VjvPyKl9pfHWa+0lxTprV7q//2osfbdf446T/QxP8aYDwBhFB4Axig4AYxQdAMYoOgCMuXp6\nrZvaOdlHaaLP2I6U9En90nYSTqdSgNV+ummik/e8m+6q7nnaV/d4qzThqV5f1bXqpqV2nqvuVM+d\ne9s9rp0EV7d/3snpttdO6P7bvOkAMEbRAWCMogPAGEUHgDGKDgBjFB0Axlw9Mp2cjMl2I5ZVk77u\nWOodKRqdjisd006Mc2dkdNK97jvnsdMktPv3p5qHnoywd5t3Vut3fzeVU1HjqiFuWqO7/WRkeif+\nvPObegi86QAwRtEBYIyiA8AYRQeAMYoOAGNuNr22IyVIummpnVRJN71SpYxSSi0dV0ra7DRmTLpN\nSCvdhqon70dSJZm6KbVTibq1+s/oxPjwKln26dOni9u7x1vd87TGyVHrp5rVVibSa9ccS5140wFg\njKIDwBhFB4Axig4AYxQdAMbcu/TazijplLDaGT3bTdt0ezWtVaeDLknJsiodk47r48ePF7d3R2VX\n30m6571Wv1/bydHF3cTiTu+17nmkZ2Gtfsox7Sulxyrpubq7u2uv0e0h1+3JtlZOkKbtOwnS7nNy\ni0m0Hd50ABij6AAwRtEBYIyiA8AYRQeAMfcuvValQboJq52USLdfUkq7VEmttMabN28ubn/58uXF\n7VUC6MOHDxe3P3369OL2nQRQN2G1k/TrJsu629fq989L928nedldu0qvdVNqKVlWrZGeuZRee//+\n/cXt1e+jmyDdSUUm1blfsvNvSbeP231LtXnTAWCMogPAGEUHgDGKDgBjFB0Axig6AIy5emS623Rz\nJx54atzwWv0Gk91I71o5dtrdniKva/Vj5M+ePbu4PV2PtdZ6+/btxe0pRr4TZ06fpeveHQW+Vr5W\n3e2Vifhsek5SDLjbpHOttd69e9daO513ivSvlWPW3Yj3TnPUpNuEtPrs5L99t8ibDgBjFB0Axig6\nAIxRdAAYo+gAMObq6bWTus04u6m26jvJTrIsfZbWTomhk00sU+qr2wCxWjs1G63uR0rPdVOG1X1N\n556OK629k2RK96Obllyr/yx2m3eulZtrpjVSSq1aI32W1t5JqXaboKZ9Vc9VN3kpvQYATYoOAGMU\nHQDGKDoAjFF0ABhz79JrVYIjfbaTsOrqjtCt0jkvXry4uD31nNrp9ZWk80jHm0aEr5VTXOl4UzIo\npdrWWuvx48cXt3dHFFdJv3Rc6dy7qaTqO6dGfq+VzyNdq5SK3Om9lvrwvXr16uL29KyvlY83be/2\nnFurP569m5zd/c5D4E0HgDGKDgBjFB0Axig6AIxRdAAYc7PptZ0+Q93pfTt9uLpTCHcSKt2eV92U\nWCUlgHYmh6ZEVkp9pX3t9BNL0hpVkin1XuuuUd2Pbo+1bgJwrf7k2dQXrZrqmT57/fp1a3uVXkvn\nmH4faV8pUVet0U0Nnpwcmu75fevJ5k0HgDGKDgBjFB0Axig6AIxRdAAYo+gAMOZmI9NJFQ/sRqa7\no3XXyjHL1KRzZ41TI4qrppdp/SdPnlzcns6vihOn657i16mxZxWf7Y7XTrHTKs6c9pWue9U8NOmO\n165i5Em34WeKUldR4zdv3lzcnhqB7jQVTc9DikynGHe1RtpXN+Z8sqnnfYtGJ950ABij6AAwRtEB\nYIyiA8AYRQeAMTebXjuZ1EhN+naSZd3RvikNttOMs5tSqxozpjHPKVmWGjNWo6RTY890rVKCKx3r\nWv1mnOl+VImzbpowqY41nXs11vySKi2Vnp+0RtpeNVlNz0lKvHUbhFb7Sqm2bqJurf5vbafh707D\n4YfAmw4AYxQdAMYoOgCMUXQAGKPoADDmZtNryckx1t1U21o5OZOSWml7lZZK55iSVyfTaynR0+1l\ntlbu15Z0+6itla9vOq6dNbq91Lprr5XTUmn7Tk+v7r5SirPqhZeeue4o6erZ/fXXXy9uT4m33377\nrXVMa/VHe3fv31rSawDwr1N0ABij6AAwRtEBYIyiA8CYe5deq6SkSOprtZNeS4mXlKhJx5TWXmut\nb7/99uL21OcsnV9Ku63Vn6CZ0m4pPbZWTg2lfe30OOv2XttJ4aXvpHNPf1/d8ySlpVLirErIdRNv\nKUFW9V7r9jNMa1TTSdNnr169ah1TlV7rTg5N93Zn0vFD500HgDGKDgBjFB0Axig6AIxRdAAYo+gA\nMObeRaarCGKKvaY4Y4qXVk360r5SjLQaiZuk9VMDzRRBrqKt3XHZ6e9TXHutfH27TTp31kjSvnai\nxt24dnXN03Od1k77quL+3QaTO3H/9Myl49oZJZ0ae3abjVZj6dM5dpumfqmx6Io3HQDGKDoAjFF0\nABij6AAwRtEBYMyDSq9NpHO6UnqlShmlFM6zZ88ubk+NPatmnN2kWLqGVSIrNSjtSum8tfLxdkdG\nVymjtEZ6ftLxVs9VOq50HifHWKd7m5Jo1Xmkz9JY6vT3KaG2Vj+Nlv6++g3ujJ/mf+NNB4Axig4A\nYxQdAMYoOgCMUXQAGHPv0muVbp+qkym1bnKuShmlhExKE6V0VdUbrNs3LNnpWZbSXek8dpJlXVVC\nrptY6ibq1ur3ATyZUktrpL+vUl/dnmWpx1p1ft3R1zsp1e51r1K1/DdvOgCMUXQAGKPoADBG0QFg\njKIDwJhHn4vYRXe65K3q9uGqEllpXyenYXbTaN3zq/aVpH3tTHLtbt/Rve5VWqo7nTStXV3zbpKy\n2yOvOq5uqm1nsm5KvO30JkwpznRcaV/VtZJS++fStfKmA8AYRQeAMYoOAGMUHQDGKDoAjFF0ABjz\nRUemk53IdDcmWx1TNwK902Cye7w7EdJ0XClWuxNh7za+7I6F3rEzEvtUvPxkpLfbxHatfsPPk01F\nu89odT9Eo/85kWkArk7RAWCMogPAGEUHgDGKDgBjvoj0WrJzfqdSRlUiq9tgciKRdTItdXJfO41I\nL6kasJ463p00YXeNnYaf3X11x3dX++o2At1ZQ/PO65BeA+DqFB0Axig6AIxRdAAYo+gAMOaLTq/t\n6F6TnWvYTaOlW1itfTJ51V1jop/Yzpjwron0Wkpepe07KbxkJ0HWTYrt9Hc7uS/+PdJrAFydogPA\nGEUHgDGKDgBjFB0AxkivXclE37edBNA1e6xN9Irrbl/rXP+zqqfeqYTVznmcvB+nzqPaz06qjnnS\nawBcnaIDwBhFB4Axig4AYxQdAMYoOgCMEZl+AE7ep4nmiCdj2afWnrAzSnri3l6zAatR0g+XyDQA\nV6foADBG0QFgjKIDwBhFB4Ax0muwaSKF1/0N3rfGrFJqD5f0GgBXp+gAMEbRAWCMogPAGEUHgDHS\nawAcJ70GwNUpOgCMUXQAGKPoADBG0QFgjKIDwBhFB4Axig4AYxQdAMYoOgCMUXQAGKPoADBG0QFg\njKIDwBhFB4Axig4AYxQdAMYoOgCMUXQAGKPoADBG0QFgjKIDwBhFB4Axig4AY76uPvz8+fPUcQDw\nBfCmA8AYRQeAMYoOAGMUHQDGKDoAjFF0ABjzf5SQF56OdHY9AAAAAElFTkSuQmCC\n", 475 | "text/plain": [ 476 | "\u003cmatplotlib.figure.Figure at 0x134157d0\u003e" 477 | ] 478 | }, 479 | "metadata": { 480 | "tags": [] 481 | }, 482 | "output_type": "display_data" 483 | } 484 | ], 485 | "source": [ 486 | "## Fix orientation to 0.8 rad\n", 487 | "latents_sampled = sample_latent(size=5000)\n", 488 | "latents_sampled[:, 3] = 5\n", 489 | "indices_sampled = latent_to_index(latents_sampled)\n", 490 | "imgs_sampled = imgs[indices_sampled]\n", 491 | "\n", 492 | "# Samples\n", 493 | "show_images_grid(imgs_sampled, 9)\n", 494 | "\n", 495 | "# Density should not be different than for all orientations\n", 496 | "show_density(imgs_sampled)" 497 | ] 498 | }, 499 | { 500 | "cell_type": "code", 501 | "execution_count": 0, 502 | "metadata": { 503 | "colab": { 504 | "autoexec": { 505 | "startup": false, 506 | "wait_interval": 0 507 | } 508 | }, 509 | "colab_type": "code", 510 | "id": "-FCACtAlqKTA" 511 | }, 512 | "outputs": [], 513 | "source": [ 514 | "" 515 | ] 516 | } 517 | ], 518 | "metadata": { 519 | "colab": { 520 | "default_view": {}, 521 | "last_runtime": { 522 | "build_target": "", 523 | "kind": "local" 524 | }, 525 | "name": "deepmind_2d_shapes_dataset_public.ipynb", 526 | "provenance": [ 527 | { 528 | "file_id": "/piper/depot/google3/experimental/deepmind/concepts/dataset2dshapes/public/deepmind_2d_shapes_dataset.ipynb?workspaceId=lmatthey:lmatthey-2dshapes-dataset:580:citc", 529 | "timestamp": 1493149332589 530 | }, 531 | { 532 | "file_id": "0BxLiVtkN33-wbmVnbVQwcUhjY0U", 533 | "timestamp": 1493149291483 534 | } 535 | ], 536 | "version": "0.3.2", 537 | "views": {} 538 | } 539 | }, 540 | "nbformat": 4, 541 | "nbformat_minor": 0 542 | } 543 | --------------------------------------------------------------------------------