Forme compatibile de tensori
Deduceți forma comună a tensorilor comparând dimensiunile finale și extinzând axele unitare.
from itertools import zip_longest
def broadcast_shape(a, b):
a, b = tuple(a), tuple(b)
if any(type(d) is not int or d < 0 for d in a + b):
raise ValueError("dimension.invalid")
result = []
for left, right in zip_longest(reversed(a), reversed(b), fillvalue=1):
if left == right or right == 1:
result.append(left)
elif left == 1:
result.append(right)
else:
raise ValueError("shape.incompatible")
return tuple(reversed(result))Proiect
Testați scalari și axe goale lângă dimensiuni unitare, respingând mărimi incompatibile, negative sau fracționare.
Verifică înainte de aplicare
Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
Modele
Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat.
from itertools import zip_longest
def broadcast_shape(a, b):
a, b = tuple(a), tuple(b)
if any(type(d) is not int or d < 0 for d in a + b):
raise ValueError("dimension.invalid")
result = []
for left, right in zip_longest(reversed(a), reversed(b), fillvalue=1):
if left == right or right == 1:
result.append(left)
elif left == 1:
result.append(right)
else:
raise ValueError("shape.incompatible")
return tuple(reversed(result))Urmăriți ipotezele formelor printr-un proiect numeric
ShapeEstuary oferă lucrului la software numeric un spațiu Windows în care folderul proiectului și conversația cu IA rămân conectate. Începeți cu operația care eșuează sau returnează o formă neașteptată. Cereți modelului ales să examineze transformările din jur și să le explice ipotezele înainte de a solicita o modificare. Această abordare menține investigația legată de fluxul care folosește efectiv rezultatul.
De exemplu, broadcast.py poate ancora o verificare a compatibilității formelor. O cerere utilă numește dimensiunile de intrare, forma de ieșire așteptată și comportamentul cerut pentru intrări incompatibile. Întrebați cum este folosit rezultatul funcției ulterior, fără a trata exemplul ca pe un sistem numeric complet. Software-ul furnizează spațiul de programare; proiectul determină biblioteca de tablouri, datele și verificările la execuție necesare sarcinii.
Modelele IA fără restricții pot fi alese dacă un endpoint acceptat compatibil cu OpenAI sau Anthropic le pune la dispoziție. Configurați adresa serviciului și acreditările necesare, apoi verificați capacitățile sale pentru sarcină. Examinați editările propuse și testați forme reprezentative, inclusiv dimensiuni goale unde contractul le permite. Comparați comportamentul rezultat cu biblioteca numerică folosită de aplicație. Astfel oferiți conversației dovezi despre compatibilitate fără a confunda explicația încrezătoare a modelului cu un comportament numeric verificat.
Întrebări de verificare pentru forme numerice
Ce trebuie să însoțească un raport de incompatibilitate a formelor?
Furnizați formele de intrare, operația care eșuează, rezultatul așteptat și versiunea relevantă a bibliotecii. Un caz mic reproductibil ajută la legarea simptomului de sursă. Evitați trimiterea unui set mare de date când dimensiunile și valori reprezentative pot explica problema.
Acest spațiu de lucru oferă accelerare GPU?
Fluxul de programare nu stabilește nicio capacitate de accelerare. Bibliotecile, hardware-ul și mediul de execuție ale proiectului determină execuția. Folosiți ShapeEstuary pentru a examina și discuta modificările codului, apoi măsurați-le și verificați-le în mediul unde rulează lucrul numeric.
Cum trebuie tratate dimensiunile de mărime zero?
Precizați dacă aplicația le acceptă și comparați comportamentul propus cu biblioteca sa de tablouri. Testați combinații valide și incompatibile. Nu lăsați o regulă generică despre dimensiuni pozitive să înlocuiască tacit un contract existent care permite rezultate goale.
Ar trebui să schimb codul din aval când se schimbă funcția auxiliară?
Examinați mai întâi consumatorii. O formă de ieșire sau un tip de eroare diferit poate necesita actualizări coordonate. Cereți identificarea ipotezelor afectate, apoi verificați editările împreună și rulați teste care acoperă întreaga operație.
ShapeEstuary · Actualizat 2026-10-25