Deep learning 为什么我的准确度从训练开始就很高?

Deep learning 为什么我的准确度从训练开始就很高?,deep-learning,keras,Deep Learning,Keras,我正在训练一个神经网络来识别.png图片上的一些属性,当我开始训练时,我得到的结果是这样的,它一直在增加,直到新纪元结束: 32/4817[……]-预计到达时间:167s-损失:0.6756-附件:0.5 64/4817[……]-预计到达时间:152s-损失:0.6214-附件:0.7 96/4817[……]-预计到达时间:145s-损失:0.6169-附件:0.7 128/4817[……]预计到达时间:142s-损失:0.5972-附件:0.7 160/4817[……]预计到达时间:140秒-

我正在训练一个神经网络来识别.png图片上的一些属性,当我开始训练时,我得到的结果是这样的,它一直在增加,直到新纪元结束:

32/4817[……]-预计到达时间:167s-损失:0.6756-附件:0.5
64/4817[……]-预计到达时间:152s-损失:0.6214-附件:0.7
96/4817[……]-预计到达时间:145s-损失:0.6169-附件:0.7
128/4817[……]预计到达时间:142s-损失:0.5972-附件:0.7
160/4817[……]预计到达时间:140秒-损失:0.5734-附件:0.7
192/4817[>]预计到达时间:138s-损耗:0.5604-附件:0.7
224/4817[>]预计到达时间:137s-损失:0.5427-附件:0.7
256/4817[>]预计到达时间:135秒-损耗:0.5160-附件:0.7
288/4817[>..]预计到达时间:134s-损失:0.5492-附件:0.7
320/4817[>]预计到达时间:133s-损耗:0.5574-附件:0.7
352/4817[=>预计到达时间:131s-损失:0.5559-附件:0.7
384/4817[=>预计到达时间:129s-损失:0.5550-附件:0.7
416/4817[=>预计到达时间:128s-损失:0.5504-附件:0.7
448/4817[=>预计到达时间:127s-损失:0.5417-附件:0.7
480/4817[=>………]预计到达时间:126s-损失:0.5425-附件:0.7
我的问题是,为什么起跑准确率这么高?我想应该是0.1左右,然后在学习时增加

最后,我得到:

(“测试损耗:”,0.42451223436727564)
(“测试精度:”,0.82572614112830256)
这是不是太大的测试损失

这是我的网络:

input\u shape=x\u列[0]。shape
打印(输入图形)
模型=顺序()
stoplearn=keras.callbacks.EarlyStopping(monitor='val_loss',min_delta=0,
耐心=0,详细=0,模式=自动)
add(Conv2D(32,内核大小=(3,3),
激活='relu',
输入形状=输入形状)
添加(Conv2D(64,(3,3),activation='relu'))
add(MaxPooling2D(池大小=(2,2)))
模型。添加(辍学率(0.25))
model.add(展平())
添加(密集(128,activation='relu'))
模型。添加(辍学率(0.5))
model.add(密集(2,activation='softmax'))
model.compile(loss=keras.loss.categorical_交叉熵,
optimizer=keras.optimizers.Adadelta(),
指标=[‘准确度’])
模型安装(x_系列、y_系列、,
批次大小=批次大小,
纪元=20,
verbose=1,
验证数据=(x检验,y检验),
回调=[stoplearn])
分数=模型。评估(x_检验,y_检验,详细度=0)
打印('测试损失:',分数[0])
打印('测试精度:',分数[1])

它是使用Keras用Python编写的。

您将数据分为两类(因为输出层的大小为2),因此0.5的精度不高。事实上,这意味着您的网络行为是随机的,这正是您在开始时所期望的。关于损失,没有绝对的答案。您的测试精度似乎还不错,您可以尝试使用一些参数(例如,对完全连接的层使用较小的尺寸),看看是否可以提高它。

您有两个类。随机选择将导致50%的准确率。这就是你一开始得到的。因此,你的结果是意料之中的

它直接跳到70%准确率的原因可能是你的问题很简单

如果你想再检查一遍,你可以

  • 使用其他分类器
  • 检查用于计算精度的示例数量
  • 序列化经过训练的分类器,并手动为其提供新示例,并检查其结果

  • 你在做二进制分类任务吗?您的数据集是否平衡?您是否尝试初始化种子以复制输出?“事实上,这意味着您的网络行为是随机的,这是您在开始时所期望的”-虽然这可能是真的,但您无法得出结论。在一个我可以完美解决的任务中,我也可以给你50%准确率的答案。@Martin Thoma完美解决方案(又名模型)的准确率是100%,而不是50%。我认为米里亚姆的论点是正确的。我说的是一个成年人,他会问一些基本的算术问题。人类可以给出任何他想要的准确性,因为他知道什么是正确的。让我们举一个可能更好的例子:假设您的训练集中有一个与类相等的特性。模型只学习使用该特性是非常有意义的。因此,该模型并非随机行为。但该特性仅在测试集中50%的情况下正确。因此,您有50%的准确率,并且与的网络不会出现随机行为。@Martin Thomas感谢您的澄清!我看到米里亚姆的论点仍然站得住脚,因为模型随机选择了它总是预测的一面(也就是一类)。然后它确实非随机地坚持这个选择,并达到50%的准确率,正如您正确指出的那样。我只是想确保OP明白模型仍然没有学到任何有用的东西。。。