सत्यापित टाइल और मैट्रिक्स गणना
यह ट्यूटोरियल Scarp के प्रकाशित v0.0.5-alpha.1 इंटरप्रेटर पर आधारित है। नीचे दिया गया पूरा कोड और उसका आउटपुट सीधे आधिकारिक matrix-forward उदाहरण से लिया गया है। इसमें सामान्य tensor framework या GPU acceleration का दावा नहीं किया गया है।
1. फ़ाइल बनाकर प्रोग्राम चलाएँ
matrix_forward.srp नाम से फ़ाइल बनाइए और यह पूरा मूल सोर्स लिखिए:
pure funcra forward(weights: tile, features: vector, bias: vector) -> vector
needs width(weights) == len(features);
needs height(weights) == len(bias);
ensures len(result) == height(weights);
{
return softmax(add(matvec(weights, features), bias));
}
bind identity = tile([1.0, 0.0, 0.0, 1.0], 2, 2);
bind weights = tileadd(identity, tilescale(identity, 1.0));
print(forward(weights, [1.0, 1.0], [0.0, 0.0]));
उसी फ़ोल्डर से पहले जाँचें और फिर चलाएँ:
scarp check matrix_forward.srp
scarp run matrix_forward.srp
अपेक्षित stdout:
[0.5, 0.5]
प्रकाशित सोर्स और आउटपुट फ़ाइल दोनों को CI pinned release से सत्यापित करता है। हिन्दी और अंग्रेज़ी पृष्ठों के कोड को भी अलग से जाँचा जाता है।
2. टाइल क्या होती है?
tile दो आयामों वाला immutable numerical value है। tile(values, rows, columns) में मानों की संख्या ठीक rows * columns होनी चाहिए। मान row-major क्रम में रखे जाते हैं। height और width आयाम बताते हैं। इंडेक्स शून्य से शुरू होते हैं; numerical तत्व finite float होते हैं।
यह उदाहरण पहले 2 × 2 identity tile बनाता है। tilescale सभी तत्वों को गुणा करता है और tileadd समान आकार की दो tiles जोड़ता है। matvec एक tile और उचित लंबाई वाले vector पर गणना करता है।
3. फ़ंक्शन कैसे काम करता है?
pure funcra forward(...)एक typed function है जिसमें purity नियम लागू होते हैं।needs width(weights) == len(features)औरneeds height(weights) == len(bias)पहले आयामों की जाँच करते हैं।matvecसे vector बनता है;addbias जोड़ता है;softmaxबराबर दो मानों से[0.5, 0.5]देता है।ensures len(result) == height(weights)परिणाम की runtime जाँच है। यह औपचारिक गणितीय प्रमाण नहीं है।
4. सामान्य त्रुटियाँ
| स्थिति | कोड | क्या सुधारें |
|---|---|---|
| Matrix के आयाम मेल नहीं खाते | E0032 |
width, height और len जाँचें |
| पंक्ति/कॉलम सीमा के बाहर हैं | E0033 |
वैध zero-based index दें |
| गणना के work budget की सीमा | E0017 |
अनावश्यक गणना घटाएँ |
| नया numeric buffer quota से अधिक | E0036 |
allocations कम करें या --max-vector-bytes जाँचें |
टाइल immutable हैं। उपलब्ध API में tile, height, width, cell, lane, unroll, turn, matvec, matmul, tileadd, tilescale शामिल हैं। मनमाने आयाम वाले tensors, automatic broadcasting और tile[row][column] syntax अभी नहीं हैं। न्यूमेरिकल संदर्भ, त्रुटियाँ और बजट पढ़ें।
Compiler प्रमाण: प्रकाशित tiles guide। आगे वेक्टर अभ्यास और मॉड्यूल अभ्यास पढ़ें।