Commit 124b5c26 authored by Hannes Hinrichs's avatar Hannes Hinrichs
parents d168ac8f 2a2c8223
import numpy as np
class Rectangle:
def __init__(self, x, y, width, height):
self.x=x
self.y=y
self.width=width
self.height=height
self.matrix_size=10
self.matrix=self._init_zeros_matrix()
self.fill()
def _init_zeros_matrix(self):
return np.zeros(shape=(self.matrix_size, self.matrix_size), dtype=np.float32)
def add_noise(self):
new_matrix=np.zeros(shape=(self.matrix_size, self.matrix_size), dtype=np.float32)
for i in range(10):
for j in range(10):
new_matrix[i][j]+=self.matrix[i][j]+np.random.poisson(lam=2.0)
return new_matrix
def fill(self):
for i in range(self.width):
for j in range(self.height):
self.matrix[self.x+i][self.y+j]=10.0
def get_matrix(self):
return self.matrix
rect1=Rectangle(0,0,width=3, height=5)
rect1=Rectangle(0,0,width=3, height=5)
recatangle=Rectangle(0,0,width=3, height=5)
recatangle=Rectangle(0,0,width=3, height=5)
rectangles={}
rectangles[0]= Rectangle(0,0,2,2)
rectangles[1]= Rectangle(3,3,2,2)
rectangles[2]= Rectangle(5,5,2,2)
rectangles[3]= Rectangle(7,7,2,2)
rect_data=[]
for i in range(1,10001):
index=i%4
rect_data.append((rectangles[index].add_noise(),index))
with open('data.txt', 'w'):
for datapoint in range(len(rect_data)):
\ No newline at end of file
import numpy as np
class Rectangle:
def __init__(self, x, y, width, height):
self.x=x
self.y=y
self.width=width
self.height=height
self.matrix_size=10
self.matrix=self._init_zeros_matrix()
self.fill()
def _init_zeros_matrix(self):
return np.zeros(shape=(self.matrix_size, self.matrix_size), dtype=np.float32)
def add_noise(self):
new_matrix=np.zeros(shape=(self.matrix_size, self.matrix_size), dtype=np.float32)
for i in range(10):
for j in range(10):
new_matrix[i][j]+=self.matrix[i][j]+np.random.poisson(lam=2.0)
return new_matrix
def fill(self):
for i in range(self.width):
for j in range(self.height):
self.matrix[self.x+i][self.y+j]=10.0
def get_matrix(self):
return self.matrix
def gen_data():
rectangles={0:Rectangle(0,0,2,2),
1:Rectangle(3,3,2,2),
2:Rectangle(5,5,2,2),
3:Rectangle(7,7,2,2),}
rect_data=[]
labels=[]
for i in range(0,10):
label=i%4
rect=np.array(rectangles[label].add_noise())
rect_reshaped= np.reshape(rect,[1,100])
rect_data.append(rect_reshaped)
labels.append(label)
return rect_data, labels
rect_data, labels=gen_data()
import numpy as np
from data_gen import gen_data
class Model:
n_input = 100 # number is
n_output=4
n_h1=50
def __init__(self, nodes=[n_input,n_h1, n_output]):
self.nodes=nodes
self.num_layer=len(self.nodes)
self.weights=[]
for i in range(0,self.num_layer-1):
temp_weights=np.random.random((self.nodes[i], self.nodes[i+1]))
self.weights.append(temp_weights)
def activation(self, x, derivative=False):
'''Activation function (sigmoid by default)
@param x: input data
@param derivative: boolean if we need a derivative of the sigmoid'''
if not derivative:
return 1/(1+np.exp(-x))
else:
return self.activation(x, False)*(1-self.activation(x, False))
def forward_step(self, x):
z_array=[] # dot product solution, before activation
a_array=[]
a_array.append(x) # the inner states
outputs=[]
#Forward propagation
for i in range(0, self.num_layer-1):
z=np.dot(self.weights[i].T,a_array[i])
z_array.append(z)
a=self.activation(z_array[i], False)
a_array.append(a)
outputs.append(a_array[-1])
return outputs
def train_all(self, X, Y):
'''
@param x: all 10000 reshaped matrices
@param y: all 10000 labels
'''
for i in np.arange(0,len(X)):
x=np.reshape(X[i], [100,1])
y=Y[i]
self.train_one(x)
def train_one(self, x):
out=self.forward_step(x)
print(out)
sd
X, Y=gen_data()
model=Model()
model.train_all(X,Y)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment