In [1]:
from simple_softmax import run_simple_softmax_from_scratch
from make_polygon_pngs import BASE_IMAGES_DIR

In [8]:
image_width = 59 # about 59x59 is max can do
image_height = 59
num_train_images = 5000
num_test_images = 1000
num_training_steps = 1000
training_batch_size = 50
allow_rotations = True
save_images_to_dir = None #BASE_IMAGES_DIR

In [9]:
# Run a simple_softmax using the variables above
accuracy = run_simple_softmax_from_scratch(image_width, image_height, num_train_images, num_test_images, 
                                           num_training_steps, training_batch_size, 
                                           allow_rotations, save_images_to_dir)


Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpipv85o15/coll_59_59_1457168996
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpipv85o15/coll_59_59_1457168996/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpipv85o15/coll_59_59_1457168996/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 3481)
Shape of training label data: (5000, 10)
Original image width: 59
Original image height: 59
Accuracy: 0.998
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpipv85o15/coll_59_59_1457168996

Results of a few runs of different sizes (1000 training images):

  • 1.0 accuracy for size 10-38, and 42, 0.0 for the rest
  • 1.0 for 10-36, 38-40, 42
  • 1.0 for 10-39, 41-42, and 0.99 for 45, rest 0s
Not allowing rotations (should be easier):
  • 1.0 for 10-45 and 48, so better than with allowing rotations. Still 0.0 on 46, 47, 49
  • 1.0 for 10-42, 45-46, and 49
  • 1.0 for 10-41, 45-47
Bumping to 5000 training images and it got perfect on all 50 first run (5000 train, 1000 test, 1000 steps, 50 batch size, no rotations)

In [18]:
# Run a simple softmax for a bunch of increasing image square sizes
mass_allow_rotations = True

accuracy_for_image_size = {}
for image_size in range(10, 50):
    accuracy = run_simple_softmax_from_scratch(image_size, image_size, num_train_images, num_test_images, 
                                           num_training_steps, training_batch_size, 
                                           allow_rotations=mass_allow_rotations, save_images_to_dir=None)
    accuracy_for_image_size[image_size] = accuracy
    
