更新於 2024/08/19閱讀時間約 2 分鐘

AI說書 - 從0開始 - 139 | BERT 微調之訓練驗證集切割

我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。


現在我們要讓輸入資料的長度均保持一致,不夠長的會執行 Padding,在資料集中,最長者為 47,為了展示一般性,我們設定長度為 128,程式為:

MAX_LEN = 128

input_ids = [tokenizer.convert_tokens_to_ids(x) for x in tokenized_texts]
input_ids = pad_sequences(input_ids, maxlen = MAX_LEN, dtype = "long", truncating = "post", padding = "post") # pre or post


接著要執行 Mask 動作,然而我們剛剛有把句子執行 Padding,進行補 0 的動作,我們不希望在這些 0 的位置進行 Mask,於是有以下程式:

attention_masks = []

for seq in input_ids:
seq_mask = [float(i > 0) for i in seq]
attention_masks.append(seq_mask)


資料也需要切割成訓練集和驗證集,程式如下:

train_inputs, validation_inputs, train_labels, validation_labels = train_test_split(input_ids, labels, random_state = 2018, test_size = 0.1)
train_masks, validation_masks, _, _ = train_test_split(attention_masks, input_ids, random_state = 2018, test_size = 0.1)
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.