keras训练完模型,为什么对训练集进行evaluate和训练时的loss完全不一样?白训练了吗?

2024-05-17 19:21

1. keras训练完模型,为什么对训练集进行evaluate和训练时的loss完全不一样?白训练了吗?

问题简述:
在keras框架下使用model.fit得到的训练准确率和损失表现都非常好,但是在相同的训练集上使用model.evaluate得到的准确率和损失都非常差
keras中的model.fit和model.evaluate在同样的数据集上的准确率acc和损失值loss存在巨大的差异
https://github.com/keras-team/keras/issues/6977
上面的github链接讨论了多种可能,
1.model.fit和model.evaluate的batch_size不匹配:model.fit时若指定了batch_size,在使用model.evaluate时的batch_size默认为16,而使用model.evaluate时并未设置与使用model.fit时同样的batch_size。解释大概为不同的batch_size的BatchNormalizaiton会产生不同的效果不同(当然在神经网络中存在BatchNormalization层时)
结果:匹配batch_size了也无效
2.dropout,batchnorm的影响:model.fit时的dropout层是设置dropout参数的,比如说0.5,而model.evaluate设置的dropout参数为1,keras在使用这两个function的时候会呈现两种模式

keras训练完模型,为什么对训练集进行evaluate和训练时的loss完全不一样?白训练了吗?

2. 图像怎么输入keras的分类模型

当Windows XP/2000登录密码丢失时,我们可以针对不同的情况采用不同的办法来解决:
(1)如果在安装Windows XP时,Administrator密码设置为空。大家可以在系统引导的时候按F8进入安全模式,这里的Administrator口令为空,可以直接进入,进入后对帐户和密码进行设置即可。

(2)如果设置了Administrator口令,解密的方法是: 
方法1、用密码重设盘设新密码
进入安全模式登录到Windows XP后,按下“Ctrl + Alt + Del”组合键, 
出现“Windows 安全”窗口,点击选项中“更改密码”按钮,出现更改密码窗口。这个窗口中,将当前用户的密码备份,点击左下角“备份”按钮,激活“忘记密码向导”,按照提示创建密码重设盘。
如果在Windows XP的登录窗口输入了错误的密码,就会弹出“登录失败”窗口,如果你的确想不起来自己的密码是什么时,可点击“重设”按钮,启动密码重设向导,通过刚才所创建的密码重设盘,重新设定密码,登录Windows XP。

方法2、使用软件修改密码
Windows Key 5.0和Windows XP/2000/NT Key这两款软件可以自动把Administrator密码修改为12345,重启系统后用此账号登录,然后在“控制面板”用户中,再重新修改管理员密码即可。
软件名:Windows Key 5.0
使用方法:运行之后会生成3个文件:txtsetup.oem、winkey.sys和winkey.inf, 
把它们拷贝到一张软盘中,制作成一张Windows Key盘。然后使用Windows XP安装光盘启动电脑,启动过程中按F6键让系统安装第三方的驱动程序。此时,放入Windows Key软盘就会自动跳到WindowsKey的界面,这时它会强行把Administrator的密码换成“12345”。
软件名:Windows XP/2000/NT Key 
使用方法:用它制作一张驱动软盘;然后用安装光盘启动电脑,启动过程中按“S”,插入该驱动软盘,系统管理员账号administrator的密码就会被改为12345。

方法3、 
A.开机启动Win XP,当运行到“正在启动Windows XP”的提示界面时,按“F8”键调出系统启动选择菜单,选择“带命令行安全模式”; 
B.当运行停止后,会列出“Administrator”和其它用户的选择菜单(本例的其他用户以xpuser01为例),选择“Administrator”后回车,进入命令行模式; 
C键入命令““net user xpuser01 1234/ADD”这是更改该用户密码的命令,命令中的“1234”是更改后的新密码,如果键入的用户不存在(xpuser01),那么系统会自动添加这个用户。 
D另外还可以使用“net 1oca1group administrator xpuser01 /ADD”命令把xpuser01这个用户升为超级用户,即可拥有所有权限。 
E.最后一步,就是重新启动计算机,在登录窗口中输入刚刚更改的新密码便可成功登陆。

方法4、 还有就是,可以使用超强的Windows 2000XP系统维护光盘——ERD Commander 2003。使用该光盘启动系统后,运行开始→管理→工具→密码修改命令打开ERD Commander 2003 LockSmith Wizard窗口,在帐号框中输入要破解的帐户名,然后输入新的密码就ok了。

3. keras 如何输出softmax分类结果属于某一类的概率

softmax是用于单标签输出,模型训练后,调用model.predict函数就可以输出结果为[0.5,0.4,0.1](输出数量为最后一层隐藏层的neuron数)这样的矩阵,里面即为你所需的预测概率值,值得注意的是,softmax会限制输出的所有概率相加为1。
如果需要预测的是多个标签而不是单个标签,则需要使用sigmoid作为输出激活函数,那么输出就不再强制相加为1,可以得到每个分类的实际预测值,此时只需要设置一个致信的threshold则可以得到多个分类预测值。
每个激活函数的详细解释看这里网页链接

keras 如何输出softmax分类结果属于某一类的概率

4. keras 模型预测的结果为什么自动从大到小排序了

另外,训练误差是训练数据每个batch的误差的平均。在训练过程中,每个epoch起始时的batch的误差要大一些,而后面的batch的误差要小一些。另一方面,每个epoch结束时计算的测试误差是由模型在epoch结束时的状态决定的,这时候的网络将产生较小的误差。
可以通过定义回调函数将每个epoch的训练误差和测试误差并作图,如果训练误差曲线和测试误差曲线之间有很大的空隙,说明你的模型可能有过拟合的问题。当然,这个问题与Keras无关。

5. keras人脸识别训练模型,我上周还在学Java,没接触过

你的问题是什么
keras是深度学习框架。
你刚学会java,就想搞深度学习会有很多基础知识得了解。如果在不了解深度学习基础知识的情况下,那git hub上搜歌人类识别训练模型down下来稍微修改修改代码就行了。只要你有人脸照片做数据源,这个事情并不难。

keras人脸识别训练模型,我上周还在学Java,没接触过

6. 如何修改keras已经训练好的模型的input shape

对于一个预测图片类别的模型来说,输入必须是一个4D tensor,比如VGG16在训练的时候输入的数据格式为(batch size,224,224,3)。在用训练好的VGG16模型预测一张图片时,只不过batch size为1。下面是VGG16预测一张图片时做的预处理,就是为输入数据多扩展一个维度。

7. python验证码识别

orc文字识别,现在比较流行的是通过人工智能训练CNN神经网络来识别。
大体流程
准备训练数据。训练数据可以自己写个程序生成验证码,和标准答案。
构建CNN模型。这个比较简单,使用keras框架,5分钟的事情。
训练。不停地把数据feed给程序,直到准确率达到你的期望,推荐使用GPU加速
预测。加载模型,把验证码图片feed给模型,得出结果

希望对你有帮助。

python验证码识别

8. keras中accuracy是怎么算出来的,为什么loss下降,accuracy不变甚至减小

accuracy是在test的数据上得到的,train和test的数据的分开的。
loss下降而accuracy不变说明已经过拟合了,可以考虑使用BN、Dropout之类的方法消除过拟合的影响,或者修改网络结构。
最新文章
热门文章
推荐阅读