for image_size in sorted(accuracy_for_image_size.keys()):
    print(image_size, accuracy_for_image_size[image_size])


Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpeunut2n0/coll_10_10_1457167753
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpeunut2n0/coll_10_10_1457167753/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpeunut2n0/coll_10_10_1457167753/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 100)
Shape of training label data: (5000, 10)
Original image width: 10
Original image height: 10
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpeunut2n0/coll_10_10_1457167753
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp4ahybi0a/coll_11_11_1457167768
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp4ahybi0a/coll_11_11_1457167768/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp4ahybi0a/coll_11_11_1457167768/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 121)
Shape of training label data: (5000, 10)
Original image width: 11
Original image height: 11
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp4ahybi0a/coll_11_11_1457167768
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpucklfan7/coll_12_12_1457167783
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpucklfan7/coll_12_12_1457167783/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpucklfan7/coll_12_12_1457167783/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 144)
Shape of training label data: (5000, 10)
Original image width: 12
Original image height: 12
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpucklfan7/coll_12_12_1457167783
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp90i38j8d/coll_13_13_1457167798
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp90i38j8d/coll_13_13_1457167798/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp90i38j8d/coll_13_13_1457167798/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 169)
Shape of training label data: (5000, 10)
Original image width: 13
Original image height: 13
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp90i38j8d/coll_13_13_1457167798
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp10d5bj3s/coll_14_14_1457167814
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp10d5bj3s/coll_14_14_1457167814/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp10d5bj3s/coll_14_14_1457167814/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 196)
Shape of training label data: (5000, 10)
Original image width: 14
Original image height: 14
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp10d5bj3s/coll_14_14_1457167814
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpuj02mobm/coll_15_15_1457167830
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpuj02mobm/coll_15_15_1457167830/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpuj02mobm/coll_15_15_1457167830/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 225)
Shape of training label data: (5000, 10)
Original image width: 15
Original image height: 15
Accuracy: 0.998
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpuj02mobm/coll_15_15_1457167830
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp26m2vj21/coll_16_16_1457167846
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp26m2vj21/coll_16_16_1457167846/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp26m2vj21/coll_16_16_1457167846/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 256)
Shape of training label data: (5000, 10)
Original image width: 16
Original image height: 16
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp26m2vj21/coll_16_16_1457167846
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpkrg5isb3/coll_17_17_1457167863
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpkrg5isb3/coll_17_17_1457167863/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpkrg5isb3/coll_17_17_1457167863/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 289)
Shape of training label data: (5000, 10)
Original image width: 17
Original image height: 17
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpkrg5isb3/coll_17_17_1457167863
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp4cd14enx/coll_18_18_1457167884
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp4cd14enx/coll_18_18_1457167884/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp4cd14enx/coll_18_18_1457167884/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 324)
Shape of training label data: (5000, 10)
Original image width: 18
Original image height: 18
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp4cd14enx/coll_18_18_1457167884
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpbgwfl5mk/coll_19_19_1457167916
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpbgwfl5mk/coll_19_19_1457167916/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpbgwfl5mk/coll_19_19_1457167916/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 361)
Shape of training label data: (5000, 10)
Original image width: 19
Original image height: 19
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpbgwfl5mk/coll_19_19_1457167916
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpg0oyjfwx/coll_20_20_1457167953
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpg0oyjfwx/coll_20_20_1457167953/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpg0oyjfwx/coll_20_20_1457167953/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 400)
Shape of training label data: (5000, 10)
Original image width: 20
Original image height: 20
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpg0oyjfwx/coll_20_20_1457167953
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp_k55ef96/coll_21_21_1457167992
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp_k55ef96/coll_21_21_1457167992/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp_k55ef96/coll_21_21_1457167992/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 441)
Shape of training label data: (5000, 10)
Original image width: 21
Original image height: 21
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp_k55ef96/coll_21_21_1457167992
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpnxtrw8r7/coll_22_22_1457168023
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpnxtrw8r7/coll_22_22_1457168023/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpnxtrw8r7/coll_22_22_1457168023/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 484)
Shape of training label data: (5000, 10)
Original image width: 22
Original image height: 22
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpnxtrw8r7/coll_22_22_1457168023
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpnk8b82bq/coll_23_23_1457168046
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpnk8b82bq/coll_23_23_1457168046/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpnk8b82bq/coll_23_23_1457168046/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 529)
Shape of training label data: (5000, 10)
Original image width: 23
Original image height: 23
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpnk8b82bq/coll_23_23_1457168046
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp7j63mboo/coll_24_24_1457168073
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp7j63mboo/coll_24_24_1457168073/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp7j63mboo/coll_24_24_1457168073/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 576)
Shape of training label data: (5000, 10)
Original image width: 24
Original image height: 24
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp7j63mboo/coll_24_24_1457168073
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmplcy29mkr/coll_25_25_1457168097
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmplcy29mkr/coll_25_25_1457168097/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmplcy29mkr/coll_25_25_1457168097/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 625)
Shape of training label data: (5000, 10)
Original image width: 25
Original image height: 25
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmplcy29mkr/coll_25_25_1457168097
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpfoc35dmw/coll_26_26_1457168124
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpfoc35dmw/coll_26_26_1457168124/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpfoc35dmw/coll_26_26_1457168124/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 676)
Shape of training label data: (5000, 10)
Original image width: 26
Original image height: 26
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpfoc35dmw/coll_26_26_1457168124
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp8z_v96r6/coll_27_27_1457168163
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp8z_v96r6/coll_27_27_1457168163/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp8z_v96r6/coll_27_27_1457168163/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 729)
Shape of training label data: (5000, 10)
Original image width: 27
Original image height: 27
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp8z_v96r6/coll_27_27_1457168163
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp6tcykgzt/coll_28_28_1457168201
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp6tcykgzt/coll_28_28_1457168201/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp6tcykgzt/coll_28_28_1457168201/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 784)
Shape of training label data: (5000, 10)
Original image width: 28
Original image height: 28
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmp6tcykgzt/coll_28_28_1457168201
Making 5000 training images...
Making 1000 testing images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpb3wj9x_k/coll_29_29_1457168228
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpb3wj9x_k/coll_29_29_1457168228/train/...
Extracting 1000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpb3wj9x_k/coll_29_29_1457168228/test/...
num train examples: 5000
num test examples: 1000
Shape of training image data: (5000, 841)
Shape of training label data: (5000, 10)
Original image width: 29
Original image height: 29
Accuracy: 1.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpb3wj9x_k/coll_29_29_1457168228
Making 5000 training images...
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/Users/dansilberman/.virtualenvs/polygoggles/lib/python3.5/site-packages/PIL/ImageFile.py in _save(im, fp, tile, bufsize)
    459     try:
