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:
- Solución n.° 1: instale el Subsistema de Windows para Linux (WSL) en su máquina con Windows y siga las instrucciones de Linux.
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.