In [ ]:
# Import useful packages
%matplotlib inline
import dlt
import numpy as np
import chainer as C
In [ ]:
# (TODO) Implement a simple classifier manually
def simple_classifier(image, debug=True):
average_pixel_value = np.mean(image)
if debug:
print("Average pixel:", average_pixel_value)
# TODO - try to detect "a" or "b" just from average_pixel_value
return "a"
dlt.CustomInput(simple_classifier)
In [ ]:
# Load up & show the data
train = dlt.load_hdf5("/data/uji/train.hdf")
valid = dlt.load_hdf5("/data/uji/valid.hdf")
print(" Training: %s" % train)
print("Validation: %s" % valid)
train.show()
In [ ]:
# Explore the data
print("vocab:", train.vocab)
print()
print("--- first training example: ---")
print("target:", train.y[0])
print("character:", train.vocab[train.y[0]])
print("input:", train.x[0])
In [ ]:
# (TODO) Evaluate your simple classifier
for label, image in zip(train.y, train.x):
character = train.vocab[label]
if character == "a" or character == "b":
guess = simple_classifier(image, debug=False)
if guess == character:
pass # TODO
accuracy = 0 # TODO
print("simple_classifier binary accuracy = {:.1%}".format(accuracy))
In [ ]:
# (TODO) Select data, define & train a model
In [ ]:
# (Optional) Demo your trained classifier
def classify(image):
# TODO - replace with real scores
# Hint - if you need a batch dimension, try: image.reshape(1, -1)
scores = np.random.randn(1, len(train.vocab))
print("TODO - classify image (image.shape %s -> scores.shape %s)" % (image.shape, scores.shape))
return train.vocab[np.argmax(scores)]
assert classify(valid.x[0, :]) in train.vocab, "quick test"
dlt.CustomInput(classify)