1. 程式人生 > >如何為LSTM重新構建輸入資料(Keras)

如何為LSTM重新構建輸入資料(Keras)

轉自:https://jingyan.baidu.com/article/6b97984dd640b01ca2b0bf95.html

如何為LSTM重新構建輸入資料(Keras)

  • 瀏覽:0
  • |
  • 更新:2017-09-07 12:07
  • 如何為LSTM重新構建輸入資料(Keras) 1
  • 如何為LSTM重新構建輸入資料(Keras) 2
  • 如何為LSTM重新構建輸入資料(Keras) 3
  • 如何為LSTM重新構建輸入資料(Keras) 4
  • 如何為LSTM重新構建輸入資料(Keras) 5
  • 如何為LSTM重新構建輸入資料(Keras)
    6
  • 如何為LSTM重新構建輸入資料(Keras) 7
分步閱讀

    對於初入門的開發人員來說,這可能是非常困難的事情為LSTM模型準備序列資料。通常入門的開發者會在有關如何定義LSTM模型的輸入層這件事情上感到困惑。還有關於如何將可能是1D或2D數字矩陣的序列資料轉換可以輸入到LSTM輸入層所需的3D格式的困難。

  在本文中,你將瞭解如何將輸入層定義為LSTM模型,以及如何重新構建可以輸入到LSTM模型的輸入資料。

       看完本文後,你將知道:

1. 如何定義LSTM的輸入層。

2. 如何重塑LSTM模型的一維序列資料並定義輸入層。

3. 如何重塑LSTM模型的多並行系列資料並定義輸入層。

工具/原料

  • Keras

方法/步驟

  1. 1

    教程概述

           本文分為4部分:

    1. LSTM輸入層。

    2. 具有單輸入樣本的LSTM示例。

    3. 具有多個輸入特徵的LSTM示例。

    4. LSTM輸入提示。

  2. 2

    LSTM輸入層

           LSTM輸入層是由神經網路第一個隱藏層上的“input_shape”引數指定的。這可能會讓初學者感到困惑。例如,以下是具有一個隱藏的LSTM層和一個密集輸出層組成的神經網路示例。

    如何為LSTM重新構建輸入資料(Keras)
  3.     在這個例子中,我們可以看到LSTM()層必須指定輸入的形狀。而且每個LSTM層的輸入必須是三維的。這輸入的三個維度是:

    樣品。一個序列是一個樣本。批次由一個或多個樣本組成。

    時間步。一個時間步代表樣本中的一個觀察點。

    特徵。一個特徵是在一個時間步長的觀察得到的。

           這意味著輸入層在擬合模型時以及在做出預測時,對資料的要求必須是3D陣列,即使陣列的特定維度僅包含單個值。

           當定義LSTM網路的輸入層時,網路假設你有一個或多個樣本,並會給你指定時間步長和特徵數量。你可以通過修改“ input_shape ”的引數修改時間步長和特徵數量。例如,下面的模型定義了包含一個或多個樣本,50個時間步長和2個特徵的輸入層。

    如何為LSTM重新構建輸入資料(Keras)
  4. 具有單輸入樣本的LSTM示例

           考慮到你可能會有多個時間步驟和一個特徵序列的情況,所以我們先從這種情況講起。例如,這是一個包含10個數字的序列:

    0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0

           我們可以將這個數字序列定義為NumPy陣列。

    如何為LSTM重新構建輸入資料(Keras)
  5. 然後,我們可以使用NumPy陣列中的reshape()函式將這個一維陣列重構為三維陣列,每個時間步長為1個樣本,那麼我們需要10個時間步長和1個特徵。

           在陣列上呼叫的reshape()函式需要一個引數,它是定義陣列新形狀的元組。我們不能干涉資料的重塑,重塑必須均勻地重組陣列中的資料。

    如何為LSTM重新構建輸入資料(Keras)
  6.        一旦重塑,我們可以列印陣列的新形狀。

    如何為LSTM重新構建輸入資料(Keras)
  7.        完整的例子如下:

    如何為LSTM重新構建輸入資料(Keras)
  8.        執行示例列印單個樣本的新3D形狀:

    如何為LSTM重新構建輸入資料(Keras)
  9.        該資料現在可以為input_shape(10,1)的LSTM的輸入(X)。

    如何為LSTM重新構建輸入資料(Keras)
  10. 具有多個輸入功能的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列的矩陣:

    如何為LSTM重新構建輸入資料(Keras)
  11. 該資料可以被設定為1個樣本,具有10個時間步長和2個特徵。

           它可以重新整形為3D陣列,如下所示:

    如何為LSTM重新構建輸入資料(Keras)
  12.        完整的例子如下:

    如何為LSTM重新構建輸入資料(Keras)
  13. 13

      執行示例列印單個樣本的新3D形狀。

    (1, 10, 2)

           該資料現在可以為input_shape(10,2)作為LSTM的輸入(X)使用。

    如何為LSTM重新構建輸入資料(Keras)