Numpy-Neuron / nn /main.go
Jensen-holm's picture
re configured the Alg interface and the NN sttuct, now we have to work
a4aa491
raw
history blame
1.34 kB
package nn
import (
"fmt"
"github.com/Jensen-holm/ml-from-scratch/alg"
"github.com/Jensen-holm/ml-from-scratch/request"
)
type NN struct {
alg.Alg
args *NNArgs
}
func New(rp *request.Payload) (alg.Alg, error) {
// parse the args and make a new NN struct
nnArgs := make(map[string]interface{})
params := []string{
"epochs",
"activation",
"hidden_size",
"learning_rate",
}
for _, param := range params {
i, isIn := rp.Args[param]
if !isIn {
return nil, fmt.Errorf("user must specify %s", param)
}
switch param {
case "epochs":
if val, ok := i.(int); ok {
nnArgs[param] = val
} else {
return nil, fmt.Errorf("expected %s to be an int", param)
}
case "activation":
if val, ok := i.(string); ok {
nnArgs[param] = ActivationMap[val]
} else {
return nil, fmt.Errorf("expected %s to be a string", param)
}
case "hidden_size":
if val, ok := i.(int); ok {
nnArgs[param] = val
} else {
return nil, fmt.Errorf("expected %s to be an int", param)
}
case "learning_rate":
if val, ok := i.(float64); ok {
nnArgs[param] = val
} else {
return nil, fmt.Errorf("expected %s to be a float64", param)
}
default:
return nil, fmt.Errorf("unsupported parameter: %s", param)
}
}
args := NewArgs(nnArgs)
return &NN{
args: args,
}, nil
}