
用於機器學習的“瑞士軍刀”
ktrain.text.qa.generative_qa模塊。我們的onprem.llm軟件包應用於生成問題的提問任務。請參閱示例筆記本。Ktrain是深度學習庫Tensorflow Keras(和其他庫)的輕量級包裝,可幫助構建,培訓和部署神經網絡和其他機器學習模型。受ML框架擴展的啟發, Ktrain旨在使深度學習和AI更容易訪問,更容易申請新手和經驗豐富的從業者。只有幾行代碼, Ktrain允許您輕鬆,快速:
為text , vision , graph和tabular數據採用快速,準確且易於使用的預先使用的模型:
text數據:vision數據:graph數據:tabular數據:使用學習率查找器估計模型的最佳學習率
利用三角政策,1循環政策和SGDR等學習率時間表,以有效地最大程度地減少損失並改善概括
為任何語言構建文本分類器(例如,伯特(Bert)的阿拉伯情感分析,中文分析NBSVM)
輕鬆培訓任何語言的NER模型(例如,荷蘭語)
來自多種格式的負載和預處理文本和圖像數據
檢查錯誤分類的數據點並提供解釋以幫助改善模型
利用一個簡單的預測API來保存和部署模型和數據預處理步驟,以對新的原始數據進行預測
內置支持將模型導出到ONNX和TensorFlow Lite(有關更多信息,請參見示例筆記本)
請參閱以下教程筆記本,以獲取有關如何在項目中使用KTRAIN的指南:
一些博客教程和其他有關KTRAIN的指南如下:
Ktrain:Keras的輕量級包裝,可幫助培訓神經網絡
BERT文本分類中的3行代碼
文本分類,帶有tensorflow 2中的擁抱臉部變壓器(沒有淚水)
用BERT在3行代碼中構建一個開放域的提問系統
使用KTRAIN進行災難推文分類的Finetuning Bert由Hamiz Ahmed分類
桑迪·科薩西(Sandy Khosasi)的印尼NLP示例
在Google Colab上使用Ktrain ?請參見這些coarab示例:
transformer Word Embeddings的示例只有幾行代碼可以輕鬆完成諸如文本分類和圖像分類之類的任務。
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以上應該是您在Linux系統和雲計算環境(例如Google Colab和AWS EC2)上所需的一切。如果您在Windows計算機上使用KTRAIN ,則可以遵循這些更詳細的說明,其中包括一些額外的步驟。
tensorflow>=2.11起,您必須僅使用遺留優化器,例如tf.keras.optimizers.legacy.Adam 。此時不支持較新的tf.keras.optimizers.Optimizer Base類。例如,使用TensorFlow 2.11及以上時,請使用tf.keras.optimzers.legacy.Adam()而不是model.compile中的字符串"adam" 。 Ktrain使用開箱即用的型號時會自動執行此操作(例如,來自transformers庫中的型號)。tf_keras軟件包,並在導入KTRAIN之前設置環境變量TF_USE_LEGACY_KERAS=True (例如,添加export TF_USE_LEGACY_KERAS=1 in .bashrc in .bashrc或添加os.bashrc或添加os.environ['TF_USE_LEGACY_KERAS']="1" '''''''' ETC。)。 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 ,則通常在安裝KTRAIN之後進行升級transformers 。
從v0.30.x開始,張量安裝是可選的,僅在訓練神經網絡時才需要。儘管KTRAIN使用TensorFlow進行神經網絡培訓,但它還包括各種有用的預處理的Pytorch型號和Sklearn型號,可以在不安裝TensorFlow的情況下使用它們,如此表中總結:
| 特徵 | 張量 | Pytorch | Sklearn |
|---|---|---|---|
| 培訓任何神經網絡(例如,文本或圖像分類) | ✅ | ||
| 端到端的提問(預審計) | ✅ | ✅ | |
| 基於QA的信息提取(預審計) | ✅ | ✅ | |
| 零拍(預審計) | ✅ | ||
| 語言翻譯(審慎) | ✅ | ||
| 摘要(審慎) | ✅ | ||
| 語音轉錄(審慎) | ✅ | ||
| 圖像字幕(預審計) | ✅ | ||
| 對象檢測(審慎) | ✅ | ||
| 情感分析(審慎) | ✅ | ||
| Generativeai(句子轉換器) | ✅ | ||
| 主題建模(Sklearn) | ✅ | ||
| 鍵形提取(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 S. Maiya
電子郵件: Arun [at] Maiya [dot]網絡