--> 460         fh = fp.fileno()
    461         fp.flush()

AttributeError: '_idat' object has no attribute 'fileno'

During handling of the above exception, another exception occurred:

KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-18-88a0c69f5266> in <module>()
      6     accuracy = run_simple_softmax_from_scratch(image_size, image_size, num_train_images, num_test_images, 
      7                                            num_training_steps, training_batch_size,
----> 8                                            allow_rotations=mass_allow_rotations, save_images_to_dir=None)
      9     accuracy_for_image_size[image_size] = accuracy
     10 

/Users/dansilberman/polygoggles/simple_softmax.py in run_simple_softmax_from_scratch(image_width, image_height, num_train_images, num_test_images, num_training_steps, training_batch_size, allow_rotations, save_images_to_dir)
     34                                                                num_test_images,
     35                                                                root_dir=tmpdir,
---> 36                                                                allow_rotation=allow_rotations)
     37             accuracy = run_simple_softmax_on_collection(collection_dir, num_training_steps,
     38                                                         training_batch_size)

/Users/dansilberman/polygoggles/make_polygon_pngs.py in make_collection(image_width, image_height, num_train_images, num_test_images, root_dir, allow_rotation)
    155     print("Making %s training images..." % num_train_images)
    156     train_names = make_many_random_polygons(num_train_images, train_dir, image_width, image_height,
--> 157                                             allow_rotation)
    158     print("Making %s testing images..." % num_test_images)
    159     test_names = make_many_random_polygons(num_test_images, test_dir, image_width, image_height,

/Users/dansilberman/polygoggles/make_polygon_pngs.py in make_many_random_polygons(num_to_make, directory, image_width, image_height, allow_rotation)
     47                                      rotate_degrees=rotate_degrees,
     48                                      image_width=image_width,
---> 49                                      image_height=image_height)
     50 
     51 def draw_polygon(num_edges, to_filename, edge_length=30, rotate_degrees=0,

/Users/dansilberman/polygoggles/make_polygon_pngs.py in draw_polygon(num_edges, to_filename, edge_length, rotate_degrees, image_width, image_height, show)
     87     drawer = ImageDraw.Draw(image)
     88     drawer.polygon(vertices, fill=128, outline=128)
---> 89     image.save(to_filename, "PNG")
     90     if show:
     91         image.show()

/Users/dansilberman/.virtualenvs/polygoggles/lib/python3.5/site-packages/PIL/Image.py in save(self, fp, format, **params)
   1673 
   1674         try:
-> 1675             save_handler(self, fp, filename)
   1676         finally:
   1677             # do what we can to clean up

/Users/dansilberman/.virtualenvs/polygoggles/lib/python3.5/site-packages/PIL/PngImagePlugin.py in _save(im, fp, filename, chunk, check)
    759 
    760     ImageFile._save(im, _idat(fp, chunk),
--> 761                     [("zip", (0, 0)+im.size, 0, rawmode)])
    762 
    763     chunk(fp, b"IEND", b"")

/Users/dansilberman/.virtualenvs/polygoggles/lib/python3.5/site-packages/PIL/ImageFile.py in _save(im, fp, tile, bufsize)
    469             while True:
    470                 l, s, d = e.encode(bufsize)
--> 471                 fp.write(d)
    472                 if s:
    473                     break

/Users/dansilberman/.virtualenvs/polygoggles/lib/python3.5/site-packages/PIL/PngImagePlugin.py in write(self, data)
    632 
    633     def write(self, data):
--> 634         self.chunk(self.fp, b"IDAT", data)
    635 
    636 

/Users/dansilberman/.virtualenvs/polygoggles/lib/python3.5/site-packages/PIL/PngImagePlugin.py in putchunk(fp, cid, *data)
    619 
    620     fp.write(o32(len(data)) + cid)
--> 621     fp.write(data)
    622     hi, lo = Image.core.crc32(data, Image.core.crc32(cid))
    623     fp.write(o16(hi) + o16(lo))

KeyboardInterrupt: 

In [17]:
for image_size in sorted(accuracy_for_image_size.keys()):
    print(image_size, accuracy_for_image_size[image_size])


10 1.0
11 1.0
12 1.0
13 1.0
14 1.0
15 1.0
16 1.0
17 1.0
18 1.0
19 1.0
20 1.0
21 1.0
22 1.0
23 1.0
24 1.0
25 1.0
26 1.0
27 1.0
28 1.0
29 1.0
30 1.0
31 1.0
32 1.0
33 1.0
34 1.0
35 1.0
36 1.0
37 1.0
38 1.0
39 1.0
40 1.0
41 1.0
42 1.0
43 1.0
44 1.0
45 1.0
46 1.0
47 1.0
48 1.0
49 1.0

In [7]:
# Try 49x49 images, but with more samples
accuracy = run_simple_softmax_from_scratch(49, 49, 20000, num_test_images, 
                                           num_training_steps, training_batch_size, 
                                           allow_rotations, save_images_to_dir=None)
print(accuracy)


Making 20000 training images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpggl01yfv/coll_49_49_1457158032
Extracting 20000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpggl01yfv/coll_49_49_1457158032/train/...
Extracting 100 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpggl01yfv/coll_49_49_1457158032/test/...
num train examples: 20000
num test examples: 100
Shape of training image data: (20000, 2401)
Shape of training label data: (20000, 10)
Original image width: 49
Original image height: 49
Accuracy: 0.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpggl01yfv/coll_49_49_1457158032
0.0

In [9]:
# Try with a lot of test images.  Do we get some right just by chance, or are we just always wrong?
accuracy = run_simple_softmax_from_scratch(45, 45, 2000, 5000, 
                                           num_training_steps, training_batch_size, 
                                           allow_rotations, save_images_to_dir=None)
print(accuracy)


Making 2000 training images...
Wrote collection to: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpd5th4xus/coll_45_45_1457158661
Extracting 2000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpd5th4xus/coll_45_45_1457158661/train/...
Extracting 5000 images and labels from /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpd5th4xus/coll_45_45_1457158661/test/...
num train examples: 2000
num test examples: 5000
Shape of training image data: (2000, 2025)
Shape of training label data: (2000, 10)
Original image width: 45
Original image height: 45
Accuracy: 0.0
Created then deleted: /var/folders/4s/41l_lwb54jg2453k93ng9ykm0000gn/T/tmpd5th4xus/coll_45_45_1457158661
0.0

In [11]:
# Try with small, non-square images
accuracies = [] # store for easier printing
for trial in range(10):
    accuracies.append(run_simple_softmax_from_scratch(20, 10, num_train_images, num_test_images, 
                                           num_training_steps, training_batch_size, 
                                           allow_rotations=False, save_images_to_dir=BASE_IMAGES_DIR))
print("Trial accuracies:", accuracies)


Making 1000 training images...
Making 100 testing images...
Wrote collection to: /Users/dansilberman/polygoggles/images/coll_20_10_1457160240
Extracting 1000 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160240/train/...
Extracting 100 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160240/test/...
num train examples: 1000
num test examples: 100
Shape of training image data: (1000, 200)
Shape of training label data: (1000, 10)
Original image width: 10
Original image height: 20
Accuracy: 1.0
Created directory: /Users/dansilberman/polygoggles/images/coll_20_10_1457160240
Making 1000 training images...
Making 100 testing images...
Wrote collection to: /Users/dansilberman/polygoggles/images/coll_20_10_1457160246
Extracting 1000 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160246/train/...
Extracting 100 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160246/test/...
num train examples: 1000
num test examples: 100
Shape of training image data: (1000, 200)
Shape of training label data: (1000, 10)
Original image width: 10
Original image height: 20
Accuracy: 1.0
Created directory: /Users/dansilberman/polygoggles/images/coll_20_10_1457160246
Making 1000 training images...
Making 100 testing images...
Wrote collection to: /Users/dansilberman/polygoggles/images/coll_20_10_1457160254
Extracting 1000 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160254/train/...
Extracting 100 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160254/test/...
num train examples: 1000
num test examples: 100
Shape of training image data: (1000, 200)
Shape of training label data: (1000, 10)
Original image width: 10
Original image height: 20
Accuracy: 1.0
Created directory: /Users/dansilberman/polygoggles/images/coll_20_10_1457160254
Making 1000 training images...
Making 100 testing images...
Wrote collection to: /Users/dansilberman/polygoggles/images/coll_20_10_1457160261
Extracting 1000 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160261/train/...
Extracting 100 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160261/test/...
num train examples: 1000
num test examples: 100
Shape of training image data: (1000, 200)
Shape of training label data: (1000, 10)
Original image width: 10
Original image height: 20
Accuracy: 1.0
Created directory: /Users/dansilberman/polygoggles/images/coll_20_10_1457160261
Making 1000 training images...
Making 100 testing images...
Wrote collection to: /Users/dansilberman/polygoggles/images/coll_20_10_1457160268
Extracting 1000 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160268/train/...
Extracting 100 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160268/test/...
num train examples: 1000
num test examples: 100
Shape of training image data: (1000, 200)
Shape of training label data: (1000, 10)
Original image width: 10
Original image height: 20
Accuracy: 1.0
Created directory: /Users/dansilberman/polygoggles/images/coll_20_10_1457160268
Making 1000 training images...
Making 100 testing images...
Wrote collection to: /Users/dansilberman/polygoggles/images/coll_20_10_1457160277
Extracting 1000 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160277/train/...
Extracting 100 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160277/test/...
num train examples: 1000
num test examples: 100
Shape of training image data: (1000, 200)
Shape of training label data: (1000, 10)
Original image width: 10
Original image height: 20
Accuracy: 1.0
Created directory: /Users/dansilberman/polygoggles/images/coll_20_10_1457160277
Making 1000 training images...
Making 100 testing images...
Wrote collection to: /Users/dansilberman/polygoggles/images/coll_20_10_1457160283
Extracting 1000 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160283/train/...
Extracting 100 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160283/test/...
num train examples: 1000
num test examples: 100
Shape of training image data: (1000, 200)
Shape of training label data: (1000, 10)
Original image width: 10
Original image height: 20
Accuracy: 1.0
Created directory: /Users/dansilberman/polygoggles/images/coll_20_10_1457160283
Making 1000 training images...
Making 100 testing images...
Wrote collection to: /Users/dansilberman/polygoggles/images/coll_20_10_1457160292
Extracting 1000 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160292/train/...
Extracting 100 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160292/test/...
num train examples: 1000
num test examples: 100
Shape of training image data: (1000, 200)
Shape of training label data: (1000, 10)
Original image width: 10
Original image height: 20
Accuracy: 1.0
Created directory: /Users/dansilberman/polygoggles/images/coll_20_10_1457160292
Making 1000 training images...
Making 100 testing images...
Wrote collection to: /Users/dansilberman/polygoggles/images/coll_20_10_1457160299
Extracting 1000 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160299/train/...
Extracting 100 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160299/test/...
num train examples: 1000
num test examples: 100
Shape of training image data: (1000, 200)
Shape of training label data: (1000, 10)
Original image width: 10
Original image height: 20
Accuracy: 1.0
Created directory: /Users/dansilberman/polygoggles/images/coll_20_10_1457160299
Making 1000 training images...
Making 100 testing images...
Wrote collection to: /Users/dansilberman/polygoggles/images/coll_20_10_1457160312
Extracting 1000 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160312/train/...
Extracting 100 images and labels from /Users/dansilberman/polygoggles/images/coll_20_10_1457160312/test/...
num train examples: 1000
num test examples: 100
Shape of training image data: (1000, 200)
Shape of training label data: (1000, 10)
Original image width: 10
Original image height: 20
Accuracy: 1.0
Created directory: /Users/dansilberman/polygoggles/images/coll_20_10_1457160312
Trial accuracies: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

In [ ]: