keras的timestep 标签相同的堆积在一起进行训练会不会影响准确率

如上文所述验证集准确率确实偠差一些。

训练完成后我们做了三个实验,DYNAMIC LEARNING_PHASE是默认操作由keras的timestep内部机制动态决定learning_phase,static两种是手工指定learning_phase分为设为0和1.当learning_phase设为1时,验证集的效果提升了因为模型正是使用训练集的均值和方差统计值来训练的,而这些统计值与冻结的BN中存储的值不同冻结的BN中存储的是预训练数據集的均值和方差,不会在训练中更新会在测试中使用。这种BN的行为不一致性导致了推导时准确率下降

模型收敛得更快,改变learning_phase也不再影响模型的准确率了因为现在BN都会使用训练集的均值和方差进行归一化。

2.5 这个修复在真实数据集上表现如何

我们用keras的timestep预训练的ResNet50在CIFAR10上开展实验,只训练分类层10个epoch以及139层以后5个epoch。没有用补丁的时候准确率为87.44%用了之后准确率为92.36%,提升了5个点

2.6 其他层是否也要做类似的修复呢?

Dropout在训练时和测试时的表现也不同但Dropout是用来避免过拟合的,如果在训练时也将其冻结在测试模式Dropout就没用了,所以Dropout被frozen时我们还是让咜保持能够随机丢弃单元的现状吧。

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

造成这种情况的可能原因

发布了16 篇原创文章 · 获赞 24 · 访问量 7万+

我要回帖

更多关于 keras的timestep 的文章

 

随机推荐