Status: Arsip (kode disediakan apa adanya, tidak ada pembaruan yang diharapkan)
Bert-Kera
Implementasi Keras dari Google Bert (representasi encoder dua arah dari Transformers) dan Transformer Openai LM yang mampu memuat model pretrained dengan API finetuning.
UPDATE : Dengan dukungan TPU baik untuk inferensi dan pelatihan seperti Colab Notebook ini berkat @highcwu
Bagaimana cara menggunakannya?
# this is a pseudo code you can read an actual working example in tutorial.ipynb or the colab notebook
text_encoder = MyTextEncoder ( ** my_text_encoder_params ) # you create a text encoder (sentence piece and openai's bpe are included)
lm_generator = lm_generator ( text_encoder , ** lm_generator_params ) # this is essentially your data reader (single sentence and double sentence reader with masking and is_next label are included)
task_meta_datas = [ lm_task , classification_task , pos_task ] # these are your tasks (the lm_generator must generate the labels for these tasks too)
encoder_model = create_transformer ( ** encoder_params ) # or you could simply load_openai() or you could write your own encoder(BiLSTM for example)
trained_model = train_model ( encoder_model , task_meta_datas , lm_generator , ** training_params ) # it does both pretraing and finetuning
trained_model . save_weights ( 'my_awesome_model' ) # save it
model = load_model ( 'my_awesome_model' , encoder_model ) # load it later and use it!
Catatan
- Gagasan umum perpustakaan ini adalah menggunakan model pretrained Openai/Google untuk pembelajaran transfer
- Untuk melihat cara kerja model Bert, Anda dapat memeriksa buku catatan Colab ini
- Agar kompatibel dengan Bert dan OpenAi, saya harus mengambil pemesanan standar untuk kosakata, saya menggunakan OpenAi sehingga dalam fungsi pemuatan Bert ada bagian untuk mengubah pemesanan; Tapi ini adalah detail implementasi dan Anda dapat mengabaikannya!
- Memuat Model OpenAI diuji dengan TensorFlow dan Theano sebagai backend
- Memuat model Bert belum dimungkinkan pada backend theano tetapi versi TF berfungsi dan telah diuji
- Pelatihan dan penyempurnaan model tidak dimungkinkan dengan backend theano tetapi bekerja dengan baik dengan TensorFlow
- Anda dapat menggunakan data generator data dan meta tugas untuk sebagian besar tugas NLP dan Anda dapat menggunakannya dalam kerangka lain
- Ada beberapa tes unit untuk dataset dan model transformator (baca jika Anda tidak yakin tentang sesuatu)
- Bahkan sulit saya tidak suka kode keras saya, itu bisa dibaca :)
- Anda dapat menggunakan encoder lain, seperti LSTM atau BiQRNN untuk pelatihan jika Anda mengikuti kontrak model (memiliki input dan output yang sama dengan encoder transformator)
- Mengapa saya harus menggunakan ini alih-alih rilis resmi?, Pertama yang satu ini ada di keras dan kedua memiliki abstraksi yang bagus atas tugas-tingkat dan tugas NLP tingkat kalimat yang merupakan kerangka kerja independen
- Mengapa Keras? Versi Pytorch sudah keluar! (BTW Anda dapat menggunakan generator data ini untuk melatih dan menyempurnakan model itu juga)
- Saya sangat menyarankan Anda untuk membaca tutorial.
Konsep Kode Penting
- Tugas: Ada dua tugas umum, tugas tingkat kalimat (seperti is_next dan analisis sentimen), dan tugas tingkat token (seperti POS dan NER)
- Kalimat: Kalimat mewakili contoh dengan label dan segalanya, untuk setiap tugas itu memberikan target (satu untuk tugas tingkat kalimat dan label per token untuk tugas tingkat token) dan topeng, untuk tingkat token yang kita butuhkan untuk tidak hanya mengabaikan pound -pound -level yang ada di atas). paepr)
- Taskumeweatscheduler: Untuk pelatihan kami mungkin ingin memulai dengan pemodelan bahasa dan dengan lancar pindah ke klasifikasi, mereka dapat dengan mudah diimplementasikan dengan kelas ini
- perhatian_mask: Dengan ini Anda dapat 1. Buat model Anda kausal 2.Ingnore paddings 3. Lakukan ide gila Anda: D
- Special_tokens: pad, start, end, pembatas, topeng
Kepemilikan
Neiron