Tragen Sie zum TensorFlow-Code bei

Unabhängig davon, ob Sie eine Verlustfunktion hinzufügen, die Testabdeckung verbessern oder einen RFC für eine größere Designänderung schreiben, dieser Teil des Contributor-Handbuchs hilft Ihnen beim Einstieg. Vielen Dank für Ihre Arbeit und Ihr Interesse an der Verbesserung von TensorFlow.

Bevor Sie anfangen

Bevor Sie Quellcode zu einem TensorFlow-Projekt beitragen, überprüfen Sie bitte die Datei CONTRIBUTING.md im GitHub-Repo des Projekts. ( Informationen zum TensorFlow-Kern-Repo finden Sie beispielsweise in der Datei CONTRIBUTING.md .) Alle Code-Mitwirkenden müssen eine Contributor-Lizenzvereinbarung ( Contributor License Agreement, CLA) unterzeichnen.

Um Doppelarbeit zu vermeiden, überprüfen Sie bitte aktuelle oder vorgeschlagene RFCs und wenden Sie sich an die Entwickler in den TensorFlow-Foren ( developer@tensorflow.org ), bevor Sie mit der Arbeit an einer nicht trivialen Funktion beginnen. Wir sind etwas wählerisch bei der Entscheidung, neue Funktionen hinzuzufügen, und der beste Weg, um zum Projekt beizutragen und ihm zu helfen, besteht darin, an bekannten Problemen zu arbeiten.

Probleme für neue Mitwirkende

Neue Mitwirkende sollten bei der Suche nach einem ersten Beitrag zur TensorFlow-Codebasis nach den folgenden Tags suchen. Wir empfehlen neuen Mitwirkenden dringend, zuerst die Projekte „Gute erste Ausgabe“ und „Beiträge willkommen“ in Angriff zu nehmen. Dies hilft dem Mitwirkenden, sich mit dem Beitragsworkflow vertraut zu machen und die Kernentwickler mit dem Mitwirkenden vertraut zu machen.

Wenn Sie daran interessiert sind, ein Team zu rekrutieren, um ein großes Problem oder eine neue Funktion zu lösen, senden Sie bitte eine E-Mail an die developer @ group und überprüfen Sie unsere aktuelle Liste der RFCs.

Code-Review

Neue Funktionen, Fehlerkorrekturen und andere Änderungen an der Codebasis unterliegen einer Codeüberprüfung.

Die Überprüfung des zum Projekt beigetragenen Codes als Pull-Anforderungen ist eine wichtige Komponente der TensorFlow-Entwicklung. Wir empfehlen jedem, den von anderen Entwicklern eingereichten Code zu überprüfen, insbesondere wenn Sie diese Funktion wahrscheinlich verwenden.

Hier sind einige Fragen, die Sie bei der Codeüberprüfung berücksichtigen sollten:

  • Wollen wir das in TensorFlow? Wird es wahrscheinlich verwendet? Gefällt Ihnen als TensorFlow-Benutzer die Änderung und Sie möchten sie verwenden? Ist dies eine Änderung im Umfang von TensorFlow? Werden sich die Kosten für die Wartung einer neuen Funktion auszahlen?
  • Stimmt der Code mit der TensorFlow-API überein? Sind öffentliche Funktionen, Klassen und Parameter gut benannt und intuitiv gestaltet?
  • Enthält es Dokumentation? Werden alle öffentlichen Funktionen, Klassen, Parameter, Rückgabetypen und gespeicherten Attribute gemäß den TensorFlow-Konventionen benannt und klar dokumentiert? Werden neue Funktionen in der Dokumentation von TensorFlow beschrieben und nach Möglichkeit anhand von Beispielen veranschaulicht? Wird die Dokumentation ordnungsgemäß gerendert?

  • Ist der Code für Menschen lesbar? Ist die Redundanz gering? Sollten Variablennamen aus Gründen der Klarheit oder Konsistenz verbessert werden? Sollten Kommentare hinzugefügt werden? Sollten Kommentare als nicht hilfreich oder irrelevant entfernt werden?

  • Ist der Code effizient? Könnte es einfach umgeschrieben werden, um effizienter zu arbeiten?

  • Ist der Code abwärtskompatibel mit früheren Versionen von TensorFlow?

  • Fügt der neue Code neue Abhängigkeiten von anderen Bibliotheken hinzu?

Testen und verbessern Sie die Testabdeckung

Hochwertige Unit-Tests sind ein Eckpfeiler des TensorFlow-Entwicklungsprozesses. Zu diesem Zweck verwenden wir Docker-Images. Die Testfunktionen sind entsprechend benannt und für die Überprüfung der Gültigkeit von Algorithmen sowie verschiedener Optionen des Codes verantwortlich.

