Preferisco YDF per nuovi progetti
YDF è la nuova libreria di Google per addestrare le foreste decisionali.
YDF estende la potenza di TF-DF, offrendo nuove funzionalità, un'API semplificata, tempi di formazione più rapidi, documentazione aggiornata e compatibilità migliorata con le librerie ML più diffuse.
Alcuni dei problemi menzionati di seguito sono stati risolti in YDF.
Il pacchetto Windows Pip non è disponibile
TensorFlow Decision Forests non è ancora disponibile come pacchetto Windows Pip.
Soluzioni alternative:
- Soluzione n. 1: installa il sottosistema Windows per Linux (WSL) sul tuo computer Windows e segui le istruzioni di Linux.
Incompatibilità con Keras 3
La compatibilità con Keras 3 non è ancora implementata. Utilizza tf_keras o una versione di TensorFlow precedente alla 2.16. In alternativa, utilizzare ydf .
Non testato per Conda
Anche se TF-DF potrebbe funzionare con Conda, questo non è testato e al momento non manteniamo pacchetti su conda-forge.
Incompatibilità con versioni vecchie o notturne di TensorFlow
L'ABI di TensorFlow non è compatibile tra una versione e l'altra. Poiché TF-DF si basa su operazioni TensorFlow C++ personalizzate, ogni versione di TF-DF è legata a una versione specifica di TensorFlow. L'ultima versione rilasciata di TF-DF è sempre legata all'ultima versione rilasciata di TensorFlow.
Per questi motivi, la versione attuale di TF-DF potrebbe non essere compatibile con le versioni precedenti o con la build notturna di TensorFlow.
Se utilizzi versioni incompatibili di TF e TF-DF, vedrai errori criptici come:
tensorflow_decision_forests/tensorflow/ops/training/training.so: undefined symbol: _ZN10tensorflow11GetNodeAttrERKNS_9AttrSliceEN4absl14lts_2020_09_2311string_viewEPSs
- Utilizza la versione di TF-DF compatibile con la tua versione di TensorFlow.
Tabella di compatibilità
La tabella seguente mostra la compatibilità tra tensorflow_decision_forests
e le sue dipendenze:
tensorflow_decision_forests | tensoreflusso |
---|---|
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 |
- Soluzione n. 2: racchiudere la funzione di preelaborazione in un'altra funzione che ne comprime gli input.
Non tutti i modelli supportano la formazione distribuita e le strategie di distribuzione
Se non diversamente specificato, i modelli vengono addestrati su una singola macchina e non sono compatibili con le strategie di distribuzione. Ad esempio, GradientBoostedTreesModel
non supporta l'addestramento distribuito mentre DistributedGradientBoostedTreesModel
lo fa.
Soluzioni alternative:
- Utilizza un modello che supporti le strategie di distribuzione (ad esempio
DistributedGradientBoostedTreesModel
) o esegui il downsampling del set di dati in modo che si adatti a un singolo computer.
Nessun supporto per GPU/TPU.
TF-DF non supporta l'addestramento GPU o TPU. La compilazione con le istruzioni AVX, tuttavia, può velocizzare la pubblicazione.
Nessun supporto per model_to_estimator
TF-DF non implementa le API necessarie per convertire un modello addestrato/non addestrato nel formato dello stimatore.
I modelli caricati si comportano diversamente rispetto ai modelli Python.
Sebbene astratto dall'API Keras, un modello istanziato in Python (ad esempio, con tfdf.keras.RandomForestModel()
) e un modello caricato da disco (ad esempio, con tf_keras.models.load_model()
) possono comportarsi diversamente. In particolare, un modello istanziato di Python applica automaticamente le conversioni di tipo necessarie. Ad esempio, se una funzionalità float64
viene inserita in un modello che prevede una funzionalità float32
, questa conversione viene eseguita in modo implicito. Tuttavia, tale conversione non è possibile per i modelli caricati da disco. È quindi importante che i dati di training e quelli di inferenza siano sempre della stessa identica tipologia.
Sanificazione del nome della funzionalità Tensorflow
Tensorflow disinfetta i nomi delle funzionalità e potrebbe, ad esempio, convertirli in minuscolo.