我试图了解发生了什么,所以我构建了一个更简单的项目版本。我将 X 和 Y 设置为相同,并尝试使用 X 预测 Y,这应该非常简单,但我的设置不起作用。这是我的代码:
import numpy
import keras
import pandas
# I want to evaluate the model when X and Y are the same
# This should be very easy for the model to evaluate
X = numpy.random.randint(2, size=100000)
Y = X
# Setup the model
model = keras.models.Sequential()
model.add(keras.layers.Dense(1, input_dim=1, init='uniform', activation='relu' ))
model.add(keras.layers.Dense(1, init='uniform', activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
hist = model.fit(X, Y, nb_epoch=10, validation_split=.3, batch_size=10, verbose=1)
df = pandas.DataFrame()
df['loss'] = hist.history['loss']
df['acc'] = hist.history['acc']
df['val_loss'] = hist.history['val_loss']
df['val_acc'] = hist.history['val_acc']
df.index = df.index + 1
#
print(df)
这是我的输出:
loss acc val_loss val_acc
1 0.693162 0.504357 0.693300 0.496233
2 0.693150 0.503100 0.693250 0.496233
3 0.693157 0.502357 0.693132 0.503767
4 0.693171 0.502214 0.693119 0.503767
5 0.693167 0.502043 0.693121 0.503767
6 0.693129 0.504014 0.693133 0.503767
7 0.693167 0.503243 0.693129 0.503767
8 0.693157 0.502357 0.693181 0.496233
9 0.693180 0.502614 0.693141 0.503767
10 0.693170 0.502300 0.693119 0.503767
我希望准确率达到 100%,但事实并非如此。我究竟做错了什么?
这是我遵循的示例。