Goro é uma biblioteca de aprendizado de máquina de alto nível para o Go Build on Gorgonia. O objetivo é ter a mesma sensação 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 )
Veja a pasta Exemplos, por exemplo, implementações.
Existem muitos exemplos no ouro da biblioteca de aprendizado de reforço.
Cada pacote contém um ReadMe explicando o uso, ver também Godoc.
Abra um MR para quaisquer problemas ou solicitações de recursos.
Sinta -se à vontade para ping @pbarker no Gopher Slack.