
«швейцарский армейский нож» для машинного обучения
ktrain.text.qa.generative_qa . Наш пакет onprem.llm должен использоваться для задач с генеративными вопросами. См. Пример ноутбука.Ktrain - это легкая обертка для Tensorflow Keras (и других библиотек) библиотеки глубокого обучения, чтобы помочь создавать, тренировать и развернуть нейронные сети и другие модели машинного обучения. Вдохновленные рамками ML Framework, такими как Fastai и Ludwig , Ktrain предназначен для того, чтобы сделать глубокое обучение и ИИ более доступным и легче применять как для новичков, так и для опытных практикующих. При только нескольких строках кода, Ktrain позволяет легко и быстро:
Используйте быстрые, точные и простые в использовании предварительно зарегистрированные модели для text , vision , graph и tabular данных:
text данные:vision :graph данные:tabular данные:Оцените оптимальную скорость обучения для вашей модели, учитывая ваши данные, используя поиск скорости обучения
Использовать графики ставки обучения, такие как треугольная политика, политика 1Cycle и SGDR для эффективной минимизации потерь и улучшения обобщения
Создайте текстовые классификаторы для любого языка (например, анализ арабских настроений с BERT, анализ китайских настроений с NBSVM)
Легко тренировать модели NER для любого языка (например, голландский NER)
Загрузить и предварительные данные текста и изображения из различных форматов
Проверьте точки данных, которые были неправильно классифицированы, и предоставьте объяснения, чтобы помочь улучшить вашу модель
Используйте простой API прогнозирования для сохранения и развертывания как моделей, так и этапов обработки данных для прогнозирования новых необработанных данных
Встроенная поддержка экспорта моделей в ONNX и Tensorflow Lite (см. Пример ноутбука для получения дополнительной информации)
Пожалуйста, смотрите следующие учебные записные книжки для руководства о том, как использовать Ktrain в ваших проектах:
Некоторые учебники в блоге и другие гиды о Ktrain показаны ниже:
Ktrain: легкая обертка для Keras, чтобы помочь обучать нейронные сети
Берт текстовая классификация в 3 строках кода
Текстовая классификация с обнимающими трансформаторами лица в Tensorflow 2 (без слез)
Создайте систему с открытым доменом, отвечающий на вопрос с BERT в 3 строках кода
Manetuning Bert Использование Ktrain для классификации твитов катастрофы Hamiz Ahmed
Индонезийские примеры NLP с Ktrain Сэнди Хосаси
Использование Ktrain в Google Colab ? Смотрите эти примеры Colab:
transformer WordТакие задачи, как классификация текста и классификация изображений, могут быть легко выполнены с помощью лишь нескольких строк кода.
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 ()) Убедитесь, что PIP в курсе: pip install -U pip
Установите TensorFlow 2, если он еще не установлен (например, pip install tensorflow ).
Установите Ktrain : pip install ktrain
Если использовать tensorflow>=2.16 :
pip install tf_kerasTF_USE_LEGACY_KERAS TRUE перед импортом KtrainВыше приведено все, что вам нужно в системах Linux и облачных вычислительных средах, таких как Google Colab и AWS EC2. Если вы используете Ktrain на компьютере Windows , вы можете следовать этим более подробным инструкциям, которые включают некоторые дополнительные шаги.
tensorflow>=2.11 , вы должны использовать только устаревшие оптимизаторы, такие как tf.keras.optimizers.legacy.Adam . Новый класс tf.keras.optimizers.Optimizer базовый класс в настоящее время не поддерживается. Например, при использовании TensorFlow 2.11 и выше, пожалуйста, используйте tf.keras.optimzers.legacy.Adam() вместо строки "adam" в model.compile . Ktrain делает это автоматически при использовании необоснованных моделей (например, модели из библиотеки transformers ).tf_keras , а также установить переменную среды TF_USE_LEGACY_KERAS=True перед импортом KTRAIN (например, добавьте export TF_USE_LEGACY_KERAS=1 в .bashrc или добавить os.environ['TF_USE_LEGACY_KERAS']="1" и т. Д. eli5 и stellargraph , чтобы поддержать 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 намеренно прикрепляется к более низкой версии трансформаторов , чтобы включить поддержку более старых версий Tensorflow. Если вам нужна более новая версия transformers , для вас обычно безопасно обновить transformers , если вы делаете это после установки Ktrain .
По состоянию на v0.30.x установка Tensorflow является необязательной и требуется только в случае обучения нейронных сетей. Хотя Ktrain использует TensorFlow для обучения нейронной сети, он также включает в себя различные полезные предварительно предварительно проведенные модели питор и модели Sklearn, которые можно использовать из ящика без установки TensorFlow, как обобщено в этой таблице:
| Особенность | Tensorflow | Пирог | Sklearn |
|---|---|---|---|
| Обучение любой нейронной сети (например, классификация текста или изображений) | ✅ | ||
| Сквозные вопросы, отвечающие вопросам (предварительно проведенный) | ✅ | ✅ | |
| Извлечение информации на основе QA (предварительное) | ✅ | ✅ | |
| Классификация с нулевым выстрелом (предварительно) | ✅ | ||
| Перевод языка (предварительно) | ✅ | ||
| Суммирование (предварительно подготовленная) | ✅ | ||
| Транскрипция речи (предварительно) | ✅ | ||
| Подпись изображения (предварительно) | ✅ | ||
| Обнаружение объекта (предварительно) | ✅ | ||
| Анализ настроений (предварительно) | ✅ | ||
| Generativeai (предложения-трансформаторы) | ✅ | ||
| Тематическое моделирование (Sklearn) | ✅ | ||
| Извлечение Keyphrase (TextBlob/Nltk/Sklearn) | ✅ |
Как отмечалось выше, сквозные доклады и извлечение информации и извлечение информации в Ktrain могут использоваться либо с TensorFlow (с помощью framework='tf' ) или Pytorch (с использованием framework='pt' ).
Пожалуйста, цитируйте следующую статью при использовании 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},
}
Создатель: Арун С. Майя
Электронная почта: arun [at] maiya [dot] net