Problemas conocidos

Prefiere YDF para nuevos proyectos

YDF es la nueva biblioteca de Google para entrenar Bosques de Decisión.

YDF amplía el poder de TF-DF al ofrecer nuevas funciones, una API simplificada, tiempos de capacitación más rápidos, documentación actualizada y compatibilidad mejorada con bibliotecas de aprendizaje automático populares.

Algunos de los problemas mencionados a continuación se solucionan en YDF.

El paquete Windows Pip no está disponible

TensorFlow Decision Forests aún no está disponible como paquete Windows Pip.

Soluciones alternativas:

Incompatibilidad con Keras 3

La compatibilidad con Keras 3 aún no está implementada. Utilice tf_keras o una versión de TensorFlow anterior a la 2.16. Alternativamente, use ydf .

No probado para conda

Si bien TF-DF podría funcionar con Conda, esto no está probado y actualmente no mantenemos paquetes en conda-forge.

Incompatibilidad con versiones antiguas o nocturnas de TensorFlow

La ABI de TensorFlow no es compatible entre versiones. Debido a que TF-DF se basa en operaciones personalizadas de TensorFlow C++, cada versión de TF-DF está vinculada a una versión específica de TensorFlow. La última versión lanzada de TF-DF siempre está vinculada a la última versión lanzada de TensorFlow.

Por estos motivos, es posible que la versión actual de TF-DF no sea compatible con versiones anteriores o con la compilación nocturna de TensorFlow.

Si utiliza versiones incompatibles de TF y TF-DF, verá errores crípticos como:

tensorflow_decision_forests/tensorflow/ops/training/training.so: undefined symbol: _ZN10tensorflow11GetNodeAttrERKNS_9AttrSliceEN4absl14lts_2020_09_2311string_viewEPSs
  • Utilice la versión de TF-DF que sea compatible con su versión de TensorFlow.

tabla de compatibilidad

La siguiente tabla muestra la compatibilidad entre tensorflow_decision_forests y sus dependencias:

tensorflow_decision_forests flujo tensor
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
  • Solución #2: Envuelva su función de preprocesamiento en otra función que comprima sus entradas.

No todos los modelos admiten capacitación distribuida y distribuyen estrategias.

A menos que se especifique, los modelos se entrenan en una sola máquina y no son compatibles con las estrategias de distribución. Por ejemplo, GradientBoostedTreesModel no admite el entrenamiento distribuido, mientras que DistributedGradientBoostedTreesModel sí lo hace.

Soluciones alternativas:

  • Utilice un modelo que admita estrategias de distribución (por ejemplo, DistributedGradientBoostedTreesModel ), o reduzca la muestra de su conjunto de datos para que quepa en una sola máquina.

Sin soporte para GPU/TPU.

TF-DF no admite entrenamiento de GPU o TPU. Sin embargo, compilar con instrucciones AVX puede acelerar la publicación.

No hay soporte para model_to_estimator

TF-DF no implementa las API necesarias para convertir un modelo entrenado/no entrenado al formato de estimador.

Los modelos cargados se comportan de manera diferente a los modelos de Python.

Si bien está abstraído por la API de Keras, un modelo instanciado en Python (por ejemplo, con tfdf.keras.RandomForestModel() ) y un modelo cargado desde el disco (por ejemplo, con tf_keras.models.load_model() ) pueden comportarse de manera diferente. En particular, un modelo instanciado de Python aplica automáticamente las conversiones de tipos necesarias. Por ejemplo, si se envía una característica float64 a un modelo que espera una característica float32 , esta conversión se realiza implícitamente. Sin embargo, dicha conversión no es posible para los modelos cargados desde el disco. Por lo tanto, es importante que los datos de entrenamiento y los datos de inferencia sean siempre exactamente del mismo tipo.

Desinfección del nombre de la función Tensorflow

Tensorflow desinfecta los nombres de las funciones y puede, por ejemplo, convertirlos a minúsculas.