User Tools

Site Tools


cs501r_f2018:lab1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cs501r_f2018:lab1 [2018/09/03 21:07]
wingated
cs501r_f2018:lab1 [2021/06/30 23:42] (current)
Line 1: Line 1:
 ====Objective:​==== ====Objective:​====
  
-Get started with colab, python, ​and pandas.  Begin producing simple visualizations of data and images.+Get started with colab and python.  Begin producing simple visualizations of data and images.
  
 ---- ----
 ====Deliverable:​==== ====Deliverable:​====
  
-For this lab, you will submit an ipython notebook via colab.  This notebook will have two parts:+For this lab, you will submit an ipython notebook via learningsuite.  This notebook will have two parts:
  
 **Part 1:**  Your notebook should generate a random image. ​ We will run this **Part 1:**  Your notebook should generate a random image. ​ We will run this
Line 19: Line 19:
  
 [[http://​playground.tensorflow.org/​|Tensorflow playground]] [[http://​playground.tensorflow.org/​|Tensorflow playground]]
 +
 +[[http://​colab.research.google.com/​|Google colab]]
 +
 +[[https://​colab.research.google.com/​drive/​1TzaPS3jvRadN-URLbQ9nD1ZNoZktfNRy|A colab notebook teaching you how to use colab notebooks]]
 +
 +[[https://​sites.google.com/​site/​artml2018/​tutorials|Various colab tutorials]]
  
 ---- ----
Line 46: Line 52:
 type, such as random lines, and can be created in a loop). ​ We won't type, such as random lines, and can be created in a loop). ​ We won't
 count the number of elements; this is just to encourage you to create count the number of elements; this is just to encourage you to create
-random images with moderate complexity.+random images with moderate complexity ​(ie, you can't just generate randomly colored pixels, as in the example below).
  
 For part 2, you should visit the Tensorflow playground (see link above), and play with different settings. ​ Most of it will be unfamiliar, but don't worry -- you can't break it! For part 2, you should visit the Tensorflow playground (see link above), and play with different settings. ​ Most of it will be unfamiliar, but don't worry -- you can't break it!
Line 53: Line 59:
  
 ---- ----
-====Installing anaconda:==== +====Starter code:====
- +
-http://​docs.continuum.io/​anaconda/​install +
- +
-To generate images, check out PIL. +
- +
-To generate random numbers, check out the [[http://​docs.scipy.org/​doc/​numpy-1.10.0/​reference/​routines.random.html|numpy.random]] module. +
- +
-To create a new notebook, run: +
- +
-''​jupyter-notebook''​ +
- +
-This should start an ipython kernel in the background, set up a +
-webserver, and point your browser to the webserver. ​ In the +
-upper-right corner, you will see a "​new"​ menu; under that menu you +
-should see "​Notebook"​ and "​Python 2"​. ​ This will create a new +
-notebook. +
- +
-**Note:** When you turn in your notebook, you should turn in the ''​.ipynb''​ file.  Do not take a screen shot, or turn in an HTML page.+
  
 Here's some starter code to help you generate an image. ​ The ''​nbimage''​ function will display the image inline in the notebook: Here's some starter code to help you generate an image. ​ The ''​nbimage''​ function will display the image inline in the notebook:
  
 <code python> <code python>
-import ​cairo +import ​IPython.display 
-import numpy+import PIL.Image 
 +import numpy as np
  
 # A simple function to display an image in an ipython notebook # A simple function to display an image in an ipython notebook
 def nbimage( data ): def nbimage( data ):
-    ​from IPython.display ​import ​display, Image +    IPython.display.display(PIL.Image.fromarray(data))
-    from PIL.Image ​import ​fromarray +
-    from StringIO import StringIO+
  
-    s = StringIO() 
-    fromarray( data ).save( s, '​png'​ ) 
-    display( Image( s.getvalue() ) ) 
  
-WIDTH = 512 +# create an image consisting of random colors
-HEIGHT = 288+
  
-# this is a numpy buffer to hold the image data +data = np.random.rand(512,512,3) # a 512x512 image, with 3 color channels ​(R,G,B) 
-data = numpy.zeros( (HEIGHT,WIDTH,4), dtype=numpy.uint8 )+ 
 +# by defaultrand creates floating point numbers between [0,​1]. ​ We need to convert that to 8-bit bytes between [0,255] 
 +data (255*data).astype('​uint8') 
 + 
 +# display it! 
 +nbimage( data )
  
-# this creates a cairo context based on the numpy buffer 
-ims = cairo.ImageSurface.create_for_data( data, cairo.FORMAT_ARGB32,​ WIDTH, HEIGHT ) 
-cr = cairo.Context( ims ) 
  
-# draw a blue line 
-cr.set_source_rgba( 1.0, 0.0, 0.0, 1.0 ) 
-cr.set_line_width( 2.0 ) 
-cr.move_to( 0.0, 0.0 ) 
-cr.line_to( 100.0, 100.0 ) 
-cr.stroke() 
  
-# display the image 
-nbimage( data ) 
 </​code>​ </​code>​
  
Line 125: Line 102:
 plt.tight_layout plt.tight_layout
  
-</​code>​ 
- 
-Also note that to get plots to show up inline, you may have to add the magic incantation **in the first cell**: 
- 
-<code python> 
- 
-%matplotlib inline 
- 
-import matplotlib 
-import numpy as np 
-import matplotlib.pyplot as plt 
- 
-</​code>​ 
- 
-Here is a full setup for cairo in linux. 
-<​code>​ 
-sudo apt-get install libcairo2-dev 
-git clone https://​github.com/​pygobject/​pycairo.git 
-cd pycairo/ 
-python setup.py build 
-python setup.py install 
-</​code>​ 
- 
-Here is a setup for cairo in mac. 
-<​code>​ 
-brew install cairo --use-clang ​ 
-brew install py2cairo 
 </​code>​ </​code>​
  
cs501r_f2018/lab1.1536008857.txt.gz · Last modified: 2021/06/30 23:40 (external edit)