Disclaimer:-I am a noob.(So don't use this if you are learning something).
Getting MNIST data (found this code in https://github.com/tinygrad/tinygrad).
import numpy as np import gzip import requests def fetch(url): response = requests.get(url) return response.content def parse(file): return np.frombuffer(gzip.decompress(file), dtype=np.uint8).copy() # Thank to https://github.com/tinygrad/tinygrad mnist example BASE_URL = "https://storage.googleapis.com/cvdf-datasets/mnist/" X_train = parse(fetch(f"{BASE_URL}train-images-idx3-ubyte.gz"))[0x10:].reshape((-1, 28*28)).astype(np.float64) Y_train = parse(fetch(f"{BASE_URL}train-labels-idx1-ubyte.gz"))[8:].astype(np.int8) X_test = parse(fetch(f"{BASE_URL}t10k-images-idx3-ubyte.gz"))[0x10:].reshape((-1, 28*28)).astype(np.float64) Y_test = parse(fetch(f"{BASE_URL}t10k-labels-idx1-ubyte.gz"))[8:].astype(np.int8) # Print the shapes of the loaded data print("Shape of X_train:", X_train.shape) print("Shape of Y_train:", Y_train.shape) print("Shape of X_test:", X_test.shape) print("Shape of Y_test:", Y_test.shape)
Implementing NN. getting help from help from https://developer.ibm.com/articles/l-neural/
class Neuron: def __init__(self): # Weight is an vector. self.W = np.random.uniform(-1.,1.,size=(784,)).astype(np.float64) def forward(self,X): self.wX = X.dot(self.W) return self.wX def sigmoid(self): if self.wX > 0: z = np.exp(-self.wX) return 1/(1+z) else: z = np.exp(self.wX) return z/(1+z) def sigmoid2(self): return np.exp(self.wX) / (1 + np.exp(self.wX)) def tanH(self): z = np.exp(2*self.wX) return (z-1)/(z+1) # neuron = Neuron() # print(neuron.forward(train_data[4])) # print(neuron.sigmoid())
I am stuck at my activation function bcz dot product of Input and weights is to large.
class NLayer: neurons = [] def __init__(self,number_of_neurons): for n in range(0,number_of_neurons): self.neurons.append(Neuron()) def forward(self,X): for n in self.neurons: n.forward(X) print(n.tanH()) layer_1 = NLayer(784) layer_1.forward(train_data[0])
class NNetwork: neuronsLayers = [] def __init__(self): pass def train(self): # Train and update weights. pass def test(self): # Don't update weights. check weights. pass def predict(self): # Run Model. pass
I am still stuck at the error when executing the activation function code. OverFollow due to number being too large.
Top comments (0)