Advertisement
Guest User

Untitled

a guest
Jan 26th, 2020
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. from scipy.io import loadmat
  2. import matplotlib
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5.  
  6. def train(mnist_input,mnist_output):
  7. stala_uczenia = 0.00001
  8.  
  9. for iteration in range(2000):
  10. wagi1 = np.random.randn(64, 28 * 28)
  11. wagi2 = np.random.randn(10, 64)
  12.  
  13. przed1 = np.dot(wagi1, mnist_input)
  14. po1 = sigmoid(przed1)
  15.  
  16. przed2 = np.dot(wagi2, po1)
  17. po2 = np.exp(przed2) / np.sum(np.exp(przed2), axis=0)
  18.  
  19. d_k = (po2 - mnist_output) * po2 * (1 - po2)
  20. d_j = np.dot(wagi2.T, d_k) * po1 * (1 - po1)
  21.  
  22. wagi2 = wagi2 - stala_uczenia * np.dot(d_k, po1.T)
  23. wagi1 = wagi1 - stala_uczenia * np.dot(d_j, mnist_input.T)
  24.  
  25.  
  26. f = open("wagi1.txt", "w")
  27. for i in range(64):
  28. for j in range(784):
  29. f.write(str(wagi1[i][j]) + " ")
  30. f.write("\n")
  31.  
  32. f = open("wagi2.txt", "w")
  33. for i in range(10):
  34. for j in range(64):
  35. f.write(str(wagi2[i][j]) + " ")
  36. f.write("\n")
  37.  
  38. def sigmoid(x):
  39. return 1 / (1 + np.exp(-x))
  40.  
  41.  
  42.  
  43. mnist = loadmat("./mnist-original.mat")
  44. mnist_input = mnist["data"].T / 255
  45. mnist_output = mnist["label"][0]
  46.  
  47. temp = list()
  48. for i in range(70000):
  49. letter = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  50. letter[np.math.floor(mnist_output[i])] = 1
  51. temp.append(letter)
  52. mnist_output = np.array(temp).T
  53.  
  54. mnist_input_train = mnist_input[:60000].T
  55. mnist_input_test = mnist_input[60000:].T
  56.  
  57. mnist_output_train = mnist_output[:, :60000]
  58. mnist_output_test = mnist_output[:, 60000:]
  59.  
  60. index = np.random.permutation(60000)
  61.  
  62. mnist_input_train = mnist_input_train[:, index]
  63. mnist_output_train = mnist_output_train[:, index]
  64.  
  65. # train(mnist_input_train,mnist_output_train)
  66.  
  67. with open('wagi1.txt') as output_f:
  68. wagi1 = np.asarray([[float(digit) for digit in line.split()] for line in output_f])
  69. with open('wagi2.txt') as output_f:
  70. wagi2 = np.asarray([[float(digit) for digit in line.split()] for line in output_f])
  71.  
  72. wyjsciowe = sigmoid(np.dot(mnist_input_test.T, wagi1.T))
  73. wyjsciowe2 = sigmoid(np.dot(wagi2, wyjsciowe.T))
  74. i = 0
  75. while(i<10):
  76. value = np.random.randint(0, 10000)
  77. print("Rozpoznana liczba to",np.argmax(wyjsciowe2.T[value]))
  78. plt.imshow(mnist_input_test[:, value].reshape(28, 28), cmap=matplotlib.cm.binary)
  79. plt.axis("off")
  80. plt.show()
  81. i +=1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement