Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # coding: utf-8
- # In[3]:
- import numpy as np
- import pickle, gzip
- # In[4]:
- f = gzip.open('mnist.pkl.gz', 'rb')
- train_set, valid_set, test_set = pickle.load(f, encoding='latin1')
- f.close()
- # In[5]:
- def isNumber(x, y):
- if(x == y):
- return 1
- else:
- return 0
- def func(x):
- if(x >= 0):
- return 1.0
- else:
- return 0.0
- # In[9]:
- train_set[1][:10]
- # In[7]:
- def perceptron(train_set, target_set, number):
- image_set = train_set
- target_set = target_set
- target_set = np.vectorize(isNumber)(target_set, number)
- weight = np.zeros([785, ], dtype = float)
- image_set = np.insert(image_set, 0, 1, axis = 1)
- rate = 0.1
- output_func = np.vectorize(func)
- for i in range(len(image_set)):
- y = np.dot(image_set, weight)
- predict = output_func(y)
- weight += rate * image_set[i] * (target_set[i] - predict[i])
- if(i == 100):
- break
- return weight
- # In[17]:
- w0 = perceptron(train_set[0], train_set[1], 0)
- w1 = perceptron(train_set[0], train_set[1], 1)
- w2 = perceptron(train_set[0], train_set[1], 2)
- w3 = perceptron(train_set[0], train_set[1], 3)
- w4 = perceptron(train_set[0], train_set[1], 4)
- w5 = perceptron(train_set[0], train_set[1], 5)
- w6 = perceptron(train_set[0], train_set[1], 6)
- w7 = perceptron(train_set[0], train_set[1], 7)
- w8 = perceptron(train_set[0], train_set[1], 8)
- w9 = perceptron(train_set[0], train_set[1], 9)
- # In[16]:
- t = np.insert(train_set[0], 0, 1, axis = 1)
- func(np.dot(t[0], w0))
- # In[27]:
- def predictNumber(image):
- weight = [w0, w1, w2, w3, w4, w5, w6, w7, w8, w9]
- pred = []
- for w in weight:
- pred.append(func(np.dot(image, w)))
- #print(func(np.dot(image, w)))
- for j, i in enumerate(pred):
- if(i == 1):
- return j
- # In[32]:
- predictNumber(t[8])
- # In[26]:
- train_set[1][:20]
- # In[ ]:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement