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:
- Rozwiązanie nr 1: Zainstaluj podsystem Windows dla systemu Linux (WSL) na komputerze z systemem Windows i postępuj zgodnie z instrukcjami systemu Linux.
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.