
una "navaja suiza" para el aprendizaje automático
ktrain.text.qa.generative_qa . Nuestro paquete ONPREM.LLM debe usarse para tareas generativas de preguntas sobre preguntas. Ver Notebook de ejemplo.Ktrain es un envoltorio ligero para la biblioteca de aprendizaje profundo TensorFlow Keras (y otras bibliotecas) para ayudar a construir, entrenar y desplegar redes neuronales y otros modelos de aprendizaje automático. Inspirado en las extensiones del marco ML como Fastai y Ludwig , Ktrain está diseñado para hacer que el aprendizaje profundo y la IA sean más accesibles y más fáciles de solicitar tanto para los recién llegados como para los profesionales experimentados. Con solo unas pocas líneas de código, Ktrain le permite fácil y rápidamente:
Emplee modelos pre-capitanados rápidos, precisos y fáciles de usar para datos de text , vision , graph y tabular :
text :vision :graph :tabular :Estima una tasa de aprendizaje óptima para su modelo dados sus datos utilizando un buscador de tasa de aprendizaje
Utilice los horarios de tarifas de aprendizaje, como la política triangular, la política de 1 ciclo y el SGDR para minimizar efectivamente la pérdida y mejorar la generalización.
Construya clasificadores de texto para cualquier idioma (por ejemplo, análisis de sentimientos en árabe con Bert, análisis de sentimientos chinos con NBSVM)
Capacitar fácilmente a los modelos NER para cualquier idioma (por ejemplo, holandés ner)
Cargar y preprocesar datos de texto e imágenes de una variedad de formatos
Inspeccione los puntos de datos que fueron clasificados erróneos y proporcionar explicaciones para ayudar a mejorar su modelo
Aproveche una API de predicción simple para guardar e implementar los modelos y los pasos de preprocesamiento de datos para hacer predicciones sobre los nuevos datos sin procesar
Soporte incorporado para exportar modelos a ONNX y TensorFlow Lite (consulte el cuaderno de ejemplo para obtener más información)
Consulte los siguientes cuadernos de tutoriales para obtener una guía sobre cómo usar Ktrain en sus proyectos:
A continuación se muestran algunos tutoriales de blog y otras guías sobre Ktrain :
Ktrain: un envoltorio ligero para Keras para ayudar a entrenar redes neuronales
Clasificación de texto de Bert en 3 líneas de código
Clasificación de texto con transformadores de cara abrazados en TensorFlow 2 (sin lágrimas)
Construya un sistema de preguntas de preguntas abiertas con Bert en 3 líneas de código
Fineting Bert usando Ktrain para la clasificación de tweets de desastre por Hamiz Ahmed
Ejemplos de la PNL indonesia con Ktrain de Sandy Khosasi
¿Usando Ktrain en Google Colab ? Vea estos ejemplos de Colab:
transformerTareas como la clasificación de texto y la clasificación de imágenes se pueden lograr fácilmente con solo unas pocas líneas de código.
import ktrain
from ktrain import text as txt
# load data
( x_train , y_train ), ( x_test , y_test ), preproc = txt . texts_from_folder ( 'data/aclImdb' , maxlen = 500 ,
preprocess_mode = 'bert' ,
train_test_names = [ 'train' , 'test' ],
classes = [ 'pos' , 'neg' ])
# load model
model = txt . text_classifier ( 'bert' , ( x_train , y_train ), preproc = preproc )
# wrap model and data in ktrain.Learner object
learner = ktrain . get_learner ( model ,
train_data = ( x_train , y_train ),
val_data = ( x_test , y_test ),
batch_size = 6 )
# find good learning rate
learner . lr_find () # briefly simulate training to find good learning rate
learner . lr_plot () # visually identify best learning rate
# train using 1cycle learning rate schedule for 3 epochs
learner . fit_onecycle ( 2e-5 , 3 ) import ktrain
from ktrain import vision as vis
# load data
( train_data , val_data , preproc ) = vis . images_from_folder (
datadir = 'data/dogscats' ,
data_aug = vis . get_data_aug ( horizontal_flip = True ),
train_test_names = [ 'train' , 'valid' ],
target_size = ( 224 , 224 ), color_mode = 'rgb' )
# load model
model = vis . image_classifier ( 'pretrained_resnet50' , train_data , val_data , freeze_layers = 80 )
# wrap model and data in ktrain.Learner object
learner = ktrain . get_learner ( model = model , train_data = train_data , val_data = val_data ,
workers = 8 , use_multiprocessing = False , batch_size = 64 )
# find good learning rate
learner . lr_find () # briefly simulate training to find good learning rate
learner . lr_plot () # visually identify best learning rate
# train using triangular policy with ModelCheckpoint and implicit ReduceLROnPlateau and EarlyStopping
learner . autofit ( 1e-4 , checkpoint_folder = '/tmp/saved_weights' ) import ktrain
from ktrain import text as txt
# load data
( trn , val , preproc ) = txt . entities_from_txt ( 'data/ner_dataset.csv' ,
sentence_column = 'Sentence #' ,
word_column = 'Word' ,
tag_column = 'Tag' ,
data_format = 'gmb' ,
use_char = True ) # enable character embeddings
# load model
model = txt . sequence_tagger ( 'bilstm-crf' , preproc )
# wrap model and data in ktrain.Learner object
learner = ktrain . get_learner ( model , train_data = trn , val_data = val )
# conventional training for 1 epoch using a learning rate of 0.001 (Keras default for Adam optmizer)
learner . fit ( 1e-3 , 1 ) import ktrain
from ktrain import graph as gr
# load data with supervision ratio of 10%
( trn , val , preproc ) = gr . graph_nodes_from_csv (
'cora.content' , # node attributes/labels
'cora.cites' , # edge list
sample_size = 20 ,
holdout_pct = None ,
holdout_for_inductive = False ,
train_pct = 0.1 , sep = ' t ' )
# load model
model = gr . graph_node_classifier ( 'graphsage' , trn )
# wrap model and data in ktrain.Learner object
learner = ktrain . get_learner ( model , train_data = trn , val_data = val , batch_size = 64 )
# find good learning rate
learner . lr_find ( max_epochs = 100 ) # briefly simulate training to find good learning rate
learner . lr_plot () # visually identify best learning rate
# train using triangular policy with ModelCheckpoint and implicit ReduceLROnPlateau and EarlyStopping
learner . autofit ( 0.01 , checkpoint_folder = '/tmp/saved_weights' ) # load text data
categories = [ 'alt.atheism' , 'soc.religion.christian' , 'comp.graphics' , 'sci.med' ]
from sklearn . datasets import fetch_20newsgroups
train_b = fetch_20newsgroups ( subset = 'train' , categories = categories , shuffle = True )
test_b = fetch_20newsgroups ( subset = 'test' , categories = categories , shuffle = True )
( x_train , y_train ) = ( train_b . data , train_b . target )
( x_test , y_test ) = ( test_b . data , test_b . target )
# build, train, and validate model (Transformer is wrapper around transformers library)
import ktrain
from ktrain import text
MODEL_NAME = 'distilbert-base-uncased'
t = text . Transformer ( MODEL_NAME , maxlen = 500 , class_names = train_b . target_names )
trn = t . preprocess_train ( x_train , y_train )
val = t . preprocess_test ( x_test , y_test )
model = t . get_classifier ()
learner = ktrain . get_learner ( model , train_data = trn , val_data = val , batch_size = 6 )
learner . fit_onecycle ( 5e-5 , 4 )
learner . validate ( class_names = t . get_classes ()) # class_names must be string values
# Output from learner.validate()
# precision recall f1-score support
#
# alt.atheism 0.92 0.93 0.93 319
# comp.graphics 0.97 0.97 0.97 389
# sci.med 0.97 0.95 0.96 396
#soc.religion.christian 0.96 0.96 0.96 398
#
# accuracy 0.96 1502
# macro avg 0.95 0.96 0.95 1502
# weighted avg 0.96 0.96 0.96 1502 import ktrain
from ktrain import tabular
import pandas as pd
train_df = pd . read_csv ( 'train.csv' , index_col = 0 )
train_df = train_df . drop ([ 'Name' , 'Ticket' , 'Cabin' ], 1 )
trn , val , preproc = tabular . tabular_from_df ( train_df , label_columns = [ 'Survived' ], random_state = 42 )
learner = ktrain . get_learner ( tabular . tabular_classifier ( 'mlp' , trn ), train_data = trn , val_data = val )
learner . lr_find ( show_plot = True , max_epochs = 5 ) # estimate learning rate
learner . fit_onecycle ( 5e-3 , 10 )
# evaluate held-out labeled test set
tst = preproc . preprocess_test ( pd . read_csv ( 'heldout.csv' , index_col = 0 ))
learner . evaluate ( tst , class_names = preproc . get_classes ()) Asegúrese de que PIP esté actualizado con: pip install -U pip
Instale TensorFlow 2 si aún no está instalado (por ejemplo, pip install tensorflow ).
Instalar ktrain : pip install ktrain
Si usa tensorflow>=2.16 :
pip install tf_kerasTF_USE_LEGACY_KERAS en verdadero antes de importar ktrainLo anterior debe ser todo lo que necesita en los sistemas Linux y los entornos de computación en la nube como Google Colab y AWS EC2. Si está utilizando ktrain en una computadora de Windows , puede seguir estas instrucciones más detalladas que incluyen algunos pasos adicionales.
tensorflow>=2.11 , solo debe usar optimizadores heredados como tf.keras.optimizers.legacy.Adam . La nueva clase de base tf.keras.optimizers.Optimizer no es compatible en este momento. Por ejemplo, cuando se use TensorFlow 2.11 y arriba, use tf.keras.optimzers.legacy.Adam() en lugar de la cadena "adam" en model.compile . Ktrain lo hace automáticamente cuando se usa modelos listos para usar (por ejemplo, modelos de la biblioteca transformers ).tf_keras y también establecer la variable de entorno TF_USE_LEGACY_KERAS=True antes de importar ktrain (eg, agregar export TF_USE_LEGACY_KERAS=1 en .bashrc o agregar os.environ['TF_USE_LEGACY_KERAS']="1" , etc., etc. eli5 y stellargraph para admitir TensorFlow2). # for graph module:
pip install https : // github . com / amaiya / stellargraph / archive / refs / heads / no_tf_dep_082 . zip
# for text.TextPredictor.explain and vision.ImagePredictor.explain:
pip install https : // github . com / amaiya / eli5 - tf / archive / refs / heads / master . zip
# for tabular.TabularPredictor.explain:
pip install shap
# for text.zsl (ZeroShotClassifier), text.summarization, text.translation, text.speech:
pip install torch
# for text.speech:
pip install librosa
# for tabular.causal_inference_model:
pip install causalnlp
# for text.summarization.core.LexRankSummarizer:
pip install sumy
# for text.kw.KeywordExtractor
pip install textblob
# for text.generative_ai
pip install onprem KTrain se mueve deliberadamente a una versión inferior de Transformers para incluir soporte para versiones anteriores de TensorFlow. Si necesita una versión más nueva de transformers , generalmente es seguro para usted actualizar transformers , siempre que lo haga después de instalar ktrain .
A partir de V0.30.X, la instalación de TensorFlow es opcional y solo se requiere si capacita redes neuronales. Aunque Ktrain utiliza TensorFlow para el entrenamiento de la red neuronal, también incluye una variedad de modelos Pytorch previos a la aparición y modelos Sklearn, que se pueden usar fuera de la caja sin tener instalado TensorFlow, como se resume en esta tabla:
| Característica | Flujo tensor | Pytorch | Sklearn |
|---|---|---|---|
| Capacitación de cualquier red neuronal (por ejemplo, clasificación de texto o imagen) | ✅ | ||
| Pregunta de extremo a extremo (previamente) | ✅ | ✅ | |
| Extracción de información basada en el control de calidad (previamente) | ✅ | ✅ | |
| Clasificación de disparo cero (previamente) | ✅ | ||
| Traducción del idioma (antes del aparato) | ✅ | ||
| Resumen (previado a la aparición) | ✅ | ||
| Transcripción del habla (previamente) | ✅ | ||
| Subtitulación de imágenes (previamente) | ✅ | ||
| Detección de objetos (pretranada) | ✅ | ||
| Análisis de sentimientos (previamente) | ✅ | ||
| GenerativeAi (transformadores de oraciones) | ✅ | ||
| Modelado de temas (Sklearn) | ✅ | ||
| Extracción de frase de teclas (TextBlob/NLTK/Sklearn) | ✅ |
Como se señaló anteriormente, la respuesta de pregunta de extremo a extremo y la extracción de información en Ktrain se pueden usar con TensorFlow (usando framework='tf' ) o Pytorch (usando framework='pt' ).
Cite el siguiente documento cuando use ktrain :
@article{maiya2020ktrain,
title={ktrain: A Low-Code Library for Augmented Machine Learning},
author={Arun S. Maiya},
year={2020},
eprint={2004.10703},
archivePrefix={arXiv},
primaryClass={cs.LG},
journal={arXiv preprint arXiv:2004.10703},
}
Creador: Arun S. Maiya
Correo electrónico: Arun [at] maiya [dot] net