{"id":135,"date":"2016-04-23T09:21:56","date_gmt":"2016-04-23T09:21:56","guid":{"rendered":"http:\/\/deberker.com\/archy\/?p=135"},"modified":"2021-11-06T16:08:46","modified_gmt":"2021-11-06T16:08:46","slug":"setting-up-tensorflow","status":"publish","type":"post","link":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/","title":{"rendered":"Setting up Tensorflow for Mac OS X"},"content":{"rendered":"<hr \/>\n<p><a href=\"http:\/\/www.asimovinstitute.org\/a-quick-guide-to-installing-tensorflow-on-mac-os\/\">Alternative method from the Asimov institute.<\/a> This worked fine for me using an Anaconda install of Python on Mac OS X, except I had to remove the &#8216;&#8211;update&#8217; flag when doing the installation with pip. Their version involves direct installation on OS X rather than installation on a virtual Linux machine via Docker, which is what I document below.<\/p>\n<hr \/>\n<p><em>If you&#8217;re struggling to save your notebooks and retrieve them again, please see the <a href=\"#update\"> update <\/a> at the end of this post.<\/em><\/p>\n<p>Google recently released a suite of Python tools\u00a0for the <em>technique du jour<\/em>,<a href=\"http:\/\/www.techworld.com\/big-data\/why-does-google-need-deep-neural-network-deep-learning-3623340\/\"> deep learning<\/a>, called Tensorflow.\u00a0This was supplemented \u00a0by a <a href=\"http:\/\/playground.tensorflow.org\/#activation=tanh&amp;batchSize=10&amp;dataset=circle&amp;regDataset=reg-plane&amp;learningRate=0.03&amp;regularizationRate=0&amp;noise=0&amp;networkShape=4,2&amp;seed=0.93127&amp;showTestData=false&amp;discretize=false&amp;percTrainData=50&amp;x=true&amp;y=true&amp;xTimesY=false&amp;xSquared=false&amp;ySquared=false&amp;cosX=false&amp;sinX=false&amp;cosY=false&amp;sinY=false&amp;collectStats=false&amp;problem=classification\">fantastic demo<\/a> &#8211; which you can muck around with in your browser right now [screenshot above] &#8211; which inspired \u00a0<a href=\"http:\/\/www.zebk.com\/pubs.html\">Zeb Kurth-Nelson\u00a0<\/a>\u00a0and I to spend an evening setting up Tensorflow to work on my Mac. What follows is a brief account of our trials, tribulations, and solutions, in the hope that it is useful to anybody with a similar goal.<\/p>\n<p><strong>Some background<\/strong><\/p>\n<ul>\n<li>Tensorflow is a set of packages for Python. The process of setting up Tensorflow comprises of setting up an environment (see below for why this is an &#8216;environment&#8217;) which allows you to run Python and use these packages.<\/li>\n<li>Tensorflow is made to run in Linux. Using in Mac is not a huge issue, since Mac OS X is built upon Unix, which also provides the foundation of Linux.\n<ul>\n<li>In order to emulate Linux,\u00a0you have to use an application like <a href=\"https:\/\/docs.docker.com\/mac\/\">Docker<\/a>\u00a0(relevant: <a href=\"http:\/\/kaggle docker blog\">useful summary <\/a>of why Docker is invaluable for data scientists and those pursuing open science, from Kaggle).<\/li>\n<li>Docker provides a virtual Linux machine, on your machine, for you to run Tensorflow in<\/li>\n<\/ul>\n<\/li>\n<li>We started off following a\u00a0rather charming tutorial titled <a href=\"https:\/\/www.google.co.uk\/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;cad=rja&amp;uact=8&amp;ved=0ahUKEwimrMypr6TMAhWBOhoKHS8nA6IQFggfMAA&amp;url=https%3A%2F%2Fpetewarden.com%2F2016%2F02%2F28%2Ftensorflow-for-poets%2F&amp;usg=AFQjCNEoUTY1BX7VwfkU8oGvg9U-0jAZww&amp;sig2=lIvZXNmP7ILjDeRebKbTQQ\">Tensorflow for Poets<\/a>, which appealed to our artistic sensibilities. However, this soon led us into a place of\u00a0slithy toves, gyre and gimbling in the wabe.\u00a0The mimsy borogoves caused us all sort of trouble &#8211; namely, problems with pulling the relevant Git files from TF&#8217;s Github account.<\/li>\n<li>What follows is a hacked together pipeline chiefly inspired by<a href=\"https:\/\/www.tensorflow.org\/versions\/r0.8\/get_started\/os_setup.html#test-the-tensorflow-installation\"> TF&#8217;s official setup page<\/a>\u00a0and sprinkled with wisdom from <a href=\"http:\/\/stackoverflow.com\/questions\/33636925\/how-do-i-start-tensorflow-docker-jupyter-notebook\">Stack Overflow.<\/a><\/li>\n<\/ul>\n<p><strong>Ok, how do I get Tensorflow working on my Mac?<\/strong><\/p>\n<p>(my Mac being an 2014 Air, running 10.11.4)<\/p>\n<ul>\n<li>Go to Docker and install an instance according to their <a href=\"https:\/\/docs.docker.com\/mac\/step_one\/\">Getting Started <\/a>page<\/li>\n<li>Open the Docker QuickStart Terminal &#8211; easiest way to do this is using Spotlight, hitting Cmd+Spacebar, typing &#8216;Docker Q&#8217; and hitting enter:<a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/docker.png\" rel=\"attachment wp-att-136\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-136\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/docker.png?resize=580%2C369\" alt=\"docker\" width=\"580\" height=\"369\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/docker.png?resize=580%2C369&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/docker.png?resize=624%2C397&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/docker.png?w=689&amp;ssl=1 689w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/li>\n<li>This opens up an instance of Terminal (Mac OS X&#8217;s command line console), but running inside your virtual machine! Pretty neat eh? By way of confirmation, you should see a delightful ASCII whale:<a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/docker2.png\" rel=\"attachment wp-att-137\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-137\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/docker2.png?resize=572%2C392\" alt=\"docker2\" width=\"572\" height=\"392\" \/><\/a><\/li>\n<li>To check your installation is ticketyboo,\u00a0type<\/li>\n<\/ul>\n<pre>docker run hello-world<\/pre>\n<p style=\"padding-left: 30px;\">This should execute a little helper program which confirms that everything is working well. If it doesn&#8217;t work, you probably have to check out the <a href=\"https:\/\/docs.docker.com\/faqs\/troubleshoot\/\">Docker FAQ<\/a>&#8216;s.<\/p>\n<ul>\n<li>Next, we&#8217;re going to install Tensorflow from the web. Type<\/li>\n<\/ul>\n<pre>docker run -it -p 8888:8888\u00a0<a class=\"\" dir=\"ltr\" href=\"http:\/\/l.facebook.com\/l.php?u=http%3A%2F%2Fb.gcr.io%2Ftensorflow%2Ftensorflow&amp;h=JAQE4KsVJ\" target=\"_blank\" rel=\"nofollow noopener\">b.gcr.io\/tensorflow\/tensorflow<\/a><\/pre>\n<p>This is going to launch plenty of humming and whirring, as various packages get downloaded. Once they&#8217;ve finished, you are (unexpectedly) booted into a Jupyter notebook, with an interface that looks like this:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter.png\" rel=\"attachment wp-att-138\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-138\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter.png?resize=571%2C394\" alt=\"jupyter\" width=\"571\" height=\"394\" \/><\/a><\/p>\n<p>What the hell is going on?<\/p>\n<p>Jupyter is a Python notebook interface (the name of which you will have trouble persuading Mac \u00a0OS X not to autocorrect). It allows you to run Python code from a web browser, with a nice interface that allows you to mingle runnable code with notes and outputs from that code:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2.png\" rel=\"attachment wp-att-139\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-139\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2.png?resize=580%2C394\" alt=\"jupyter2\" width=\"580\" height=\"394\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2.png?resize=580%2C394&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2.png?resize=768%2C522&amp;ssl=1 768w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2.png?resize=940%2C639&amp;ssl=1 940w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2.png?resize=624%2C424&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2.png?w=1282&amp;ssl=1 1282w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p><strong>BUT you won&#8217;t actually see this nice webpage yet, because we have a problem:<\/strong><\/p>\n<p>Jupyter works by Python routing information to your web browser. However, your Python is running on your virtual machine (which is a Linux machine, in Docker), and your web browser is on your actual machine (running Mac OS X). We thus need to do a bit of jiggling to allow your\u00a0<strong>virtual machine to communicate with your physical machine&#8217;s web browser.\u00a0<\/strong><\/p>\n<ul>\n<li>The solution lies in Docker&#8217;s backend, an application called VirtualBox. Again, use Spotlight to hit Cmd + Spacebar, start typing &#8216;VirtualBox&#8217;, and hit Enter<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/virtualbox.png\" rel=\"attachment wp-att-140\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-140\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/virtualbox.png?resize=580%2C367\" alt=\"virtualbox\" width=\"580\" height=\"367\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/virtualbox.png?resize=580%2C367&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/virtualbox.png?resize=624%2C395&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/virtualbox.png?w=697&amp;ssl=1 697w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<ul>\n<li>In VirtualBox you get a little summary of the different virtual machines you have installed via Docker. You will have one, called &#8216;Default&#8217;. Right click on this and select Settings.<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbSettings.png\" rel=\"attachment wp-att-143\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-143\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbSettings.png?resize=580%2C479\" alt=\"vbSettings\" width=\"580\" height=\"479\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbSettings.png?resize=580%2C479&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbSettings.png?resize=768%2C634&amp;ssl=1 768w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbSettings.png?resize=624%2C515&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbSettings.png?w=770&amp;ssl=1 770w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<ul>\n<li>Now select Network on the resulting Settings pane. At the bottom is a button marked &#8216;Port Forwarding&#8217;. Hit this.<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbPortFor-1.png\" rel=\"attachment wp-att-144\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-144\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbPortFor-1.png?resize=580%2C485\" alt=\"vbPortFor\" width=\"580\" height=\"485\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbPortFor-1.png?resize=580%2C485&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbPortFor-1.png?resize=624%2C522&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vbPortFor-1.png?w=761&amp;ssl=1 761w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<ul>\n<li style=\"padding-left: 30px;\">This is the tab where we allow our virtual machine to connect to the outside world. Click the little green &#8216;Add a rule&#8217; button, highlighted in the picture below, and then copy the details I&#8217;ve written in for the entry marked jupyter.\n<ul>\n<li style=\"padding-left: 30px;\">We&#8217;re telling the computer to allow connections from the virtual machines port 8888 (the guest port) to my actual machines 8888 (host port)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-141\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vb8888.png?resize=580%2C453\" alt=\"vb8888\" width=\"580\" height=\"453\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vb8888.png?resize=580%2C453&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vb8888.png?resize=624%2C487&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/vb8888.png?w=708&amp;ssl=1 708w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<ul>\n<li>Hardly believing it might be this simple, go to your browser, and enter<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\">localhost:8888<\/p>\n<p style=\"padding-left: 30px;\">This sends your browser to port 8888 on your computer. And, lo and behold:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupy3.png\" rel=\"attachment wp-att-145\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-145\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupy3.png?resize=580%2C288\" alt=\"jupy3\" width=\"580\" height=\"288\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupy3.png?resize=580%2C288&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupy3.png?resize=768%2C381&amp;ssl=1 768w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupy3.png?resize=940%2C466&amp;ssl=1 940w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupy3.png?resize=624%2C310&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupy3.png?w=1260&amp;ssl=1 1260w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\">This is the interface for your Jupyter notebooks! Select one of them to get started (probably the one marked 1, hello_tensorflow), and you&#8217;ll see a real, live, Python notebook running Tensorflow:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2-1.png\" rel=\"attachment wp-att-146\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-146\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2-1.png?resize=580%2C394\" alt=\"jupyter2\" width=\"580\" height=\"394\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2-1.png?resize=580%2C394&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2-1.png?resize=768%2C522&amp;ssl=1 768w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2-1.png?resize=940%2C639&amp;ssl=1 940w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2-1.png?resize=624%2C424&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jupyter2-1.png?w=1282&amp;ssl=1 1282w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\">As far as we&#8217;ve been able to figure out, this is a working instance. If you&#8217;re not familiar with Jupyter, you might want to check out their <a href=\"https:\/\/jupyter-notebook-beginner-guide.readthedocs.org\/en\/latest\/\">Get Started guide<\/a>.<\/p>\n<p style=\"padding-left: 30px;\">Helpful note from<a href=\"https:\/\/twitter.com\/synapticlee\"> Julie Lee:<\/a> If you\u00a0<strong>don&#8217;t\u00a0<\/strong>get the above notebook interface, it might be because your Jupyter notebooks aren&#8217;t being routed via port 8888. Try exiting your current Tensorflow instantiation (hit Ctrl-C twice) and running with the command<\/p>\n<p style=\"padding-left: 30px;\">docker run -it -p 8888:8888\u00a0<a class=\"\" dir=\"ltr\" href=\"http:\/\/l.facebook.com\/l.php?u=http%3A%2F%2Fb.gcr.io%2Ftensorflow%2Ftensorflow&amp;h=JAQE4KsVJ\" target=\"_blank\" rel=\"nofollow noopener\">b.gcr.io\/tensorflow\/tensorflow<\/a><\/p>\n<p style=\"padding-left: 30px;\">Which should force TF to use port 8888 (thanks Julie!).<\/p>\n<p><strong>UPDATE 26\/5\/16<\/strong>:<\/p>\n<p>The method posted below works, but it&#8217;s a bit clunky. It turns out that you can use the Jupyter upload functionality (top right hand corner of the Jupyter notebook interface) to get files into your TF installation, and then just download notebooks for sharing\u00a0 (within a notebook, go to File &#8211;&gt; Download As). Much easier!<\/p>\n<p>The bit about starting TF in a named container, and then reattaching that one rather than starting a new one for each session still holds though. So the command<\/p>\n<p style=\"padding-left: 30px;\">docker run -it -d -p 8888:8888 &#8211;name NAMEOFCONTAINER \u00a0b.gcr.io\/tensorflow\/tensorflow<\/p>\n<p>Ought to do the job for the first setup, and then:<\/p>\n<p style=\"padding-left: 30px;\">docker start NAMEOFCONTAINER<\/p>\n<p style=\"padding-left: 30px;\">docker attach NAMEOFCONTAINER<\/p>\n<p>To re-access the container on\u00a0subsequent\u00a0sessions.<\/p>\n<p><a name=\"update\"><\/a><strong>UPDATE 24\/5\/16<\/strong>:<\/p>\n<p>One problem we&#8217;ve found with the above instantiation:\u00a0<strong>every time you start Tensorflow, you create an instance of Docker from scratch<\/strong>. This means that you lose any changes you made, for instance to the tutorial scripts. The reason for this is complicated, and basically relates to how Docker works, of which I have an imperfect understanding: but it involves these things called\u00a0<b>containers.\u00a0<\/b>The steps outlined above will\u00a0<strong>create a new container every time you run it- not ideal.<\/strong>\u00a0Luckily, Zeb has found a workaround:<\/p>\n<ol>\n<li>Create a local folder where you&#8217;d like to store files connected to Tensorflow<\/li>\n<li>Run this command with NAMEOFCONTAINER and PATH_OF_YOUR_FOLDER replaced by a name of your choice, and a path to the\u00a0folder you created in step 1 :<\/li>\n<\/ol>\n<p style=\"padding-left: 30px;\">docker run -it -d -p 8888:8888 &#8211;name NAMEOFCONTAINER\u00a0 -v PATH_OF_YOUR_FOLDER:\/localfiles b.gcr.io\/tensorflow\/tensorflow<\/p>\n<p>So for me, it was :<\/p>\n<p style=\"padding-left: 30px;\">docker run -it -d -p 8888:8888 &#8211;name archyTF2\u00a0 -v \/Users\/archy\/tensorflow:\/localfiles b.gcr.io\/tensorflow\/tensorflow<\/p>\n<p>3. This will do 3 things:<\/p>\n<p style=\"padding-left: 30px;\">a) It starts your instance of Tensorflow running in a named container. The next time\u00a0we want to run TF, we&#8217;re just going to relaunch this container.<\/p>\n<p style=\"padding-left: 30px;\">b) It links a folder on your hard drive (the one indicated by PATH_OF_YOUR_FOLDER) to a folder in the Docker installation&#8230;<\/p>\n<p style=\"padding-left: 30px;\">c) &#8230; in this case called\u00a0<strong>local files.\u00a0<\/strong>I think it also creates this folder (but I can&#8217;t quite remember &#8211; you might have to make it yourself using mkdir).<\/p>\n<p>Now: if you head to localhost:8888, you see the iPython notebook again:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jup.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-229\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jup.png?resize=625%2C238\" alt=\"jup\" width=\"625\" height=\"238\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jup.png?resize=940%2C358&amp;ssl=1 940w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jup.png?resize=580%2C221&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jup.png?resize=768%2C292&amp;ssl=1 768w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jup.png?resize=624%2C238&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/jup.png?w=1250&amp;ssl=1 1250w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p>Now we&#8217;re going to create a new document, but it won&#8217;t be a notebook, it&#8217;ll be a terminal:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/newterminal.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-235\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/newterminal.png?resize=625%2C233\" alt=\"newterminal\" width=\"625\" height=\"233\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/newterminal.png?resize=940%2C351&amp;ssl=1 940w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/newterminal.png?resize=580%2C216&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/newterminal.png?resize=768%2C286&amp;ssl=1 768w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/newterminal.png?resize=624%2C233&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/newterminal.png?w=1263&amp;ssl=1 1263w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a>Once inside, we can use a\u00a0unix command (<strong>pwd<\/strong>) to figure out where precisely we are. It turns out we are in a folder called notebooks.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-233\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal2.png?resize=625%2C106\" alt=\"terminal2\" width=\"625\" height=\"106\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal2.png?resize=940%2C159&amp;ssl=1 940w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal2.png?resize=580%2C98&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal2.png?resize=768%2C130&amp;ssl=1 768w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal2.png?resize=624%2C105&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal2.png?w=1255&amp;ssl=1 1255w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>Use<strong> cd ..<\/strong> to get back into the root folder, and ls to display the contents.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-232\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal3.png?resize=625%2C199\" alt=\"terminal3\" width=\"625\" height=\"199\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal3.png?resize=940%2C300&amp;ssl=1 940w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal3.png?resize=580%2C185&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal3.png?resize=768%2C245&amp;ssl=1 768w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal3.png?resize=624%2C199&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal3.png?w=1261&amp;ssl=1 1261w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/>Hopefully there&#8217;ll be a folder called locafiles. If everything has gone to plan, this folder will\u00a0<strong>mirror the contents of\u00a0the folder that you indicated with PATH_OF_YOUR_FOLDER<\/strong> above. You can see that in my case this has worked, and a folder I&#8217;ve created called test file_isithere?.txt is indeed present.<\/p>\n<p>Now create a new file, using the command\u00a0<strong>touch<\/strong> followed by the name of a file (here called madeinsidetensorflow.txt).<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-231\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal4.png?resize=625%2C170\" alt=\"terminal4\" width=\"625\" height=\"170\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal4.png?resize=940%2C255&amp;ssl=1 940w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal4.png?resize=580%2C157&amp;ssl=1 580w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal4.png?resize=768%2C208&amp;ssl=1 768w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal4.png?resize=624%2C169&amp;ssl=1 624w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/terminal4.png?w=1241&amp;ssl=1 1241w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>Hopefully, and happily in this case, it should now be present in the local folder you&#8217;ve setup as the path:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/confirmation.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-230\" src=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/confirmation.png?resize=605%2C414\" alt=\"confirmation\" width=\"605\" height=\"414\" srcset=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/confirmation.png?w=605&amp;ssl=1 605w, https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/confirmation.png?resize=580%2C397&amp;ssl=1 580w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/a><\/p>\n<p>So now we can save stuff that we do in tensor flow to local storage (i.e. into your normal file system). Note that the next time we start TF, we don&#8217;t run the whole command again- instead we do<\/p>\n<p style=\"padding-left: 30px;\">docker start NAMEOFCONTAINER<\/p>\n<p style=\"padding-left: 30px;\">docker attach\u00a0NAMEOFCONTAINER<\/p>\n<p>And bob&#8217;s your uncle, we&#8217;ve rebooted the container we had last time, along with its nifty local file storage solution.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Alternative method from the Asimov institute. This worked fine for me using an Anaconda install of Python on Mac OS X, except I had to remove the &#8216;&#8211;update&#8217; flag when doing the installation with pip. Their version involves direct installation on OS X rather than installation on a virtual Linux machine via Docker, which is [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":148,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"hide_page_title":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[6],"tags":[],"class_list":["post-135","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-neural-networks"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Setting up Tensorflow for Mac OS X - Archy de Berker<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Setting up Tensorflow for Mac OS X - Archy de Berker\" \/>\n<meta property=\"og:description\" content=\"Alternative method from the Asimov institute. This worked fine for me using an Anaconda install of Python on Mac OS X, except I had to remove the &#8216;&#8211;update&#8217; flag when doing the installation with pip. Their version involves direct installation on OS X rather than installation on a virtual Linux machine via Docker, which is [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/\" \/>\n<meta property=\"og:site_name\" content=\"Archy de Berker\" \/>\n<meta property=\"article:published_time\" content=\"2016-04-23T09:21:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-06T16:08:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1248\" \/>\n\t<meta property=\"og:image:height\" content=\"677\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"archy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@archydeb\" \/>\n<meta name=\"twitter:site\" content=\"@archydeb\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"archy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/\"},\"author\":{\"name\":\"archy\",\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d\"},\"headline\":\"Setting up Tensorflow for Mac OS X\",\"datePublished\":\"2016-04-23T09:21:56+00:00\",\"dateModified\":\"2021-11-06T16:08:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/\"},\"wordCount\":1571,\"publisher\":{\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d\"},\"image\":{\"@id\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1\",\"articleSection\":[\"Neural networks\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/\",\"url\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/\",\"name\":\"Setting up Tensorflow for Mac OS X - Archy de Berker\",\"isPartOf\":{\"@id\":\"https:\/\/deberker.com\/archy\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1\",\"datePublished\":\"2016-04-23T09:21:56+00:00\",\"dateModified\":\"2021-11-06T16:08:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1\",\"width\":1248,\"height\":677},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/deberker.com\/archy\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Setting up Tensorflow for Mac OS X\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/deberker.com\/archy\/#website\",\"url\":\"https:\/\/deberker.com\/archy\/\",\"name\":\"Archy de Berker\",\"description\":\"Building things with data\",\"publisher\":{\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/deberker.com\/archy\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d\",\"name\":\"archy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2021\/09\/freelance-logo.png?fit=359%2C311&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2021\/09\/freelance-logo.png?fit=359%2C311&ssl=1\",\"width\":359,\"height\":311,\"caption\":\"archy\"},\"logo\":{\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/archydeb\"],\"url\":\"https:\/\/deberker.com\/archy\/author\/archy\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Setting up Tensorflow for Mac OS X - Archy de Berker","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/","og_locale":"en_US","og_type":"article","og_title":"Setting up Tensorflow for Mac OS X - Archy de Berker","og_description":"Alternative method from the Asimov institute. This worked fine for me using an Anaconda install of Python on Mac OS X, except I had to remove the &#8216;&#8211;update&#8217; flag when doing the installation with pip. Their version involves direct installation on OS X rather than installation on a virtual Linux machine via Docker, which is [&hellip;]","og_url":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/","og_site_name":"Archy de Berker","article_published_time":"2016-04-23T09:21:56+00:00","article_modified_time":"2021-11-06T16:08:46+00:00","og_image":[{"width":1248,"height":677,"url":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1","type":"image\/png"}],"author":"archy","twitter_card":"summary_large_image","twitter_creator":"@archydeb","twitter_site":"@archydeb","twitter_misc":{"Written by":"archy","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#article","isPartOf":{"@id":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/"},"author":{"name":"archy","@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d"},"headline":"Setting up Tensorflow for Mac OS X","datePublished":"2016-04-23T09:21:56+00:00","dateModified":"2021-11-06T16:08:46+00:00","mainEntityOfPage":{"@id":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/"},"wordCount":1571,"publisher":{"@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d"},"image":{"@id":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1","articleSection":["Neural networks"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/","url":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/","name":"Setting up Tensorflow for Mac OS X - Archy de Berker","isPartOf":{"@id":"https:\/\/deberker.com\/archy\/#website"},"primaryImageOfPage":{"@id":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#primaryimage"},"image":{"@id":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1","datePublished":"2016-04-23T09:21:56+00:00","dateModified":"2021-11-06T16:08:46+00:00","breadcrumb":{"@id":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/deberker.com\/archy\/setting-up-tensorflow\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#primaryimage","url":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1","contentUrl":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1","width":1248,"height":677},{"@type":"BreadcrumbList","@id":"https:\/\/deberker.com\/archy\/setting-up-tensorflow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/deberker.com\/archy\/"},{"@type":"ListItem","position":2,"name":"Setting up Tensorflow for Mac OS X"}]},{"@type":"WebSite","@id":"https:\/\/deberker.com\/archy\/#website","url":"https:\/\/deberker.com\/archy\/","name":"Archy de Berker","description":"Building things with data","publisher":{"@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/deberker.com\/archy\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d","name":"archy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2021\/09\/freelance-logo.png?fit=359%2C311&ssl=1","contentUrl":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2021\/09\/freelance-logo.png?fit=359%2C311&ssl=1","width":359,"height":311,"caption":"archy"},"logo":{"@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/x.com\/archydeb"],"url":"https:\/\/deberker.com\/archy\/author\/archy\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2016\/04\/tensorflorPlay.png?fit=1248%2C677&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4cGwe-2b","jetpack-related-posts":[],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/posts\/135","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/comments?post=135"}],"version-history":[{"count":13,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/posts\/135\/revisions"}],"predecessor-version":[{"id":1172,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/posts\/135\/revisions\/1172"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/media\/148"}],"wp:attachment":[{"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/media?parent=135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/categories?post=135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/tags?post=135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}