Alle neuen Funktionen und Fehlerkorrekturen müssen eine angemessene Testabdeckung enthalten. Wir begrüßen auch Beiträge neuer Testfälle oder Verbesserungen bestehender Tests. Wenn Sie feststellen, dass unsere vorhandenen Tests nicht abgeschlossen sind - auch wenn dies derzeit keinen Fehler verursacht -, reichen Sie bitte ein Problem und, falls möglich, eine Pull-Anfrage ein.

Für die speziellen Einzelheiten der Verfahren in jedem TensorFlow Projekt zu testen, finden Sie in die README.md und CONTRIBUTING.md Dateien im Projekt - Repo auf GitHub.

Von besonderer Bedeutung bei angemessenen Tests :

  • Wird jede öffentliche Funktion und Klasse getestet?
  • Werden vernünftige Parameter , deren Werte, Werttypen und Kombinationen getestet?
  • Überprüfen die Tests, ob der Code korrekt ist und ob er das tut, was in der Dokumentation angegeben ist?
  • Wenn es sich bei der Änderung um eine Fehlerbehebung handelt, ist ein Nicht-Regressionstest enthalten?
  • Bestehen die Tests den Build für die kontinuierliche Integration ?
  • Decken die Tests jede Codezeile ab? Wenn nicht, sind die Ausnahmen angemessen und explizit?

Wenn Sie Probleme finden, können Sie dem Mitwirkenden helfen, diese Probleme zu verstehen und zu beheben.

Verbessern Sie Fehlermeldungen oder Protokolle

Wir freuen uns über Beiträge, die Fehlermeldungen und Protokollierung verbessern.

Beitragsworkflow

Code-Beiträge - Fehlerkorrekturen, Neuentwicklung, Testverbesserung - folgen einem GitHub-zentrierten Workflow. Richten Sie ein GitHub-Konto ein, um an der TensorFlow-Entwicklung teilzunehmen. Dann:

  1. Gabeln Sie das Repo, an dem Sie arbeiten möchten. Gehen Sie zur Projekt-Repo-Seite und verwenden Sie die Schaltfläche Gabel . Dadurch wird eine Kopie des Repos unter Ihrem Benutzernamen erstellt. (Weitere Informationen zum Verzweigen eines Repositorys finden Sie in diesem Handbuch .)

  2. Klonen Sie das Repo auf Ihr lokales System.

    $ git clone git@github.com:your-user-name/project-name.git

  3. Erstellen Sie einen neuen Zweig für Ihre Arbeit.

    $ git checkout -b new-branch-name

  4. Arbeiten Sie an Ihrem neuen Code. Schreiben Sie Tests und führen Sie sie aus.

  5. Übernehmen Sie Ihre Änderungen.

    $ git add -A

    $ git commit -m "commit message here"

  6. Übertragen Sie Ihre Änderungen auf Ihr GitHub-Repo.

    $ git push origin branch-name

  7. Öffnen Sie eine Pull-Anfrage (PR). Gehen Sie auf GitHub zum ursprünglichen Projekt-Repo. Es wird eine Nachricht über Ihren kürzlich geposteten Zweig angezeigt, in der Sie gefragt werden, ob Sie eine Pull-Anfrage öffnen möchten. Befolgen Sie die Anweisungen, vergleichen Sie die Repositorys und senden Sie die PR. Dadurch wird eine E-Mail an die Committer gesendet. Möglicherweise möchten Sie eine E-Mail an die Mailingliste senden, um die Sichtbarkeit zu verbessern. (Weitere Informationen finden Sie im GitHub-Handbuch zu PRs .

  8. Betreuer und andere Mitwirkende überprüfen Ihre PR . Bitte nehmen Sie an der Konversation teil und versuchen Sie, die gewünschten Änderungen vorzunehmen . Sobald die PR genehmigt ist, wird der Code zusammengeführt.

Stellen Sie vor der Arbeit an Ihrem nächsten Beitrag sicher, dass Ihr lokales Repository auf dem neuesten Stand ist.

  1. Stellen Sie die Upstream-Fernbedienung ein. (Sie müssen dies nur einmal pro Projekt tun, nicht jedes Mal.)

    $ git remote add upstream git@github.com:tensorflow/project-repo-name

  2. Wechseln Sie zum lokalen Hauptzweig.

    $ git checkout master

  3. Ziehen Sie die Änderungen von stromaufwärts herunter.

    $ git pull upstream master

  4. Übertragen Sie die Änderungen auf Ihr GitHub-Konto. (Optional, aber eine gute Praxis.)

    $ git push origin master

  5. Erstellen Sie einen neuen Zweig, wenn Sie mit der Arbeit beginnen.

    $ git checkout -b branch-name

Zusätzliche git und GitHub-Ressourcen:

Checkliste für Mitwirkende