-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathstatement_test.go
141 lines (119 loc) · 3.21 KB
/
statement_test.go
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package wann
import (
"fmt"
"math/rand"
"testing"
)
// ExampleNetwork_StatementWithInputValues
func TestNetworkStatementWithInputValues(t *testing.T) {
rand.Seed(1)
net := NewNetwork(&Config{
inputs: 6,
InitialConnectionRatio: 0.7,
sharedWeight: 0.5,
})
net.SetInputValues([]float64{0.0, 0.1, 0.2, 0.3, 0.4, 0.5})
statement, err := net.StatementWithInputValues()
if err != nil {
panic(err)
}
fmt.Println(Render(statement))
}
// ExampleNetwork_StatementWithInputDataVariables
func TestNetwork_StatementWithInputDataVariables(t *testing.T) {
rand.Seed(1)
net := NewNetwork(&Config{
inputs: 6,
InitialConnectionRatio: 0.7,
sharedWeight: 0.5,
})
// 1.234 should not appear in the output statement
net.SetInputValues([]float64{1.234, 1.234, 1.234, 1.234, 1.234, 1.234})
statement, err := net.StatementWithInputDataVariables()
if err != nil {
panic(err)
}
fmt.Println(Render(statement))
}
// ExampleNeuron_InputStatement
func ExampleNeuron_InputStatement() {
rand.Seed(1)
net := NewNetwork(&Config{
inputs: 6,
InitialConnectionRatio: 0.7,
sharedWeight: 0.5,
})
// 1.234 should not appear in the output statement
net.SetInputValues([]float64{1.234, 1.234, 1.234, 1.234, 1.234, 1.234})
inputStatement2, err := net.AllNodes[net.InputNodes[2]].InputStatement()
if err != nil {
panic(err)
}
fmt.Println(Render(inputStatement2))
// Output:
// inputData[2]
}
func ExampleNetwork_OutputNodeStatementX_first() {
// First create a network with only one output node, that has a step function
net := NewNetwork()
net.AllNodes[net.OutputNode].ActivationFunction = Step
fmt.Println(net.OutputNodeStatementX("score"))
// Output:
// score := func(s float64) float64 {
// if s >= 0 {
// return 1
// } else {
// return 0
// }
// }(x)
}
func ExampleNetwork_OutputNodeStatementX_second() {
// Then create a network with an input node that has a sigmoid function and an output node that has an invert function
net := NewNetwork()
net.NewInputNode(Sigmoid, true)
net.AllNodes[net.OutputNode].ActivationFunction = Inv
// Output a Go expression for this network, using the given input variable names
fmt.Println(net.OutputNodeStatementX("score"))
// Output:
// score := -(x)
}
func ExampleNetwork_OutputNodeStatementX_third() {
rand.Seed(999)
net := NewNetwork(&Config{
inputs: 1,
InitialConnectionRatio: 0.7,
sharedWeight: 0.5,
})
fmt.Println(net.OutputNodeStatementX("score"))
// Output:
// score := math.Exp(-(math.Pow(x, 2.0)) / 2.0)
}
func ExampleNetwork_OutputNodeStatementX_fourth() {
rand.Seed(1111113)
net := NewNetwork(&Config{
inputs: 5,
InitialConnectionRatio: 0.7,
sharedWeight: 0.5,
})
fmt.Println(net.OutputNodeStatementX("score"))
// Output:
// score := func(r float64) float64 {
// if r >= 0 {
// return r
// } else {
// return 0
// }
// }(x)
}
func ExampleNetwork_OutputNodeStatementX() {
rand.Seed(1)
net := NewNetwork(&Config{
inputs: 5,
InitialConnectionRatio: 0.7,
sharedWeight: 0.5,
})
fmt.Println(net.OutputNodeStatementX("f"))
//fmt.Println(net.Score())
// Output:
// f := math.Pow(x, 2.0)
}