Pomoc chronić Wielkiej Rafy Koralowej z TensorFlow na Kaggle Dołącz Wyzwanie

Wesprzyj kod TensorFlow

Niezależnie od tego, czy dodajesz funkcję utraty, poprawiasz pokrycie testów, czy piszesz RFC dla poważnych zmian projektowych, ta część przewodnika dla kontrybutorów pomoże Ci rozpocząć. Dziękujemy za pracę i zainteresowanie ulepszaniem TensorFlow.

Zanim zaczniesz

Przed przesłaniem kodu źródłowego do projektu TensorFlow przejrzyj plik CONTRIBUTING.md w repozytorium GitHub projektu. (Na przykład zobacz plik CONTRIBUTING.md dla podstawowego repozytorium TensorFlow ). Wszyscy współtwórcy kodu są zobowiązani do podpisania umowy licencyjnej współautora (CLA).

Aby uniknąć powielania pracy, zapoznaj się z aktualnymi lub proponowanymi specyfikacjami RFC i skontaktuj się z programistami na forach TensorFlow ( developers@tensorflow.org ), zanim zaczniesz pracować nad nietrywialną funkcją. Decydując się na dodanie nowej funkcjonalności, jesteśmy dość wybredni, a najlepszym sposobem wniesienia wkładu i pomocy przy projekcie jest praca nad znanymi problemami.

Problemy dla nowych współtwórców

Nowi współautorzy powinni szukać następujących tagów podczas wyszukiwania pierwszego wkładu do bazy kodu TensorFlow. Zdecydowanie zalecamy, aby nowi współpracownicy w pierwszej kolejności zajęli się projektami „dobre pierwsze wydanie” i „wkład mile widziany”; pomaga to współautorowi zapoznać się z przepływem pracy nad wkładem, a głównym programistom - zapoznać się z kontrybutorem.

Jeśli jesteś zainteresowany rekrutacją zespołu do pomocy w rozwiązaniu problemu na dużą skalę lub nowej funkcji, wyślij e-mail do developers @ group i przejrzyj naszą aktualną listę RFC.

Przegląd kodu

Nowe funkcje, poprawki błędów i wszelkie inne zmiany w bazie kodu podlegają przeglądowi kodu.

Przeglądanie kodu wniesionego do projektu, ponieważ żądania ściągnięcia są kluczowym elementem rozwoju TensorFlow. Zachęcamy każdego do zapoznania się z kodem przesłanym przez innych programistów, zwłaszcza jeśli funkcja jest czymś, z czego prawdopodobnie będziesz korzystać.

Oto kilka pytań, o których należy pamiętać podczas procesu przeglądu kodu:

  • Czy chcemy tego w TensorFlow? Czy prawdopodobnie zostanie użyty? Czy jako użytkownik TensorFlow podoba Ci się zmiana i zamierzasz z niej skorzystać? Czy to zmiana w zakresie TensorFlow? Czy koszt utrzymania nowej funkcji będzie wart korzyści?
  • Czy kod jest zgodny z interfejsem API TensorFlow? Czy funkcje, klasy i parametry publiczne są dobrze nazwane i zaprojektowane w sposób intuicyjny?
  • Czy zawiera dokumentację? Czy wszystkie publiczne funkcje, klasy, parametry, typy zwracane i przechowywane atrybuty są nazwane zgodnie z konwencjami TensorFlow i jasno udokumentowane? Czy nowa funkcjonalność jest opisana w dokumentacji TensorFlow i zilustrowana przykładami, gdy tylko jest to możliwe? Czy dokumentacja jest renderowana poprawnie?

  • Czy kod jest czytelny dla człowieka? Czy jest mało nadmiarowości? Czy nazwy zmiennych powinny zostać poprawione dla przejrzystości lub spójności? Czy należy dodawać komentarze? Czy jakiekolwiek komentarze powinny zostać usunięte jako nieprzydatne lub obce?

  • Czy kod jest wydajny? Czy można go łatwo przepisać, aby działał wydajniej?

  • Czy kod jest wstecznie zgodny z poprzednimi wersjami TensorFlow?

  • Czy nowy kod doda nowe zależności od innych bibliotek?

Testuj i ulepszaj pokrycie testów

Wysokiej jakości testy jednostkowe są kamieniem węgielnym procesu rozwoju TensorFlow. W tym celu używamy obrazów Dockera. Funkcje testowe są odpowiednio nazwane i są odpowiedzialne za sprawdzanie poprawności algorytmów oraz różnych opcji kodu.

