updated notes and implemented data generation for 10 digit recognition
parent
16c98b53d5
commit
6c62795d02
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 2",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python2"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython2",
|
||||||
|
"version": "2.7.14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 0
|
||||||
|
}
|
||||||
|
|
@ -54,7 +54,7 @@ eg: stock market temporal data / speech data/ image data
|
||||||
|
|
||||||
Non-Parametric models : k-NN(K-nearest neighbor), Decision Trees, Random Forests (independent of parameters)
|
Non-Parametric models : k-NN(K-nearest neighbor), Decision Trees, Random Forests (independent of parameters)
|
||||||
-> very inaccurate because doesn't know much about the data
|
-> very inaccurate because doesn't know much about the data
|
||||||
Parametric Models: based on fixed set of parameters
|
Parametric Models: based on fixed set of parameters,SVM
|
||||||
-> more accurate coz the knows more about the parameters from the data
|
-> more accurate coz the knows more about the parameters from the data
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,7 @@ language, keyboard layout
|
||||||
Predict the word
|
Predict the word
|
||||||
|
|
||||||
## Model
|
## Model
|
||||||
Structured Output/HMM/ CNN?
|
Structured Output/HMM/CNN?
|
||||||
|
|
||||||
|
|
||||||
# mnist hand-written digit database -> build application for recognizing full phone numbers(10 digit).
|
# mnist hand-written digit database -> build application for recognizing full phone numbers(10 digit).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Activation Function (AKA Transfer function)
|
||||||
|
In a neural network activation function adds non-linearity to it.
|
||||||
|
Types:
|
||||||
|
1. Sigmoid(Logistic) (used mostly for output layer(looks like probability))
|
||||||
|
2. RelU or Rectified Linear Unit (important discovery for NN - most-used for hidden layers)(not suitable for output layer if output is supposed to be probability) and leaky RelU with some slope on negative part
|
||||||
|
3. tanH (Hyperbolic) (-1 - 1) or ArcTan (Tan Inverse -> maps to -Pi/2 - Pi/2)
|
||||||
|
4. Linear(or Identity) layer (used for output layers(best for regression))
|
||||||
|
5. Softmax (classification giving probability) (probability coz outputs add upto 1)
|
||||||
|
6. SquareRoot
|
||||||
|
7. Exponential
|
||||||
|
8. Sine.
|
||||||
|
9. Ramp
|
||||||
|
10. Step (Binary)
|
||||||
|
11. Unit Sum
|
||||||
|
|
||||||
|
if the network computation is something that is multiplicative, use log as activation so that the sum becomes addition.
|
||||||
|
|
||||||
|
Constraint Optimization: optimize in such a way that the output is constrained to some value.
|
||||||
|
|
||||||
|
|
||||||
|
Steps => number of iteration of batches
|
||||||
|
Epoch => number of iterations of going throught the entire dataset
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
%matplotlib inline
|
||||||
|
from tensorflow.examples.tutorials.mnist import input_data
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
mnist = input_data.read_data_sets('./SecondSunday/mnist_data', one_hot=True)
|
||||||
|
label_number = mnist.train.labels.argmax(axis=1)
|
||||||
|
number_imgs = {str(i):mnist.train.images[np.argwhere(label_number == i).squeeze()] for i in range(10)}
|
||||||
|
DATA_COUNT = 100
|
||||||
|
phone_number_digits = np.random.randint(10**9,10**10,size=(DATA_COUNT,10))
|
||||||
|
phone_number_digits = np.random.randint(10,size=(DATA_COUNT,10))
|
||||||
|
phone_number_digits.astype(str)
|
||||||
|
phone_number_strings = phone_number_digits.astype(str)
|
||||||
|
|
||||||
|
def pick_img(num):
|
||||||
|
rand_idx = np.random.randint(number_imgs[num].shape[0])
|
||||||
|
img = number_imgs[num][rand_idx].reshape(28,28)
|
||||||
|
return img
|
||||||
|
|
||||||
|
def create_phone_img(phon_no):
|
||||||
|
return np.hstack(tuple([pick_img(d) for d in phon_no]))
|
||||||
|
|
||||||
|
def create_phone_images(phone_array):
|
||||||
|
phone_number_images = []
|
||||||
|
for phon_no in phone_array:
|
||||||
|
phone_number_images.append(create_phone_img(phon_no))
|
||||||
|
return np.array(phone_number_images).reshape(-1,28*280)
|
||||||
|
|
||||||
|
phone_number_imgs = create_phone_images(phone_number_strings)
|
||||||
|
|
||||||
|
from keras.models import Sequential
|
||||||
|
from keras.layers import Dense, Activation
|
||||||
|
|
||||||
|
model = Sequential([
|
||||||
|
Dense(32, input_shape=(7840,)),
|
||||||
|
Activation('relu'),
|
||||||
|
Dense(10),
|
||||||
|
Activation('linear'),
|
||||||
|
])
|
||||||
|
|
||||||
|
model.compile(optimizer='rmsprop',
|
||||||
|
loss='categorical_crossentropy',
|
||||||
|
metrics=['accuracy'])
|
||||||
|
|
||||||
|
model.fit()
|
||||||
|
# plt.imshow(phone_number_imgs[np.random.randint(phone_number_imgs.shape[0])])
|
||||||
Loading…
Reference in New Issue