Si le gusta el proyecto, por favor, estrella este repositorio para mostrar su soporte! ?
15 de enero de 2024 - Mientras reflexiono sobre el viaje de Spago, estoy lleno de gratitud por la experiencia enriquecedora que me ha proporcionado. Dominar Go y revisar los fundamentos del aprendizaje profundo a través de Spago ha sido inmensamente gratificante. Las características únicas de Spago, especialmente su gráfico de cálculo asíncrono y se centran en la codificación limpia, lo han convertido en un proyecto extraordinario para trabajar. Nuestro objetivo era crear un marco ML minimalista en GO, eliminando la dependencia de Python en producción al permitir la creación de ejecutables independientes. Este enfoque de Spago impulsó con éxito varios de mis proyectos en entornos de producción desafiantes.
Sin embargo, el esfuerzo por elevar a Spago a un nivel en el que puede competir de manera efectiva en el 'espacio de IA' en evolución, que ahora implica ampliamente el cálculo en las GPU, requiere un compromiso sustancial. Al mismo tiempo, la visión que Spago aspiró a lograr ahora está siendo realizada de manera impresionante por el proyecto de vela en Rust. Con mi capacidad limitada para dedicar la atención necesaria a Spago, y en ausencia de un equipo de mantenimiento de apoyo, he tomado la decisión pragmática de detener el proyecto por ahora.
Estoy profundamente agradecido por el viaje que Spago me ha tomado y por la comunidad que la ha apoyado. A medida que continuamos explorando el campo en constante evolución del aprendizaje automático, espero con ansias los emocionantes desarrollos que se avecinan.
Un cordial saludo,
Matteo grella
Spago es una biblioteca de aprendizaje automático escrita en puro Go diseñada para apoyar las arquitecturas neuronales relevantes en el procesamiento del lenguaje natural .
Spago es autónomo, ya que utiliza su propio gráfico computacional ligero tanto para entrenamiento como para la inferencia, fácil de entender de principio a fin.
Proporciona:
Si está interesado en las funcionalidades relacionadas con PNL, ¡asegúrese de explorar el paquete Cybertron!
Requisitos:
Clon este repositorio o obtenga la biblioteca:
go get -u github.com/nlpodyssey/spagoUn buen lugar para comenzar es observar la implementación de modelos neuronales incorporados, como el LSTM.
Aquí hay un ejemplo de cómo calcular la suma de dos variables:
package main
import (
"fmt"
"log"
"github.com/nlpodyssey/spago/ag"
"github.com/nlpodyssey/spago/mat"
)
func main () {
// define the type of the elements in the tensors
type T = float32
// create a new node of type variable with a scalar
a := mat . Scalar ( T ( 2.0 ), mat . WithGrad ( true )) // create another node of type variable with a scalar
b := mat . Scalar ( T ( 5.0 ), mat . WithGrad ( true )) // create an addition operator (the calculation is actually performed here)
c := ag . Add ( a , b )
// print the result
fmt . Printf ( "c = %v (float%d) n " , c . Value (), c . Value (). Item (). BitSize ())
c . AccGrad ( mat . Scalar ( T ( 0.5 )))
if err := ag . Backward ( c ); err != nil {
log . Fatalf ( "error during Backward(): %v" , err )
}
fmt . Printf ( "ga = %v n " , a . Grad ())
fmt . Printf ( "gb = %v n " , b . Grad ())
}Producción:
c = [7] (float32)
ga = [0.5]
gb = [0.5]Aquí hay una implementación simple de la fórmula Perceptron:
package main
import (
"fmt"
. "github.com/nlpodyssey/spago/ag"
"github.com/nlpodyssey/spago/mat"
)
func main () {
x := mat . Scalar ( - 0.8 )
w := mat . Scalar ( 0.4 )
b := mat . Scalar ( - 0.2 )
y := Sigmoid ( Add ( Mul ( w , x ), b ))
fmt . Printf ( "y = %0.3f n " , y . Value (). Item ())
}Si cree que falta algo o podría mejorarse, abra los problemas y extraiga las solicitudes.
Para comenzar a contribuir, verifique las pautas contribuyentes.
Le recomendamos que cree un problema, ya que contribuirá al crecimiento de la comunidad. Sin embargo, si prefiere comunicarse con nosotros en privado, no dude en enviar un correo electrónico a Matteo Grella con cualquier pregunta o comentario que pueda tener.