我开始研究深度学习模型,并从《用python进行深度学习》一书中遇到了softmax分类。
在使用训练和测试数据时,我们将其分为train_x,train_y和test_x,test_y。 X和Y到底是什么?我正在尝试构建一个二进制softmax分类器,但是我不确定来自数据集1的样本是否应该放在X集上,而第二个分类的样本应该放在Y上。
还是测试数据中的所有数据而与标记数据无关,Y是仅包含1和0的向量?
希望我已经说清楚了。
答案 0 :(得分:0)
训练数据是用于训练模型的数据(使用此数据可以平衡模型的权重),而测试数据用于测试模型的性能 之后,就已经对其进行了训练(使用此数据不再改变权重)。
训练数据和测试数据具有相同的性质:它们通常是通过随机化所有数据,然后选择要用于训练和测试的数据来构建的(称为 training split )。
X代表输入数据,而 Y是输出:模型在训练阶段学习从X预测Y,而在测试阶段则从Y数据用于比较模型的答案并衡量其正确性。
答案 1 :(得分:0)
X和Y到底是什么?
正如您在问题中提到的,您正在解决一个分类问题,该问题属于https://en.wikipedia.org/wiki/Supervised_learning问题集。经典的说法是,您有一个输入空间 X 和一个标签空间 Y ,其中输入空间中的一个元素表示您拥有的信息,而标签空间中的一个元素将是类或类别。您得到的每个观察值都是一对输入(x,y),与来自真实数据的标签(例如(x = [1.70cm,15yrs],y = boy))相关联。您的算法应该做的是从您的输入空间到标签空间构建一个函数classifier
,以便我们进行匹配:
classifier(x)==y
尽可能尽可能多的对(人口空间)。需要特别注意的是,您将无法访问所有现实生活中的货币对,但您仍希望保留此属性(即,分类器一般化)。
什么是数据培训?
可以使用classifier
个函数的候选函数数不胜数,那么如何找到可行的候选函数呢?我们使用一些可用数据来创建它。我们如何创建函数?好吧,这取决于模型(例如,可以选择x
中线性的最佳函数)。但通常,一种算法算法会将训练数据作为输入,并从模型中所有可能的分类器中选择匹配度最高的分类器。汇总“大多数匹配项”的方式可能会有所不同,对于分类而言,一种常见的方式是使交叉熵损失最小化。
测试数据
您不需要测试数据即可创建分类器,但需要它来验证它不是一个不好的分类器。原因是您可以轻松地创建一个对训练数据有效的分类器,但是如果您不小心(在这种情况下称为过度拟合),则无法在总体空间中失败,例如:
def dumb_classifier(x):
if x in X_train:
return Y_train[X_train.index(x)]
else return Y_train[random_index]
dumb_classifier
在您的训练集上具有100%的准确性,但是部署它时,它的表现不会比随机猜测好!
在dumb_classifier
上使用测试数据集会让您知道它的性能很差,因此您应该丢弃模型并考虑使用其他模型(也许可以通过添加正则化函数来更改损失函数)。