首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么最终的准确率与显示的准确率相差很远

为什么最终的准确率与显示的准确率相差很远
EN

Stack Overflow用户
提问于 2018-03-06 03:39:59
回答 1查看 91关注 0票数 1

我运行一个简单的神经网络进行训练。输入为12个特征,输出为25个。我使用tflearn运行代码,但正如屏幕截图所示,为什么最终的准确率不在0.68左右?

我的代码是:

代码语言:javascript
复制
    #Set network variables and hyperparameters
    nIn = 12
    nHidden = 200
    nOut = 25
    alpha = 0.01
    nEpochs = 500
    testSplit = 0.2
    batchSize = 32

    input_layer = tflearn.input_data(shape=[None, nIn])
    layer2 = tflearn.fully_connected(input_layer, nHidden, activation="relu")
    out = tflearn.fully_connected(layer2, nOut, activation="softmax")

    #sgd = tflearn.optimizers.SGD(learning_rate=0.001, lr_decay=0.0, decay_step=1000, staircase=False, use_locking=False)
    network = tflearn.regression(out, optimizer="adam", loss="categorical_crossentropy",batch_size=batchSize)

    model = tflearn.DNN(network)

    #Number of data points used for testing
    num_test = int(testSplit * len(data))

    #Split data into train and  test
    trainX = dataX[:-num_test]
    testX = dataX[-num_test:]

    trainY = dataY[:-num_test]
    testY = dataY[-num_test:]

    model.fit(trainX, trainY, n_epoch=nEpochs, show_metric=True)

    print("Final Accuracy:", model.evaluate(testX, testY))

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-03-06 05:58:05

在代码的末尾,您会看到您使用验证集计算模型的准确性。这意味着:在此之前,您的模型永远看不到该数据。

当您在训练数据上训练网络时,它会在多次迭代中重用相同的数据。在你的例子中,它使用你的整个训练集至少499次,并调整了它的参数。当你使用你的验证集时,它从来没有看到过这些数据,并且在训练数据上的表现会更差。这绝对是很常见的。

我建议你做的是,在训练期间使用你的验证数据验证你的模型。一个常见的问题是所谓的overfit,它可能导致训练和测试精度之间的巨大差距。这意味着你的模型参数对训练数据调整太多,不能很好地推广到新数据。通过将验证/测试精度与训练精度进行比较,您将能够检测到这种情况。如果第一个增加而第二个减少,你会有一个过拟合。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49118212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档