Problemi noti

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:

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.