開始使用免費開始

將資料切分為訓練集與驗證集

你已經學到,只有訓練資料而沒有驗證資料集會導致「過度擬合」(overfitting)。一旦發生過度擬合,模型在訓練輸入上的預測會非常好,但對看不見的新資料泛化得很差。這代表模型實用性不高,因為它無法泛化。為了避免這個問題,你可以使用驗證資料集。

在本練習中,你會從手上的資料集建立訓練集與驗證集(也就是 en_text 含有 1000 句英文,fr_text 含有對應的 1000 句法文)。你將使用其中 80% 作為訓練資料,20% 作為驗證資料。

本練習屬於課程

使用 Keras 進行機器翻譯

檢視課程

練習說明

  • 使用 np.arange() 定義一個索引序列,從 0 開始,長度為 en_text 的大小。
  • valid_inds 定義為該索引序列最後 valid_size 個索引。
  • 定義 tr_entf_fr,分別包含在 train_inds 這些索引位置上的句子,來源為 en_textfr_text 串列。
  • 定義 v_env_fr,分別包含在 valid_inds 這些索引位置上的句子,來源為 en_textfr_text 串列。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

train_size, valid_size = 800, 200
# Define a sequence of indices from 0 to len(en_text)
inds = ____.____(len(_____))
np.random.shuffle(inds)
train_inds = inds[:train_size]
# Define valid_inds: last valid_size indices
valid_inds = inds[____]
# Define tr_en (train EN sentences) and tr_fr (train FR sentences)
tr_en = [en_text[____] for ti in ____]
tr_fr = [____ for ti in ____]
# Define v_en (valid EN sentences) and v_fr (valid FR sentences)
v_en = [____ for vi in valid_inds]
v_fr = [____ for vi in ____]
print('Training (EN):\n', tr_en[:3], '\nTraining (FR):\n', tr_fr[:3])
print('\nValid (EN):\n', v_en[:3], '\nValid (FR):\n', v_fr[:3])
編輯並執行程式碼