Skip to content

Commit f3e16a1

Browse files
committed
drop out continue
2 parents 6b0bd12 + cce863f commit f3e16a1

File tree

8 files changed

+126
-31
lines changed

8 files changed

+126
-31
lines changed

1.JPG

-7.07 MB
Binary file not shown.

hidden_layer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ def setWeightsUpdated(self , updatedWeights):
3535
for i in range(0 , len(self.neurons)):
3636
updatedWeightsTemp = updatedWeights[i*x:(i+1)*x]
3737
self.neurons[i].updateWeights(updatedWeightsTemp)
38-
#
39-
#
40-
#
38+
39+
def dropOut(self , delta):
40+
self.neurons[delta].
4141

4242
def getOutput(self):
4343
return self.outputValues

loss_plot.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import time, random
2+
import math
3+
from collections import deque
4+
5+
start = time.time()
6+
7+
class RealtimePlot:
8+
def __init__(self, axes, max_entries = 100):
9+
self.axis_x = deque(maxlen=max_entries)
10+
self.axis_y = deque(maxlen=max_entries)
11+
self.axes = axes
12+
self.max_entries = max_entries
13+
14+
self.lineplot, = axes.plot([], [], "ro-")
15+
self.axes.set_autoscaley_on(True)
16+
17+
def add(self, x, y):
18+
self.axis_x.append(x)
19+
self.axis_y.append(y)
20+
self.lineplot.set_data(self.axis_x, self.axis_y)
21+
self.axes.set_xlim(self.axis_x[0], self.axis_x[-1] + 1e-15)
22+
self.axes.relim(); self.axes.autoscale_view() # rescale the y-axis
23+
24+
def animate(self, figure, callback, interval = 50):
25+
import matplotlib.animation as animation
26+
def wrapper(frame_index):
27+
self.add(*callback(frame_index))
28+
self.axes.relim(); self.axes.autoscale_view() # rescale the y-axis
29+
return self.lineplot
30+
animation.FuncAnimation(figure, wrapper, interval=interval)
31+
32+
def main():
33+
from matplotlib import pyplot as plt
34+
35+
fig, axes = plt.subplots()
36+
display = RealtimePlot(axes)
37+
display.animate(fig, lambda frame_index: (time.time() - start, random.random() * 100))
38+
plt.show()
39+
40+
fig, axes = plt.subplots()
41+
display = RealtimePlot(axes)
42+
while True:
43+
display.add(time.time() - start, random.random() * 100)
44+
plt.pause(0.001)
45+
46+
if __name__ == "__main__": main()

neural_net.pdf

9.2 MB
Binary file not shown.

neural_network.png

-5.47 KB
Binary file not shown.

neural_network.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import math
55
from activationFunctions import *
66
import random
7+
import plot
78

89
HIDDEN_LAYER = 2*int(math.sqrt(28*28))
910
ROUND = 4
@@ -118,6 +119,10 @@ def runTests(self):
118119
elif self.choice=='2':
119120
self.sgdTrain()
120121

122+
else:
123+
plot.mainFunc(self.hidlay.getWeights(), self.outlay.getWeights())
124+
125+
121126

122127

123128

@@ -188,9 +193,13 @@ def updateWeights(self, l2_error):
188193
l1_delta = l1_error*sigmoidDeriv(l1)
189194

190195
syn2 += np.asarray(l1).T.dot(np.asarray(l2_delta))
196+
<<<<<<< HEAD
191197
print("len syn2: " , syn2.size)
192198
# print ("size l1-delta: " , len(l1_delta))
193199
# syn1 += np.asarray(l0).T.dot(np.asarray(l1_delta))
200+
=======
201+
syn1 += l0.T.dot(np.asarray(l1_delta))
202+
>>>>>>> cce863fbf432d5c05ad85147555395f00eb1812a
194203

195204
self.hidlay.setWeightsUpdated(syn1)
196205
self.outlay.setWeightsUpdated(syn2)
@@ -218,6 +227,7 @@ def sgdCreateNetworkAndTrain(self):
218227
self.output_layer_output = self.outlay.getOutput()
219228
self.sgdTrain()
220229

230+
221231

222232

223233

neuron.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,22 @@ def __init__(self, pixel_values, weights):
77
self.weights = np.asarray(weights)
88
self.sigma = 0.0
99
self.output = 0
10+
self.dropOut = 0
1011

1112
def calc_sigma(self):
12-
#print("len of pixel_values",self.pixel_values.size)
13-
#print("len of weights",self.weights.size)
14-
#print(type(self.pixel_values))
15-
#if self.pixel_values == 'null':
16-
#print("NULL")
17-
#print("dot : " , np.dot(self.pixel_values, self.weights))
1813
self.sigma = np.dot(self.pixel_values, self.weights)
19-
#self.sigma = np.dot(np.squeeze(self.pixel_values), self.weights)
2014

