Keras二进制分类器教程示例仅提供50%的验证准确性。 可以通过未经训练的分类器本身对二进制分类获得近50%的准确性。
此示例直接来自https://keras.io/getting-started/sequential-model-guide/
import numpy as np
import tensorflow as tf
from tensorflow_core.python.keras.models import Sequential
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
np.random.seed(10)
# Generate dummy data
x_train = np.random.random((1000, 20))
y_train = np.random.randint(2, size=(1000, 1))
x_test = np.random.random((800, 20))
y_test = np.random.randint(2, size=(800, 1))
model = Sequential()
model.add(Dense(64, input_dim=20, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(x_train, y_train,
epochs=50,
batch_size=128,
validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, batch_size=128)
精度输出。
时代50/50 1000/1000 [=============================]-0s 211us / sample-损耗:0.6905-精度:0.5410-val_loss:0.6959- val_accuracy:0.4812
有人可以帮助我了解这里是否有问题吗?
答案 0 :(得分:1)
如果您使用random
示例训练分类器,则总会得到近似值。由x_test
表示的验证数据的准确度为50%。这是因为您的训练样本受到了随机课程的训练。验证或测试集也已分配给随机类。这就是为什么出现随机精度即50-50%的原因。
测试训练集的时间越久,训练集作为 overfitting 的作用所获得的准确性就越高。