Если вам нравится проект, пожалуйста, ★ Сверите этот репозиторий, чтобы показать вашу поддержку! ?
15 января 2024 г. - Когда я размышляю о путешествии Спаго, я наполнен благодарностью за обогащающий опыт, который он дал мне. Освоение иди и пересмотреть основы глубокого обучения через спаго было чрезвычайно полезным. Уникальные особенности Спаго, особенно его асинхронное график вычислений и фокусировка на чистом кодировании, сделали его необычным проектом для работы. Наша цель состояла в том, чтобы создать минималистскую структуру ML в GO, устраняя зависимость от Python в производстве, позволяя создавать автономные исполняемые файлы. Этот подход спаго успешно проработал несколько моих проектов в сложных производственных средах.
Тем не менее, стремление поднять Spago до уровня, где он может эффективно конкурировать в развивающемся «пространстве ИИ», которое в настоящее время широко включает вычисления в графических процессорах, требует существенной приверженности. В то же время, видение, которое Спаго стремилось достичь, теперь впечатляюще реализуется проектом Candle в Rust. С моей ограниченной способностью уделять необходимое внимание SPAGO и в отсутствие вспомогательной команды по техническому обслуживанию, я на данный момент принял прагматическое решение сделать паузу проекта.
Я глубоко благодарен за то, что путешествие, которое спаго привело меня к сообществу, которое поддержало его. Поскольку мы продолжаем исследовать постоянно развивающуюся область машинного обучения, я с нетерпением жду захватывающих событий, которые находятся впереди.
Теплые пожелания,
Маттео Грелла
Spago - это библиотека машинного обучения , написанная в Pure Go, разработанной для поддержки соответствующих нейронных архитектур в обработке естественного языка .
Spago автономно, поскольку он использует свой собственный легкий вычислительный график как для обучения, так и для вывода, легко понимать от начала до конца.
Он предоставляет:
Если вы заинтересованы в функциональных возможностях, связанных с NLP, обязательно изучите пакет Cybertron!
Требования:
Клонировать это репо или получить библиотеку:
go get -u github.com/nlpodyssey/spagoХорошее место для начала-это просмотреть реализацию встроенных нейронных моделей, таких как LSTM.
Вот пример того, как вычислить сумму двух переменных:
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 ())
}Выход:
c = [7] (float32)
ga = [0.5]
gb = [0.5]Вот простая реализация формулы 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 ())
}Если вы думаете, что чего -то не хватает или может быть улучшено, пожалуйста, откройте проблемы и обращайте запросы.
Чтобы начать вносить свой вклад, проверьте руководящие принципы.
Мы настоятельно рекомендуем вам создать проблему, поскольку она будет способствовать росту сообщества. Однако, если вы предпочитаете общаться с нами в частном порядке, пожалуйста, не стесняйтесь по электронной почте Matteo Grella с любыми вопросами или комментариями, которые у вас могут быть.