/
utils.go
39 lines (30 loc) · 844 Bytes
/
utils.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
package main
import (
"math"
)
const (
CostEvalWeight float32 = 0.75
CostWDLWeight float32 = 1.0 - CostEvalWeight
)
func Sigmoid(x float32) float32 {
return float32(1.0 / (1.0 + math.Exp(float64(SigmoidScale*(-x)))))
}
func SigmoidPrime(x float32) float32 {
return x * (1.0 - x) * SigmoidScale
}
func ReLu(x float32) float32 {
return float32(math.Max(float64(x), 0.0))
}
func ReLuPrime(x float32) float32 {
if x > 0.0 {
return 1.0
}
return 0.0
}
func CalculateCostGradient(output, evalTarget, wdlTarget float32) float32 {
return 2.0*CostEvalWeight*(output-evalTarget) + 2.0*CostWDLWeight*(output-wdlTarget)
}
func ValidationCost(output, evalTarget, wdlTarget float32) float32 {
return CostEvalWeight*float32(math.Pow(float64(output-evalTarget), 2.0)) +
CostWDLWeight*float32(math.Pow(float64(output-wdlTarget), 2.0))
}