2017-02-24 53 views
0

我的數據是68871 x 43,其中的功能位於列號。 1-43和每個標籤被表示爲1x21矢量使用keras代碼瞭解Netwok體系結構

以我keras代碼:

  • 打印trainX.shape ----->(41311,10,43)
  • 打印trainY。 (41311,21)
  • print testX.shape ------>(27538,10,43) 21)

當我運行下面的keras代碼:

model = Sequential() 
model.add(LSTM(10, input_dim=43)) 
model.add(Dropout(0.3)) 
model.add(Dense(21, activation='softmax')) 
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 
print(model.summary()) 
model.fit(trainX, trainY, validation_split=0.20, nb_epoch=1, batch_size=1, shuffle=False) 
scores = model.evaluate(testX, testY, verbose=0) 
print("Accuracy: %.2f%%" % (scores[1]*100)) 

的代碼執行這樣的enter image description here

我對keras工具包的理解是,如果3D張量trainX是形狀(41311,10,43)的再keras應該創建一個LSTM 10步時間。如果是這樣,那麼爲什麼在屏幕截圖中一個接一個地運行樣本,如果時間步是10,那麼它應該已經在10個批次中運行並獲得10個預測,然後運行接下來的10批樣本。

任何人都可以回答我:爲什麼屏幕截圖顯示樣本在時間步10時一個一個地運行? 非常感謝。

回答

1

通過示例他們瞭解形狀的一個numpy數組(10,43)。第一個維度是您的樣本數量。

那麼什麼網絡正在做的是: 1)輸入分成)形狀(批次,10,43的批次

2)喂LSTM,一次一個樣品。樣本是每個長度爲43的10個事件/張量的序列。所以每個序列是1個樣本。

這是明確的嗎?

+0

因此,網絡會在生成第一個預測(等等直到10個預測)之前等待10個事件/張量被輸入? – user3218279

+0

不,你建立它的方式是:1輸入= 1個長度爲10的張量的序列43.另一種說法是:1輸入= 1 2D形狀張量(10,43)。你有33048,因爲它是41311的80%。 –

+0

好的,這很清楚,非常感謝。我有一個不同的問題,那就是:在第一個2D形狀張量(10,43)被送入它之後(或)它將等待第10個二維張量形狀(10,43)在給出第一個預測之前餵食嗎? – user3218279