Goro est une bibliothèque d'apprentissage automatique de haut niveau pour GO construit sur Gorgonia. Il vise à avoir la même sensation 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 )
Voir le dossier Exemples par exemple les implémentations.
Il existe de nombreux exemples dans l'or de la bibliothèque d'apprentissage du renforcement.
Chaque package contient un Readme expliquant l'utilisation, voir également Godoc.
Veuillez ouvrir un MR pour tout problème ou demande de fonctionnalité.
N'hésitez pas à cingler @pbarker sur Gopher Slack.