
機械学習のための「スイスアーミーナイフ」
ktrain.text.qa.generative_qaモジュールが削除されます。 ONPREM.LLMパッケージは、生成的な質問回答タスクに使用する必要があります。ノートブックの例を参照してください。Ktrainは、深い学習ライブラリTensorflow Keras(およびその他のライブラリ)の軽量ラッパーであり、ニューラルネットワークやその他の機械学習モデルの構築、訓練、展開を支援しています。 FastaiやLudwigなどのMLフレームワーク拡張機能に触発されたKtrainは、深い学習とAIがよりアクセスしやすく、新人と経験豊富な開業医の両方に簡単に適用できるように設計されています。コードの数行しかない場合、 Ktrainは簡単かつ迅速にできます。
text 、 vision 、 graph 、およびtabularデータのために、高速で正確で使いやすい事前に消費されたモデルを採用します。
textデータ:visionデータ:graphデータ:tabularデータ:学習率ファインダーを使用してデータを考慮して、モデルの最適な学習レートを推定します
三角形のポリシー、1サイクルポリシー、SGDRなどの学習レートスケジュールを利用して、損失を効果的に最小限に抑え、一般化を改善する
あらゆる言語のテキスト分類子を構築する(例えば、BERTによるアラビア語の感情分析、NBSVMによる中国の感情分析)
あらゆる言語のモデルを簡単にトレーニングする(例:オランダのネル)
さまざまな形式のテキストと画像データをロードしてプリセスする
誤分類されたデータポイントを検査し、モデルの改善に役立つ説明を提供します
モデルとデータ処理手順の両方を保存および展開するための簡単な予測APIを活用して、新しい生データで予測を行う
ONNXおよびTensorflowライトへのモデルのエクスポートの組み込みサポート(詳細については、ノートブックの例を参照)
プロジェクトでKtrainの使用方法に関するガイドについては、次のチュートリアルノートブックをご覧ください。
Ktrainに関するいくつかのブログのチュートリアルやその他のガイドを以下に示します。
Ktrain:Kerasがニューラルネットワークの訓練を支援するための軽量ラッパー
3行のコードでのBERTテキスト分類
Tensorflow 2でフェイストランスを抱き締めるテキスト分類(涙なし)
3行のコードでBERTを使用してオープンドメインの質問回答システムを構築する
災害のためにKtrainを使用したFinetuning Bertハミズアーメドによる分類分類
Sandy KhosasiによるKtrainを使用したインドネシアのNLP例
Google ColabでKtrainを使用していますか?これらのコラブの例を参照してください:
transformerワード埋め込みを使用したNERの例テキスト分類や画像分類などのタスクは、わずか数行のコードで簡単に実現できます。
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 install -U pip
Tensorflow 2がまだインストールされていない場合は、 pip install tensorflow )をインストールします。
インストールKtrain : pip install ktrain
tensorflow>=2.16を使用する場合:
pip install tf_kerasTF_USE_LEGACY_KERAS ktrainをインポートする前にtrueになります上記は、Google ColabやAWS EC2などのLinux Systemsとクラウドコンピューティング環境で必要なすべてである必要があります。 WindowsコンピューターでKtrainを使用している場合は、追加の手順を含むこれらの詳細な指示に従うことができます。
tensorflow>=2.11の時点では、 tf.keras.optimizers.legacy.Adamなどのレガシーオプティマザーのみを使用する必要があります。新しいtf.keras.optimizers.Optimizerベースクラスは、現時点ではサポートされていません。たとえば、Tensorflow 2.11以降を使用する場合は、 model.compileの文字列"adam"の代わりにtf.keras.optimzers.legacy.Adam()を使用してください。 Ktrainは、すぐにボックスモデル(たとえば、 transformersライブラリのモデル)を使用するときに自動的に行います。os.environ['TF_USE_LEGACY_KERAS']="1" tf_kerasパッケージをインストールし、環境変数export TF_USE_LEGACY_KERAS=1設定する必要.bashrcありTF_USE_LEGACY_KERAS=True 。 eli5およびstellargraphライブラリのフォークバージョンを使用していることに注意してください。) # 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の時点で、Tensorflowのインストールはオプションであり、ニューラルネットワークのトレーニングの場合にのみ必要です。 KtrainはニューラルネットワークトレーニングにTensorflowを使用していますが、この表に要約されているように、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] Net