Model 为什么最终的准确度与显示的相差甚远
我运行一个简单的神经网络进行训练。输入为12个特征,输出为25个特征。我使用tflearn运行代码,但如屏幕截图所示,为什么最终精度不在0.68左右 我的代码是:Model 为什么最终的准确度与显示的相差甚远,model,tflearn,Model,Tflearn,我运行一个简单的神经网络进行训练。输入为12个特征,输出为25个特征。我使用tflearn运行代码,但如屏幕截图所示,为什么最终精度不在0.68左右 我的代码是: #Set network variables and hyperparameters nIn = 12 nHidden = 200 nOut = 25 alpha = 0.01 nEpochs = 500 testSplit = 0.2 batchSize = 32
#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))
任何帮助都将不胜感激。在代码末尾,您将看到您使用验证集计算模型的准确性。这意味着:直到此时,您的模型才看到该数据 当您在训练数据上训练网络时,它会在多次迭代中重用相同的数据。在您的情况下,它使用您的整个训练集至少499次,并调整其参数。当您使用验证集时,它从未见过该数据,并且将比您的培训数据表现更差。这是非常普遍的
我建议您做的是,在培训期间使用验证数据验证您的模型。一个常见的问题是所谓的
过度拟合
,它会导致训练和测试精度之间的巨大差距。这意味着您的模型参数对训练数据调整过多,无法很好地推广到新数据。通过比较验证/测试精度和培训精度,您将能够检测到这种情况。如果第一个增加而第二个减少,则会出现过度拟合 这回答了你的问题吗?