Goro es una biblioteca de aprendizaje automático de alto nivel para GO construido en Gorgonia. Su objetivo es tener la misma sensación que Keras.
import (
. "github.com/aunum/goro/pkg/v1/model"
"github.com/aunum/goro/pkg/v1/layer"
)
// create the 'x' input e.g. mnist image
x := NewInput ( "x" , [] int { 1 , 28 , 28 })
// create the 'y' or expect output e.g. labels
y := NewInput ( "y" , [] int { 10 })
// create a new sequential model with the name 'mnist'
model , _ := NewSequential ( "mnist" )
// add layers to the model
model . AddLayers (
layer. Conv2D { Input : 1 , Output : 32 , Width : 3 , Height : 3 },
layer. MaxPooling2D {},
layer. Conv2D { Input : 32 , Output : 64 , Width : 3 , Height : 3 },
layer. MaxPooling2D {},
layer. Conv2D { Input : 64 , Output : 128 , Width : 3 , Height : 3 },
layer. MaxPooling2D {},
layer. Flatten {},
layer. FC { Input : 128 * 3 * 3 , Output : 100 },
layer. FC { Input : 100 , Output : 10 , Activation : layer . Softmax },
)
// pick an optimizer
optimizer := g . NewRMSPropSolver ()
// compile the model with options
model . Compile ( xi , yi ,
WithOptimizer ( optimizer ),
WithLoss ( m . CrossEntropy ),
WithBatchSize ( 100 ),
)
// fit the model
model . Fit ( xTrain , yTrain )
// use the model to predict an 'x'
prediction , _ := model . Predict ( xTest )
// fit the model with a batch
model . FitBatch ( xTrainBatch , yTrainBatch )
// use the model to predict a batch of 'x'
prediction , _ = model . PredictBatch ( xTestBatch )
Consulte la carpeta de ejemplos, por ejemplo, implementaciones.
Hay muchos ejemplos en el oro de la biblioteca de aprendizaje de refuerzo.
Cada paquete contiene un readme que explica el uso, ver Godoc.
Abra un MR para cualquier problema o solicitud de función.
Siéntase libre de hacer ping @pbarker en Gopher Slack.