2017-02-24 73 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