有这个代码:
from keras.models import Sequential
from keras.layers import Dense
import numpy
from numpy import exp, array, random, dot
# задаем для воспроизводимости результатов
numpy.random.seed(2)
# разбиваем датасет на матрицу параметров (X) и вектор целевой переменной (Y)
X = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
Y = array([[0, 1, 1, 0]]).T
# создаем модель, добавляем 1 слой и 3 значения для активации
model = Sequential()
model.add(Dense(1, input_dim=3, activation='sigmoid'))
# компилируем модель, используем градиентный спуск adam
model.compile(loss="binary_crossentropy", optimizer="adam", metrics=['accuracy'])
# обучаем нейронную сеть
model.fit(X, Y, epochs = 1000, batch_size=10)
# оцениваем результат
scores = model.evaluate(X, Y)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
pre = model.predict(array([[0, 0, 1]]))
print(pre)
如您所见,该值[0, 0, 1]已经在训练集中,其正确的延续是= 0.
在输出中,我得到了这个:
accuracy: 100.00%
[[0.4054786]]
它应该是,分别0。
从训练集中以 100% 的准确率预测值怎么会出错?我做错了什么?
要预测一个类,请使用model.predict_classes(...)方法而不是它的概率: