分步閱讀
對於初入門的開發人員來說,這可能是非常困難的事情為lstm模型準備序列資料。通常入門的開發者會在有關如何定義lstm模型的輸入層這件事情上感到困惑。還有關於如何將可能是1d或2d數字矩陣的序列資料轉換可以輸入到lstm輸入層所需的3d格式的困難。
在本文中,你將了解如何將輸入層定義為lstm模型,以及如何重新構建可以輸入到lstm模型的輸入資料。
1. 如何定義lstm的輸入層。
2. 如何重塑lstm模型的一維序列資料並定義輸入層。
3. 如何重塑lstm模型的多並行系列資料並定義輸入層。
1
教程概述
1. lstm輸入層。
2. 具有單輸入樣本的lstm示例。
3. 具有多個輸入特徵的lstm示例。
4. lstm輸入提示。
2
lstm輸入層
lstm輸入層是由神經網路第乙個隱藏層上的「input_shape」引數指定的。這可能會讓初學者感到困惑。例如,以下是具有乙個隱藏的lstm層和乙個密集輸出層組成的神經網路示例。
在這個例子中,我們可以看到lstm()層必須指定輸入的形狀。而且每個lstm層的輸入必須是三維的。這輸入的三個維度是:
樣品。乙個序列是乙個樣本。批次由乙個或多個樣本組成。
時間步。乙個時間步代表樣本中的乙個觀察點。
特徵。乙個特徵是在乙個時間步長的觀察得到的。
這意味著輸入層在擬合模型時以及在做出**時,對資料的要求必須是3d陣列,即使陣列的特定維度僅包含單個值。
當定義lstm網路的輸入層時,網路假設你有乙個或多個樣本,並會給你指定時間步長和特徵數量。你可以通過修改「 input_shape 」的引數修改時間步長和特徵數量。例如,下面的模型定義了包含乙個或多個樣本,50個時間步長和2個特徵的輸入層。
具有單輸入樣本的lstm示例
考慮到你可能會有多個時間步驟和乙個特徵序列的情況,所以我們先從這種情況講起。例如,這是乙個包含10個數字的序列:
0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
我們可以將這個數字序列定義為numpy陣列。
然後,我們可以使用numpy陣列中的reshape()函式將這個一維陣列重構為三維陣列,每個時間步長為1個樣本,那麼我們需要10個時間步長和1個特徵。
在陣列上呼叫的reshape()函式需要乙個引數,它是定義陣列新形狀的元組。我們不能干涉資料的重塑,重塑必須均勻地重組陣列中的資料。
一旦重塑,我們可以列印陣列的新形狀。
完整的例子如下:
執行示例列印單個樣本的新3d形狀:
該資料現在可以為input_shape(10,1)的lstm的輸入(x)。
具有多個輸入功能的lstm示例
你的模型可能有多個並行資料作為輸入的情況,接下來我們來看看這種情況。
例如,這可以是兩個並行的10個值:
series 1: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
series 2: 1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1
我們可以將這些資料定義為具有10行的2列的矩陣:
該資料可以被設定為1個樣本,具有10個時間步長和2個特徵。
它可以重新整形為3d陣列,如下所示:
完整的例子如下:
執行示例列印單個樣本的新3d形狀。
(1, 10, 2)
該資料現在可以為input_shape(10,2)作為lstm的輸入(x)使用。
如何為LSTM重新構建輸入資料(Keras)
對於初入門的開發人員來說,這可能是非常困難的事情為 lstm 模型準備序列資料。通常入門的開發者會在有關如何定義 lstm 模型的輸入層這件事情上感到困惑。還有關於如何將可能是1d或 2d數字矩陣的序列資料轉換可以輸入到 lstm 輸入層所需的 3d格式的困難。在本文中,你將了解如何將輸入層定義為 ...
如何為LSTM重新構建輸入資料(Keras)
對於初入門的開發人員來說,這可能是非常困難的事情為 lstm 模型準備序列資料。通常入門的開發者會在有關如何定義 lstm 模型的輸入層這件事情上感到困惑。還有關於如何將可能是1d或 2d數字矩陣的序列資料轉換可以輸入到 lstm 輸入層所需的 3d格式的困難。在本文中,你將了解如何將輸入層定義為 ...
重新思考資料輸入
在目前的產品互動中,輸入資料然後程式或者產品對資料進行驗證是非常常見的需求,而產品進行驗證的目的性也很明確,就是為了避免髒資料進入資料庫。但是從產品互動本身來講,產品是為了讓使用者更加準確的 簡單的使用乙個功能,而不是在出錯或者使用者目的很明確的時候告訴他輸入錯誤了。資料完整換句話就是產品對資料庫中...