Wszystkie nowe funkcje i poprawki błędów muszą obejmować odpowiednie pokrycie testami. Z zadowoleniem przyjmujemy również wkład w nowe przypadki testowe lub ulepszenia istniejących testów. Jeśli odkryjesz, że nasze istniejące testy nie są kompletne - nawet jeśli obecnie nie powoduje to błędu - zgłoś problem i, jeśli to możliwe, poproś o ściągnięcie.

Aby uzyskać szczegółowe informacje na temat procedur testowania w każdym projekcie TensorFlow, zobacz README.md i CONTRIBUTING.md w repozytorium projektu w serwisie GitHub.

Szczególne obawy dotyczące odpowiedniego testowania :

  • Czy każda funkcja i klasa publiczna są testowane?
  • Czy przetestowano rozsądny zestaw parametrów , ich wartości, typy wartości i kombinacje?
  • Czy testy potwierdzają, że kod jest poprawny i robi to, co zgodnie z dokumentacją ma robić?
  • Jeśli zmiana jest naprawą błędu, czy obejmuje test bez regresji ?
  • Czy testy przechodzą kompilację ciągłej integracji ?
  • Czy testy obejmują każdą linię kodu? Jeśli nie, czy wyjątki są rozsądne i wyraźne?

Jeśli napotkasz jakieś problemy, pomyśl o pomocy współautorowi w zrozumieniu tych problemów i ich rozwiązaniu.

Popraw komunikaty o błędach lub dzienniki

Z zadowoleniem przyjmujemy wkład, który poprawia komunikaty o błędach i logowanie.

Przepływ pracy wkładu

Wkład w kod - poprawki błędów, nowy rozwój, ulepszenia testów - wszystko odbywa się zgodnie z przepływem pracy skoncentrowanym na GitHub. Aby wziąć udział w rozwoju TensorFlow, załóż konto GitHub. Następnie:

  1. Rozwidlaj repozytorium, nad którym planujesz pracować. Przejdź do strony repozytorium projektu i użyj przycisku Rozwidlenie . Spowoduje to utworzenie kopii repozytorium pod Twoją nazwą użytkownika. (Aby uzyskać więcej informacji na temat rozwidlania repozytorium, zobacz ten przewodnik ).

  2. Sklonuj repozytorium do systemu lokalnego.

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

  3. Utwórz nowy oddział, aby zatrzymać swoją pracę.

    $ git checkout -b new-branch-name

  4. Pracuj nad nowym kodem. Pisz i uruchamiaj testy.

  5. Zatwierdź zmiany.

    $ git add -A

    $ git commit -m "commit message here"

  6. Prześlij zmiany do repozytorium GitHub.

    $ git push origin branch-name

  7. Otwórz żądanie ściągnięcia (PR). Przejdź do oryginalnego repozytorium projektu w serwisie GitHub. Pojawi się komunikat o ostatnio wypchniętej gałęzi z pytaniem, czy chcesz otworzyć żądanie ściągnięcia. Postępuj zgodnie z wyświetlanymi instrukcjami, porównaj między repozytoriami i prześlij żądanie ściągnięcia. Spowoduje to wysłanie wiadomości e-mail do zatwierdzających. Możesz rozważyć wysłanie wiadomości e-mail na listę mailingową, aby uzyskać lepszą widoczność. (Aby uzyskać więcej informacji, zobacz przewodnik GitHub dotyczący żądań PR .

  8. Opiekunowie i inni współpracownicy sprawdzą Twój PR . Proszę wziąć udział w rozmowie i spróbować wprowadzić żądane zmiany . Po zatwierdzeniu PR kod zostanie scalony.

Przed przystąpieniem do pracy nad kolejnym wkładem upewnij się, że lokalne repozytorium jest aktualne.

  1. Skonfiguruj pilota zdalnego sterowania. (Musisz to zrobić tylko raz na projekt, nie za każdym razem).

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

  2. Przełącz się na lokalną gałąź główną.

    $ git checkout master

  3. Wyciągnij zmiany z wyższego poziomu.

    $ git pull upstream master

  4. Prześlij zmiany na swoje konto GitHub. (Opcjonalnie, ale dobra praktyka).

    $ git push origin master

  5. Utwórz nowy oddział, jeśli zaczynasz nową pracę.

    $ git checkout -b branch-name

Dodatkowe zasoby git i GitHub:

Lista kontrolna współautorów