Saturday, February 18, 2017

Removing unused Jupyter notebook kernels on Mac

Since I am experimenting with various Python versions 2 vs 3.5 vs 3.6 and packages, e.g. TensorFlow I often end up with conda environments and corresponding Jupyter kernels that I do not use.

Removing Kernels

$ cd ~/Library/Jupyter/kernels 
$ rm -r tensorflow_gpu/

See my post on:

Installing Jupyter kernels to match Conda environments

Developing Alexa skills using flask-ask Python framework

Install Flask-Ask for Alexa

$ pip install flask-ask

Start your favorite Python dev editor

$ jupyter notebook

Write code

To avoid repeating myself in 2 places, here is my code on GitHub:

Test code running locally via HTTPS using ngrok

$ python  * Running on (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger pin code: 275-052-815

- unzip
- put in Applications folder
- click to open
- you should get a message "ngrok was blocked from opening because it is not from an identified developer"
- got to System Preferences -> Security & Privacy
- click "Open Anyway"
- run from Terminal:

$ /Applications/ngrok http 5000

You will need the HTTPS URL form ngrok

ngrok by @inconshreveable                                                                                                                                                (Ctrl+C to quit)                                                                                                                                                                                         Session Status                online                                                                                                                                                     Version                       2.1.18                                                                                                                                                     Region                        United States (us)                                                                                                                                         Web Interface                                                                                                                                             Forwarding           -> localhost:5000                                                                                                                 Forwarding           -> localhost:5000                                                                                                                                                                                                                                                                                                         Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                                                                              0       0       0.00    0.00    0.00    0.00 

Log in to Amazon Apps and Services

Make sure you use the same email and you have set up your Alexa Echo device with.

Alexa Skills Kit
Easily add new skills to Alexa

Thursday, February 16, 2017

Installing TensorFlow 1.0 as conda environment with yml definition file on MacBook Pro with NVidia GPU support

My conda environment yml file on GitHub

Execute yml file, set environment

$ conda env create --file .../conda_environment.yml
$ conda info --envs  
$ source activate py352_tf_gpu

Update jupyter notebook (iPython) kernel with new environment we created

$ python -m ipykernel install --user --name py352_tf_gpu --display-name "conda env py352_tf_gpu"$ jupyter notebook

Test run in jupyter notebook

You can see that jupyter notebook recognize GPU

You can see execution on MacBook Pro (late 2013 with NVidia). Both CPU and GPU are measured.

Wednesday, February 15, 2017

Google TensorFlow 1.0 - Mac with Nvidia GPU installation and testing in jupyter notebook

TensorFlow 1.0 is promising more stable GPU build for Mac, let's test it.

Make sure you have CUDA installed

$ echo $DYLD_LIBRARY_PATH/usr/local/cuda/lib:

$ echo $CUDA_HOME/Developer/NVIDIA/CUDA-8.0/

$ sudo easy_install pip

Set variable with TensorFlow 1.0 binary


Use pip to install TensorFlow

$ sudo pip3 install --upgrade  $TF_BINARY_URL Password:The directory '/Users/ukilucas/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.The directory '/Users/ukilucas/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.Collecting tensorflow-gpu==1.0.0 from  Downloading (89.0MB)    100% |████████████████████████████████| 89.0MB 8.8kB/s Requirement already up-to-date: numpy>=1.11.0 in /Users/ukilucas/anaconda3/envs/tensorflow_gpu/lib/python3.5/site-packages (from tensorflow-gpu==1.0.0)Requirement already up-to-date: wheel>=0.26 in /Users/ukilucas/anaconda3/envs/tensorflow_gpu/lib/python3.5/site-packages (from tensorflow-gpu==1.0.0)Requirement already up-to-date: six>=1.10.0 in /Users/ukilucas/anaconda3/envs/tensorflow_gpu/lib/python3.5/site-packages (from tensorflow-gpu==1.0.0)Requirement already up-to-date: protobuf>=3.1.0 in /Users/ukilucas/anaconda3/envs/tensorflow_gpu/lib/python3.5/site-packages (from tensorflow-gpu==1.0.0)Collecting setuptools (from protobuf>=3.1.0->tensorflow-gpu==1.0.0)  Downloading setuptools-34.2.0-py2.py3-none-any.whl (389kB)    100% |████████████████████████████████| 399kB 2.0MB/s Requirement already up-to-date: appdirs>=1.4.0 in /Users/ukilucas/anaconda3/envs/tensorflow_gpu/lib/python3.5/site-packages (from setuptools->protobuf>=3.1.0->tensorflow-gpu==1.0.0)Requirement already up-to-date: packaging>=16.8 in /Users/ukilucas/anaconda3/envs/tensorflow_gpu/lib/python3.5/site-packages (from setuptools->protobuf>=3.1.0->tensorflow-gpu==1.0.0)Requirement already up-to-date: pyparsing in /Users/ukilucas/anaconda3/envs/tensorflow_gpu/lib/python3.5/site-packages (from packaging>=16.8->setuptools->protobuf>=3.1.0->tensorflow-gpu==1.0.0)Installing collected packages: tensorflow-gpu, setuptools  Found existing installation: tensorflow-gpu 0.12.1    Uninstalling tensorflow-gpu-0.12.1:      Successfully uninstalled tensorflow-gpu-0.12.1  Found existing installation: setuptools 34.1.1    Uninstalling setuptools-34.1.1:      Successfully uninstalled setuptools-34.1.1Successfully installed setuptools-34.2.0 tensorflow-gpu-1.0.0(tensorflow_gpu) uki@UkiPEsMcBookPro 19:44 dev $ 

Start jupyter notebook in the right (same) environment

(tensorflow_gpu) $ jupyter notebook

Try in jupyter notebook

import tensorflow as tf
import time
from tensorflow.python.client import device_lib

def get_available_CPU_GPU():
   devices = device_lib.list_local_devices()
   #return [ for x in devices if x.device_type == 'CPU']
   return [ for x in devices ]

['/cpu:0', '/gpu:0']

start = timeit.timeit()
print ("starting")
with tf.device('/gpu:0'):
    # [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print (
end = timeit.timeit()
print ("elapsed", end - start)
[[ 22. 28.]
[ 49. 64.]]
elapsed -0.003607149003073573

It is a win so far, time will show if it is usable.


Friday, February 3, 2017

Corrupt NVidia driver causes user to be stuck in the login screen

I was playing with dual monitors on my NVidia GTX 1050Ti card and at some point, the UI stopped to allow me to log in. It was going in the loop after each (correct) login.

Steps to fix it:

Press Ctrl+Alt+F1
or F2, F3

Log into in Command Line

Remove NVidia drivers
apt-get purge nvidia-*
Add repository
add-apt-repository ppa:graphics-drivers/ppa 

Refresh packages
sudo apt-get update

Install your NVidia driver  GTX 1050Ti driver 275.10
apt-get install nvidia-375


sudo reboot

This has fixed it for me!

Python: converting PIL.Image to nympy array and back, resizing image

The example, I have used today:
import PIL
import numpy
from PIL import Image

def resize_image(numpy_array_image, new_height):
    # convert nympy array image to PIL.Image
    image = Image.fromarray(numpy.uint8(numpy_array_image))
    old_width = float(image.size[0])
    old_height = float(image.size[1])
    ratio = float( new_height / old_height)
    new_width = int(old_width * ratio)
    image = image.resize((new_width, new_height), PIL.Image.ANTIALIAS)
    # convert PIL.Image into nympy array back again
    return array(image)

Thursday, February 2, 2017

Installing Keras (with TensorFlow and Thano) using Python conda

(tensorflow_cpu) $ anaconda search -t conda keras | grep forge

     conda-forge/keras         |    1.0.7 | conda           | linux-64, win-32, win-64, osx-64

(tensorflow_cpu) $ conda install -c conda-forge keras=1.0.7

Wednesday, February 1, 2017


You can clone (duplicate, copy) environments, this is useful when you are experimenting with packages whereas everything else is working fine:

- Existing tensorflow_gpu
- Newly created tensorflow_cpu

$ conda create --name tensorflow_cpu --clone tensorflow_gpu
List your envirmonets :

$ conda info --envs
# conda environments:
tensorflow * /Users/ukilucas/anaconda3/envs/tensorflow
tensorflow_cpu /Users/ukilucas/anaconda3/envs/tensorflow_cpu
tensorflow_gpu /Users/ukilucas/anaconda3/envs/tensorflow_gpu
root /Users/ukilucas/anaconda3

Change to new one:

$ source activate tensorflow_cpu
Register this enviroment with Jupyter Notebook

$ python -m ipykernel install --user --name tensorflow_cpu --display-name "conda env tensorflow_cpu"