
Un "couteau à armée suisse" pour l'apprentissage automatique
ktrain.text.qa.generative_qa . Notre package onprem.llm doit être utilisé pour des tâches génératrices de questions. Voir l'exemple de cahier.Ktrain est un emballage léger pour la bibliothèque de Deep Learning Tensorflow Keras (et d'autres bibliothèques) pour aider à construire, former et déployer des réseaux neuronaux et d'autres modèles d'apprentissage automatique. Inspiré par des extensions de cadre ML comme Fastai et Ludwig , Ktrain est conçu pour rendre l'apprentissage en profondeur et l'IA plus accessible et plus facile à postuler pour les nouveaux arrivants et les praticiens expérimentés. Avec seulement quelques lignes de code, Ktrain vous permet de facilement et rapidement:
Utilisez des modèles pré-recrus rapidement, précis et faciles à utiliser pour les données text , vision , graph et tabular :
text :vision :graph :tabular :Estimez un taux d'apprentissage optimal pour votre modèle compte tenu de vos données à l'aide d'un chercheur de taux d'apprentissage
Utiliser les programmes de taux d'apprentissage tels que la politique triangulaire, la politique 1Cycle et le SGDR pour minimiser efficacement la perte et améliorer la généralisation
Créer des classificateurs de texte pour n'importe quelle langue (par exemple, analyse des sentiments arabes avec Bert, analyse des sentiments chinois avec NBSVM)
former facilement les modèles NER pour n'importe quelle langue (par exemple, néerlandais NER)
Données de texte et d'image de chargement et de prétraitement provenant de divers formats
Inspectez les points de données qui ont été mal classés et fournissent des explications pour aider à améliorer votre modèle
Tirez parti d'une API de prédiction simple pour enregistrer et déployer les deux modèles et les étapes de procédure de données pour faire des prédictions sur les nouvelles données brutes
Prise en charge intégrée pour les modèles d'exportation vers ONNX et TensorFlow Lite (voir Exemple de cahier pour plus d'informations)
Veuillez consulter les cahiers de didacticiels suivants pour un guide sur la façon d'utiliser Ktrain sur vos projets:
Certains tutoriels de blog et autres guides sur Ktrain sont présentés ci-dessous:
Ktrain: un emballage léger pour Keras pour aider à former des réseaux de neurones
Classification du texte Bert en 3 lignes de code
Classification du texte avec des transformateurs de face étreintes dans TensorFlow 2 (sans larmes)
Construisez un système de réponses de questions à domaine ouvert avec Bert en 3 lignes de code
Finetuning bert en utilisant Ktrain pour la classification des tweets de catastrophe par Hamiz Ahmed
Exemples de PNL indonésiens avec Ktrain par Sandy Khosasi
Utilisation de Ktrain sur Google Colab ? Voir ces exemples de colab:
transformerDes tâches telles que la classification du texte et la classification d'images peuvent être accomplies facilement avec seulement quelques lignes de code.
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 ()) Assurez-vous que PIP est à jour avec: pip install -U pip
Installez TensorFlow 2 s'il n'est pas déjà installé (par exemple, pip install tensorflow ).
Installer ktrain : pip install ktrain
Si vous utilisez tensorflow>=2.16 :
pip install tf_kerasTF_USE_LEGACY_KERAS sur true avant d'importer ktrainCe qui précède devrait être tout ce dont vous avez besoin sur les systèmes Linux et les environnements de cloud computing comme Google Colab et AWS EC2. Si vous utilisez Ktrain sur un ordinateur Windows , vous pouvez suivre ces instructions plus détaillées qui incluent quelques étapes supplémentaires.
tensorflow>=2.11 , vous devez uniquement utiliser des optimisateurs hérités tels que tf.keras.optimizers.legacy.Adam . La nouvelle classe de base tf.keras.optimizers.Optimizer n'est pas prise en charge pour le moment. Par exemple, lorsque vous utilisez TensorFlow 2.11 et supérieur, veuillez utiliser tf.keras.optimzers.legacy.Adam() au lieu de la chaîne "adam" dans model.compile . Ktrain le fait automatiquement lors de l'utilisation de modèles prêts à l'emploi (par exemple, modèles de la bibliothèque transformers ).tf_keras et également définir la variable d'environnement TF_USE_LEGACY_KERAS=True avant d'importer Ktrain (par exemple, ajouter export TF_USE_LEGACY_KERAS=1 dans .bashrc ou ajouter os.environ['TF_USE_LEGACY_KERAS']="1" à votre. eli5 et stellargraph afin de prendre en charge 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 s'épallume délibérément à une version inférieure de Transformers pour inclure la prise en charge des anciennes versions de TensorFlow. Si vous avez besoin d'une version plus récente de transformers , il est généralement sûr pour vous de mettre à niveau transformers , tant que vous le faites après l'installation de Ktrain .
À partir de v0.30.x, l'installation de Tensorflow est facultative et n'est requise que si la formation des réseaux de neurones. Bien que Ktrain utilise TensorFlow pour la formation de réseau neuronal, il comprend également une variété de modèles Pytorch prétraités utiles et de modèles Sklearn, qui peuvent être utilisés hors de la boîte sans installer TensorFlow, comme résumé dans ce tableau:
| Fonctionnalité | Tensorflow | Pytorch | Sklearn |
|---|---|---|---|
| Formation de tout réseau neuronal (par exemple, classification de texte ou d'image) | ✅ | ||
| Les questions de question de bout en bout (pré-entraînées) | ✅ | ✅ | |
| Extraction d'informations basée sur l'AQ (pré-entraîné) | ✅ | ✅ | |
| Classification zéro-shot (pré-entraînée) | ✅ | ||
| Traduction linguistique (pré-entraînée) | ✅ | ||
| Résumé (pré-entraîné) | ✅ | ||
| Transcription de la parole (pré-entraînée) | ✅ | ||
| Sous-titrage d'image (pré-entraîné) | ✅ | ||
| Détection d'objet (pré-entraîné) | ✅ | ||
| Analyse des sentiments (pré-entraînée) | ✅ | ||
| Générativai (Transformateurs de phrases) | ✅ | ||
| Modélisation des sujets (Sklearn) | ✅ | ||
| Extraction de la phrase de clé (TextBlob / Nltk / Sklearn) | ✅ |
Comme indiqué ci-dessus, l'extraction de questions-réponses de bout en bout et d'informations dans Ktrain peut être utilisée avec TensorFlow (en utilisant framework='tf' ) ou pytorch (utilisant framework='pt' ).
Veuillez citer l'article suivant lorsque vous utilisez 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},
}
Créateur: Arun S. Maiya
Email: arun [at] Maiya [dot] net