2115
def calc_activation(self):
2216
self.output = sigmoid(self.sigma)
2317

2418

2519
def calc_output(self):
26-
self.calc_sigma()
27-
self.calc_activation()
28-
return self.output
20+
if self.dropOut==0:
21+
self.calc_sigma()
22+
self.calc_activation()
23+
return self.output
24+
elif self.dropOut==1:
25+
return 0
2926

3027
def updateWeights(self, updatedWeights):
3128
#self.weights = np.array([])
@@ -34,16 +31,18 @@ def updateWeights(self, updatedWeights):
3431

3532
def setNewInput(self, newInput):
3633
cnt = 0
37-
#print ("newInput in Neuron: " ,newInput)
3834
self.pixel_values = np.array([])
39-
#print("pixel" , self.pixel_values)
4035
self.pixel_values = np.asarray(newInput)
41-
#print(len(newInput))
42-
#print(self.pixel_values.size)
43-
#print("pixel_values in neuron: " , self.pixel_values)
36+
4437

4538
def getWeights(self):
4639
return self.weights
4740

4841
def getNumOfWeights(self):
4942
return self.weights.size
43+
44+
def setDropOut(self):
45+
self.dropOut = 1
46+
47+
def resetDropOut(self):
48+
self.dropOut = 0

plot.py

Lines changed: 53 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,74 @@
1-
import igraph as ig
1+
import networkx as nx
2+
import matplotlib.pyplot as plt
23

34
class NetworkShape:
45
def __init__(self):
56
self.layerOne = 0
67
self.layerTwo = 0
78
self.layerThree = 0
9+
self.G = nx.Graph()
810

911
def setLayerNeuronCount(self, lay1=28*28, lay2 = 2*28, lay3 = 10):
1012
self.layerOne = lay1
1113
self.layerTwo = lay2
1214
self.layerThree = lay3
1315

1416
def drawImage(self):
15-
N = self.layerThree + self.layerTwo + self.layerOne
16-
Edges = [(i , j) for i in range(self.layerOne) for j in range(self.layerTwo)]
17-
Edges23 = [(i , j) for i in range(self.layerTwo) for j in range(self.layerThree)]
18-
Edges.extend(Edges23)
19-
G=ig.Graph(Edges, directed=False)
20-
layt=G.layout('kk', dim=3)
17+
edge=[(u,v) for (u,v,d) in self.G.edges(data=True)]
2118

19+
pos=nx.spring_layout(self.G)
2220

23-
def createNetworkShape():
21+
nx.draw_networkx_nodes(self.G,pos,node_size=500)
22+
nx.draw_networkx_edges(self.G,pos,edgelist=edge,
23+
width=0.5)
24+
25+
labels = nx.get_edge_attributes(self.G,'weight')
26+
edge_labels=dict([((u,v,),d['weight']) for u,v,d in self.G.edges(data=True)])
27+
nx.draw_networkx_edge_labels(self.G,pos,edge_labels=edge_labels)
28+
29+
nx.draw_networkx_labels(self.G,pos,font_size=5,font_family='sans-serif')
30+
31+
plt.axis('off')
32+
plt.savefig("neural_net.pdf") # save as pdf
33+
plt.show()
34+
35+
def createNodesEdges(self, syn1, syn2):
36+
for x in range(self.layerOne):
37+
name = "in "+str(x)
38+
self.G.add_node(name)
39+
40+
for x in range(self.layerTwo):
41+
name = "hid "+str(x)
42+
self.G.add_node(name)
43+
44+
for x in range(self.layerThree):
45+
name = "out "+str(x)
46+
self.G.add_node(name)
47+
48+
for x in range(self.layerOne):
49+
for y in range(self.layerTwo):
50+
lx = "in "+str(x)
51+
ly = "hid "+str(y)
52+
self.G.add_edge(lx, ly,color='r', weight=syn1[x+y])
53+
54+
for x in range(self.layerTwo):
55+
for y in range(self.layerThree):
56+
lx = "hid "+str(x)
57+
ly = "out "+str(y)
58+
self.G.add_edge(lx, ly, color='b', weight=syn1[x+y])
59+
60+
61+
62+
63+
64+
def createNetworkShape(syn1, syn2):
65+
print("Plot the Network")
2466
nn = NetworkShape()
2567
nn.setLayerNeuronCount()
68+
nn.createNodesEdges(syn1, syn2)
2669
nn.drawImage()
2770

2871

2972

30-
def mainFunc():
31-
createNetworkShape()
32-
33-
if __name__ == '__main__':
34-
mainFunc()
73+
def mainFunc(syn1, syn2):
74+
createNetworkShape(syn1, syn2)

0 commit comments

Comments
 (0)