Tensorflow培训精度远高于测试精度

时间:2020-02-20 00:14:20

标签: python tensorflow

我的训练数据始终保持60%的准确度,但是当我尝试用我的测试数据预测结果时,模型的准确度约为50%(如果是随机的,这是可以预期的)。

def train_model(training_data, training_differential, test_data, 
test_differential):
    num_nodes = 180

    model = keras.Sequential([
        keras.layers.Flatten(input_shape=(12, 22)),
        keras.layers.Dense(num_nodes, activation="relu"),
        keras.layers.Dense(2, activation="softmax")
    ])

model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])

model.fit(training_data, training_differential, epochs=20)

predictions = model.predict(test_data)


return predictions

enter image description here

不确定我是否过度拟合数据或使用的模型不正确。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

这可能是很多事情,要输入什么样的数据,您的目标类型是什么?它们是像[0,1]还是整数[6,2]之类的类。如果它们是类,那么您可能不需要稀疏的分类交叉熵,而只需分类交叉熵。如果这是二进制分类问题,例如cat or dog,但决不能两者都做,最后一层的大小应为1,目标是单个矢量,其中每个值均为1或0。

您的训练量有多大?如果太小,过度拟合很可能是一个问题。

无论从哪个地方开始,都可能要减少节点数量,从而减少网络本身的容量。您也可以引入某种形式的正则化,以防止网络过度适合训练集。