Commit 2a2c8223 authored by tverrbjelke's avatar tverrbjelke

es ist 8 uhr 5

parent 2ee9143f
import numpy as np import numpy as np
class Rectangle:
class Rectangle:
def __init__(self, x, y, width, height):
def __init__(self, x, y, width, height):
self.x=x
self.x=x self.y=y
self.y=y self.width=width
self.width=width self.height=height
self.height=height self.matrix_size=10
self.matrix_size=10 self.matrix=self._init_zeros_matrix()
self.matrix=self._init_zeros_matrix() self.fill()
self.fill()
def _init_zeros_matrix(self):
def _init_zeros_matrix(self): return np.zeros(shape=(self.matrix_size, self.matrix_size), dtype=np.float32)
return np.zeros(shape=(self.matrix_size, self.matrix_size), dtype=np.float32)
def add_noise(self):
def add_noise(self):
new_matrix=np.zeros(shape=(self.matrix_size, self.matrix_size), dtype=np.float32)
new_matrix=np.zeros(shape=(self.matrix_size, self.matrix_size), dtype=np.float32)
for i in range(10):
for i in range(10): for j in range(10):
for j in range(10): new_matrix[i][j]+=self.matrix[i][j]+np.random.poisson(lam=2.0)
new_matrix[i][j]+=self.matrix[i][j]+np.random.poisson(lam=2.0) return new_matrix
return new_matrix
def fill(self):
def fill(self):
for i in range(self.width):
for i in range(self.width): for j in range(self.height):
for j in range(self.height): self.matrix[self.x+i][self.y+j]=10.0
self.matrix[self.x+i][self.y+j]=10.0
def get_matrix(self):
def get_matrix(self): return self.matrix
return self.matrix
rect1=Rectangle(0,0,width=3, height=5) def gen_data():
rect1=Rectangle(0,0,width=3, height=5)
recatangle=Rectangle(0,0,width=3, height=5) rectangles={0:Rectangle(0,0,2,2),
recatangle=Rectangle(0,0,width=3, height=5) 1:Rectangle(3,3,2,2),
2:Rectangle(5,5,2,2),
rectangles={} 3:Rectangle(7,7,2,2),}
rectangles[0]= Rectangle(0,0,2,2) rect_data=[]
rectangles[1]= Rectangle(3,3,2,2) labels=[]
rectangles[2]= Rectangle(5,5,2,2)
rectangles[3]= Rectangle(7,7,2,2) for i in range(0,10):
label=i%4
rect_data=[] rect=np.array(rectangles[label].add_noise())
for i in range(1,10001): rect_reshaped= np.reshape(rect,[1,100])
index=i%4 rect_data.append(rect_reshaped)
rect_data.append((rectangles[index].add_noise(),index)) labels.append(label)
return rect_data, labels
with open('data.txt', 'w'): rect_data, labels=gen_data()
for datapoint in range(len(rect_data)):
\ No newline at end of file
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