หากคุณชอบโครงการโปรด★เป็นที่เก็บข้อมูลนี้เพื่อแสดงการสนับสนุนของคุณ! -
15 ม.ค. 2024 - ในขณะที่ฉันไตร่ตรองถึงการเดินทางของสปาโกฉันเต็มไปด้วยความกตัญญูต่อประสบการณ์ที่เพิ่มคุณค่าให้ฉัน การเรียนรู้ไปและทบทวนพื้นฐานของการเรียนรู้อย่างลึกซึ้งผ่าน Spago ได้รับรางวัลอย่างมาก คุณสมบัติที่เป็นเอกลักษณ์ของ Spago โดยเฉพาะกราฟการคำนวณแบบอะซิงโครนัสและมุ่งเน้นไปที่การเข้ารหัสที่สะอาดทำให้เป็นโครงการพิเศษในการทำงาน เป้าหมายของเราคือการสร้างกรอบ ML แบบมินิมัลลิสต์ใน GO กำจัดการพึ่งพา Python ในการผลิตโดยการสร้างการดำเนินการแบบสแตนด์อโลน วิธีการของ Spago นี้ประสบความสำเร็จในการขับเคลื่อนโครงการของฉันหลายโครงการในสภาพแวดล้อมการผลิตที่ท้าทาย
อย่างไรก็ตามความพยายามที่จะยกระดับสปาโกให้อยู่ในระดับที่สามารถแข่งขันได้อย่างมีประสิทธิภาพในการพัฒนา 'พื้นที่ AI' ซึ่งตอนนี้เกี่ยวข้องกับการคำนวณ GPU อย่างกว้างขวางต้องมีความมุ่งมั่นอย่างมาก ในเวลาเดียวกันวิสัยทัศน์ที่สปาโกมุ่งมั่นที่จะบรรลุกำลังได้รับการตระหนักอย่างน่าประทับใจจากโครงการเทียนในสนิม ด้วยความสามารถที่ จำกัด ของฉันในการอุทิศความสนใจที่จำเป็นให้กับ Spago และในกรณีที่ไม่มีทีมบำรุงรักษาที่สนับสนุนฉันได้ตัดสินใจอย่างจริงจังที่จะหยุดโครงการชั่วคราวในตอนนี้
ฉันรู้สึกขอบคุณอย่างยิ่งสำหรับการเดินทางของสปาโกได้พาฉันไปและสำหรับชุมชนที่สนับสนุนมัน ในขณะที่เรายังคงสำรวจสาขาการเรียนรู้ของเครื่องจักรที่มีการพัฒนาฉันหวังว่าจะมีการพัฒนาที่น่าตื่นเต้นที่รออยู่ข้างหน้า
ขอแสดงความนับถือ
Matteo Grella
Spago เป็นห้องสมุด การเรียนรู้ของเครื่อง ที่เขียนด้วย Pure Go ที่ออกแบบมาเพื่อสนับสนุนสถาปัตยกรรมประสาทที่เกี่ยวข้องใน การประมวลผลภาษาธรรมชาติ
Spago มีอยู่ในตัวเองโดยใช้กราฟการคำนวณที่มีน้ำหนักเบาของตัวเองทั้งสำหรับการฝึกอบรมและการอนุมานง่ายต่อการเข้าใจตั้งแต่ต้นจนจบ
มันมีให้:
หากคุณสนใจฟังก์ชั่นที่เกี่ยวข้องกับ NLP อย่าลืมสำรวจแพ็คเกจ Cybertron!
ความต้องการ:
โคลน repo นี้หรือรับห้องสมุด:
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 พร้อมคำถามหรือความคิดเห็นใด ๆ ที่คุณอาจมี