プロジェクトが気に入ったら、このリポジトリを主演してサポートを示してください! ?
2024年1月15日 - スパゴの旅を振り返ると、私はそれが私に提供してくれた豊かな経験に感謝しています。 Spagoを通じて深い学習の基礎を習得し、再訪することは非常にやりがいがありました。 Spagoのユニークな機能、特に非同期計算グラフとクリーンコーディングに焦点を当てることで、取り組むべき並外れたプロジェクトになりました。私たちの目標は、GOでミニマリストMLフレームワークを作成し、スタンドアロン実行可能ファイルの作成を可能にすることにより、生産におけるPythonへの依存を排除することでした。 Spagoのこのアプローチは、私のプロジェクトのいくつかを挑戦的な生産環境でうまく強化しました。
ただし、Spagoを、進化する「AI空間」で効果的に競争できるレベルに昇格する努力は、現在GPUでの計算に広く関与しているため、実質的なコミットメントが必要です。同時に、Spagoが達成しようとしたビジョンは、RustのCandle Projectによって印象的に実現されています。スパゴに必要な注意を捧げる能力が限られており、サポートメンテナンスチームがいない場合、私は今のところプロジェクトを一時停止するという実用的な決定を下しました。
Spagoが私を連れて行ってくれて、それをサポートしてきたコミュニティに連れて行ってくれた旅に深く感謝しています。進化し続ける機械学習の分野を探求し続けているとき、私は先にあるエキサイティングな開発を楽しみにしています。
敬具、
マッテオグレラ
Spagoは、自然言語処理に関連する神経アーキテクチャをサポートするように設計されたPure Goで書かれた機械学習ライブラリです。
Spagoは、トレーニングと推論の両方に独自の軽量計算グラフを使用し、最初から最後まで理解しやすいという点で、自己完結型です。
それは提供します:
NLP関連の機能に興味がある場合は、Cybertronパッケージを必ず調べてください!
要件:
このリポジトリをクローンするか、ライブラリを取得します。
go get -u github.com/nlpodyssey/spago開始するのに適した場所は、LSTMなどの組み込みニューラルモデルの実装を見ることです。
2つの変数の合計を計算する方法の例を次に示します。
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]これは、パーセプトロン式の簡単な実装です。
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をお気軽にメールで送信してください。