Fra*_* B. 2 python machine-learning neural-network tensorflow
我正在 Python 3.5 中使用 TensorFlow 构建模式识别深度神经网络。构建网络并创建训练集后,我使用 TensorFlow 中的以下函数训练模型:
model = tflearn.DNN(net, tensorboard_dir='tflearn_logs')
model.fit(train_x, train_y, n_epoch=2000, batch_size=8, show_metric=True)
model.save(name + '.tflearn')
Run Code Online (Sandbox Code Playgroud)
当我对它从未见过的输入进行预测时,它的效果非常好。阅读有关 fit 函数的 Tflearn 文档,它说我可以向该函数传递一个“validation_set”,顾名思义,它是一个用于验证我的模型的集合。
通过验证集和不通过验证集有什么区别?
实际上,恕我直言,验证集命名非常混乱。通常,在机器学习或深度学习中,验证适用于用于超参数调整的数据集,例如 DNN 的层或每层的神经元数量或正则化的 lambda 值。所以它应该命名为test_set。
但无论如何,您有两种方法在 tflearn 中指定验证集。一种是传入一个1到0之间的浮点数
model.fit(X, Y, validation_set=0.1)
Run Code Online (Sandbox Code Playgroud)
这意味着 fit 方法将使用 10% 的训练数据来测试模型的性能,并且仅使用 90% 的原始训练数据集用于训练目的。
或者您可以自己将数据集拆分为训练数据集和验证/测试数据集,并将它们传递如下:
model.fit(X_train, Y_train, validation_set=(X_test, Y_test))
Run Code Online (Sandbox Code Playgroud)
有了验证集,您就可以自信地说您的模型对于“看不见的”数据的准确性是多少,而不是使用诸如“当我对它从未见过的输入进行预测时它效果很好”之类的陈述。此外,如果您发现训练数据上的模型准确性比验证数据集上的模型准确性高得多,那么您就知道存在过度拟合问题,并且可以应用技术来解决该问题。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1623 次  |  
        
|   最近记录:  |