多輸入和多輸出模型:使用函數式模型的一個典型場景是搭建多輸入、多輸出的模型。
考慮這樣一個模型。我們希望預測Twitter上一條新聞會被轉發和點贊多少次。模型的主要輸入是新聞本身,也就是一個詞語的序列。但我們還可以擁有額外的輸入,如新聞發布的日期等。這個模型的損失函數將由兩部分組成,輔助的損失函數評估僅僅基於新聞本身做出預測的情況,主損失函數評估基於新聞和額外信息的預測的情況,即使來自主損失函數的梯度發生彌散,來自輔助損失函數的信息也能夠訓練Embeddding和LSTM層。在模型中早點使用主要的損失函數是對於深度網絡的一個良好的正則方法。總而言之,該模型框圖如下:
用函數式模型來實現這個框圖
主要的輸入接收新聞本身,即一個整數的序列(每個整數編碼了一個詞)。這些整數位於1到10,000之間(即我們的字典有10,000個詞)。這個序列有100個單詞。
然后,我們插入一個額外的損失,使得即使在主損失很高的情況下,LSTM和Embedding層也可以平滑的訓練。
再然后,我們將LSTM與額外的輸入數據串聯起來組成輸入,送入模型中:
構建整個2輸入,2輸出的模型:
模型定義完畢,下一步編譯模型。我們給額外的損失賦0.2的權重。武漢出國中介我們可以通過關鍵字參數loss_weights或loss來為不同的輸出設置不同的損失函數或權值。這兩個參數均可為Python的列表或字典。這里我們給loss傳遞單個損失函數,這個損失函數會被應用於所有輸出上。
編譯完成后,我們通過傳遞訓練數據和目標值訓練該模型:
當然,因為之前已經定了了名稱,所以可以更加全面的進行編譯和訓練模型:
完整實例: