Netwok架构理解使用keras代码

时间:2017-02-24 10:27:23

标签: tensorflow deep-learning keras

我的数据是68871 x 43,其中的功能在列号中。 1-43并且每个标签表示为1x21载体

在我的keras代码中:

  • print trainX.shape -----> (41311,10,43)
  • print trainY.shape -----> (41311,21)
  • print testX.shape ------> (27538,10,43)
  • print testY.shape ------> (27538,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工具包的理解是,如果trainX的3D张量具有形状(41311,10,43),那么keras应该创建一个10步的lstm。如果是这样,那么为什么在屏幕截图中样本逐个运行,如果时间步长为10,那么它应该以10的批次运行并获得10个预测,然后运行接下来的10批样本。

任何人都可以回答我:为什么屏幕截图显示当时间步长为10时样本逐个运行? 非常感谢提前。

1 个答案:

答案 0 :(得分:1)

通过样本,他们理解了一个numpy形状的阵列(10,43)。第一个维度是您的样本数量。

那么网络正在做的是: 1)将输入分成几批形状(批次,10,43)

2)每次喂食一次样品。样本是10个事件/张量的序列,每个事件/张量长度为43。所以每个序列都是1个样本。

这是清楚的吗?