-
Notifications
You must be signed in to change notification settings - Fork 1
/
script.py
68 lines (63 loc) · 3.11 KB
/
script.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import csvReader as reader
import neuralNetwork as nn
import activationFunctions as F
import lossFunctions as L
import networkPrinter as printer
def classification3Classes():
Xtrain, Ytrain = reader.readClassification3ClassesFile('classification\data.three_gauss.train.100.csv')
Xtest, Ytest = reader.readClassification3ClassesFile('classification\data.three_gauss.test.100.csv')
net = nn.NeuralNetwork(momentumSize=0, seed=0)
net.addLayer(2, 20, F.LReLU, False)
net.addLayer(20, 3, F.softmax, False)
net.setCostFunction(L.crossEntropy)
#define own validation and train sets
# net.trainAndValidate(Xtrain[20:], Ytrain[20:], Xtrain[0:20], Ytrain[0:20], epochs=10, learningRate=0.1, showError=True, showNodes=False)
#automatic k-folds validation method
net.kFoldsTrainAndValidate(Xtrain, Ytrain, k=5, epochs=50, learningRate=0.1,
showError=True,
showNodes=True,
print=lambda e : printer.print_classification(net, Xtrain, Ytrain, size=1.5, dS=0.1),
showEvery=5)
mean, std, error = net.validate(Xtest, Ytest)
print(mean, std)
printer.print_accuracy(net, Xtest, Ytest)
def classification2Classes():
Xtrain, Ytrain = reader.readClassificationFile('classification\data.XOR.train.100.csv')
Xtest, Ytest = reader.readClassificationFile('classification\data.XOR.test.100.csv')
net = nn.NeuralNetwork(momentumSize=1, seed=0)
net.addLayer(2, 10, F.tanh, True)
net.addLayer(10, 1, F.sigmoid, True)
net.setCostFunction(L.l1)
#define own validation and train sets
# net.trainAndValidate(Xtrain[20:], Ytrain[20:], Xtrain[0:20], Ytrain[0:20], epochs=10, learningRate=0.1, showError=True, showNodes=False)
#automatic k-folds validation method
net.kFoldsTrainAndValidate(Xtrain, Ytrain, k=5, epochs=500, learningRate=0.5,
showError=True,
showNodes=False,
print=lambda : printer.print_classification(net, Xtest, Ytest, size=1.1, dS=0.1),
showEvery=10)
mean, std, error = net.validate(Xtest, Ytest)
print(mean, std)
printer.print_accuracy(net, Xtest, Ytest)
def regression():
Xtrain, Ytrain = reader.readRegressionFile('regression\data.square.train.100.csv')
Xtest, Ytest = reader.readRegressionFile('regression\data.square.test.100.csv')
net = nn.NeuralNetwork(momentumSize=1, seed=100)
net.addLayer(1, 2, F.polly, bias=True)
net.addLayer(2, 1, F.linear, bias=True)
net.setCostFunction(L.l1)
#define own validation and train sets
# net.trainAndValidate(Xtrain[20:], Ytrain[20:], Xtrain[0:20], Ytrain[0:20], epochs=10, learningRate=0.1, showError=True, showNodes=False)
#automatic k-folds validation method
net.kFoldsTrainAndValidate(Xtrain, Ytrain, k=20, batchSize=1, epochs=2000, learningRate=6e-4, momentumRate=2e-5,
showError=True,
showNodes=False,
print = lambda : printer.print_regression(net, Xtrain, Ytrain, size=5, dx=0.25),
showEvery= 10)
mean, std, error = net.validate(Xtest, Ytest)
print(mean, std)
if __name__ == "__main__":
classification3Classes()
# classification2Classes()
# regression()
input('Click enter')