【发布时间】:2018-06-30 08:48:26
【问题描述】:
我正在学习 NN 和 Keras。我的测试数据是这样的:
Result, HomeWinPossibility, DrawPossibility, AwayWinPossibility
[['AwayWin' 0.41 0.28 0.31]
['HomeWin' 0.55 0.25 0.2]
['AwayWin' 0.17 0.21 0.62]
.....
这是我的模型:
model = Sequential()
model.add(Dense(16, input_shape=(3,)))
model.add(Activation('sigmoid'))
model.add(Dense(8, activation='relu'))
model.add(Dense(3))
model.add(Activation('softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=["accuracy"])
model.fit(train_X, train_y_ohe, epochs=100, batch_size=1, verbose=1);
fit 的输出是:
Epoch 1/100
190/190 [==============================] - 1s 3ms/step - loss: 0.9151 - acc: 0.5737
Epoch 2/100
190/190 [==============================] - 1s 3ms/step - loss: 0.9181 - acc: 0.5474
Epoch 3/100
190/190 [==============================] - 1s 3ms/step - loss: 0.9111 - acc: 0.5526
Epoch 100/100
190/190 [==============================] - 1s 3ms/step - loss: 0.9130 - acc: 0.5579
那么为什么损失没有像我阅读的一些 NN 教程那样下降呢?是不是因为我提供的数据只是噪音,所以 NN 找不到任何线索或我的模型不正确的地方?
由于acc 始终在 0.55 左右(即 50%),这是否意味着 NN 实际上比随机猜测更好(> 33%)?如果这是真的,为什么它在第一个 epoch 就达到了 0.57 的准确率?
【问题讨论】:
-
我建议修改以下内容。 1. 如果你有足够的数据增加前两层的数量单元 2. 将 sigmoid 激活更改为 relu 3. 增加批量大小,例如到 32 岁
-
您能否提供有关该问题的更多信息?即输入特征是什么?
标签: neural-network keras