إذا كنت تحب المشروع ، فيرجى ★ نجمة هذا المستودع لإظهار دعمك! ؟
15 يناير 2024 - بينما أفكر في رحلة سباجو ، أشعر بالامتنان للتجربة المثيرة التي قدمتها لي. كان إتقان الذهاب وإعادة النظر في أساسيات التعلم العميق من خلال سباجو مجزية للغاية. جعلت الميزات الفريدة لـ Spago ، وخاصة الرسم البياني للحساب غير المتزامن والتركيز على الترميز النظيف ، مشروعًا غير عادي للعمل عليه. كان هدفنا هو إنشاء إطار عمل ML في GO ، مع التخلص من الاعتماد على Python في الإنتاج من خلال تمكين إنشاء المناوب التنفيذية المستقلة. نجح هذا النهج في Spago في تشغيل العديد من مشاريعي في بيئات الإنتاج الصعبة.
ومع ذلك ، فإن المسعى لرفع SPAGO إلى مستوى يمكن أن يتنافس فيه بفعالية في "مساحة الذكاء الاصطناعى" المتطورة ، والذي يتضمن الآن على نطاق واسع حساب على وحدات معالجة الرسومات ، التزامًا كبيرًا. في الوقت نفسه ، أصبحت الرؤية التي تطمحها Spago لتحقيقها الآن أكثر إثارة للإعجاب من قبل مشروع الشمعة في 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 مع أي أسئلة أو تعليقات قد تكون لديك.