Znane problemy

Preferuj YDF w przypadku nowych projektów

YDF to nowa biblioteka Google do uczenia lasów decyzyjnych.

YDF rozszerza możliwości TF-DF, oferując nowe funkcje, uproszczone API, krótszy czas szkolenia, zaktualizowaną dokumentację i zwiększoną kompatybilność z popularnymi bibliotekami ML.

Niektóre z problemów wymienionych poniżej zostały naprawione w YDF.

Pakiet Windows Pip nie jest dostępny

Lasy decyzyjne TensorFlow nie są jeszcze dostępne jako pakiet Windows Pip.

Obejścia:

Niekompatybilność z Kerasem 3

Zgodność z Keras 3 nie została jeszcze zaimplementowana. Użyj wersji tf_keras lub TensorFlow starszej niż 2.16. Alternatywnie użyj ydf .

Nietestowany pod kątem Condy

Chociaż TF-DF może współpracować z Condą, nie jest to testowane i obecnie nie utrzymujemy pakietów na conda-forge.

Niekompatybilność ze starymi lub nocnymi wersjami TensorFlow

ABI TensorFlow nie jest kompatybilne pomiędzy wersjami. Ponieważ TF-DF opiera się na niestandardowych operacjach TensorFlow C++, każda wersja TF-DF jest powiązana z konkretną wersją TensorFlow. Ostatnia wydana wersja TF-DF jest zawsze powiązana z ostatnią wydaną wersją TensorFlow.

Z tych powodów bieżąca wersja TF-DF może nie być kompatybilna ze starszymi wersjami lub z nocną wersją TensorFlow.

Jeśli używasz niekompatybilnych wersji TF i TF-DF, zobaczysz tajemnicze błędy, takie jak:

tensorflow_decision_forests/tensorflow/ops/training/training.so: undefined symbol: _ZN10tensorflow11GetNodeAttrERKNS_9AttrSliceEN4absl14lts_2020_09_2311string_viewEPSs
  • Użyj wersji TF-DF, która jest kompatybilna z Twoją wersją TensorFlow.

Tabela kompatybilności

Poniższa tabela przedstawia zgodność pomiędzy tensorflow_decision_forests i jego zależnościami:

tensorflow_decision_forests przepływ tensorowy
1.11.0 2.18.0
1.10.0 2.17.0
1.9.2 2.16.2
1.9.1 2.16.1
1.9.0 2.16.1
1.8.0 - 1.8.1 2.15.0
1.6.0 - 1.7.0 2.14.0
1.5.0 2.13.0
1.3.0 - 1.4.0 2.12.0
1.1.0 - 1.2.0 2.11.0
1.0.0 - 1.0.1 2.10.0 - 2.10.1
0.2.6 - 0.2.7 2.9.1
0.2.5 2.9
0.2.4 2.8
0.2.1 - 0.2.3 2.7
0.1.9 - 0.2.0 2.6
0.1.1 - 0.1.8 2.5
0.1.0 2.4
  • Rozwiązanie nr 2: Zawiń funkcję przetwarzania wstępnego w inną funkcję, która ściska jej dane wejściowe.

Nie wszystkie modele obsługują szkolenia rozproszone i strategie dystrybucji

O ile nie określono inaczej, modele są trenowane na jednej maszynie i nie są zgodne ze strategiami dystrybucji. Na przykład GradientBoostedTreesModel nie obsługuje szkolenia rozproszonego, podczas gdy DistributedGradientBoostedTreesModel tak.

Obejścia:

  • Użyj modelu obsługującego strategie dystrybucji (np. DistributedGradientBoostedTreesModel ) lub próbkuj zbiór danych w taki sposób, aby zmieścił się na jednej maszynie.

Brak wsparcia dla GPU/TPU.

TF-DF nie obsługuje treningu GPU ani TPU. Kompilacja z instrukcjami AVX może jednak przyspieszyć wyświetlanie.

Brak obsługi model_to_estimator

TF-DF nie implementuje interfejsów API wymaganych do konwersji przeszkolonego/niewyszkolonego modelu do formatu estymatora.

Załadowane modele zachowują się inaczej niż modele Pythona.

Model utworzony w Pythonie (np. za pomocą tfdf.keras.RandomForestModel() ) i model załadowany z dysku (np. za pomocą tf_keras.models.load_model() ) może zachowywać się inaczej, chociaż jest abstrahowany przez API Keras. Warto zauważyć, że model utworzony w języku Python automatycznie stosuje niezbędne konwersje typów. Na przykład, jeśli funkcja float64 jest podawana do modelu oczekującego funkcji float32 , ta konwersja jest wykonywana niejawnie. Jednak taka konwersja nie jest możliwa dla modeli ładowanych z dysku. Dlatego ważne jest, aby dane uczące i dane wnioskowane zawsze były dokładnie tego samego typu.

Oczyszczanie nazw funkcji Tensorflow

Tensorflow oczyszcza nazwy funkcji i może na przykład konwertować je na małe litery.