天天看點

如何為LSTM重新建構輸入資料(Keras)教程概述 本文分為4部分: 文章原标題《How to Reshape Input Data for Long Short-Term Memory Networks in Keras》

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

如何為LSTM重建立構輸入資料(Keras)教程概述 本文分為4部分: 文章原标題《How to Reshape Input Data for Long Short-Term Memory Networks in Keras》

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

看完本文後,你将知道:

如何定義lstm的輸入層。

如何重塑lstm模型的一維序列資料并定義輸入層。

如何重塑lstm模型的多并行系列資料并定義輸入層。

1.lstm輸入層。

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

3.具有多個輸入特征的lstm示例。

4.lstm輸入提示。

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

在這個例子中,我們可以看到lstm()層必須指定輸入的形狀。而且每個lstm層的輸入必須是三維的。這輸入的三個次元是:

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

<b>時間步</b>。一個時間步代表樣本中的一個觀察點。

<b>特征</b>。一個特征是在一個時間步長的觀察得到的。

這意味着輸入層在拟合模型時以及在做出預測時,對資料的要求必須是3d數組,即使數組的特定次元僅包含單個值。

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

現在我們知道如何定義lstm輸入層,接下來我們來看一些我們如何為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)。

你的模型可能有多個并行資料作為輸入的情況,接下來我們來看看這種情況。

例如,這可以是兩個并行的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準備輸入資料時可以幫助你的一些提示。

1.lstm輸入層必須是3d。

2.3個輸入尺寸的含義是:樣本,時間步長和特征。

3.lstm輸入層由第一個隐藏層上的input_shape參數定義。

4.所述input_shape參數是限定的時間的步驟和特征數量的兩個值的元組。

5.樣本數預設假定為大于1。

6.numpy數組中的reshape()函數可用于将你的1d或2d資料重塑為3d。

7.reshape()函數會将一個元組作為新定義的形狀的參數。

如果你進一步了解,本部分将提供有關該主題的更多資源。

如果你在lstm上有任何問題,可以去原文作者部落格與之交流。

作者:jason brownlee    

作者部落格位址:http://machinelearningmastery.com/blog/

譯者:袁虎 審閱:主題曲哥哥