当前位置:主页 > 地方新闻 >
平博体育:请谨慎运用预训练日产新suv荆轲的深度进建模型
发布日期:2019-07-30

勤王敢道远,www rxfing com,比佐野沙罗,火石结晶有什么用,石榴网游录,蓝色恋爱海雨雪霏霏,超魔法大战 乱码,东方骨灵姬,连暴三公主,蒋伟文亚洲鸟王,尘缘叹简谱,怒牙神殿,宫心计2中宫无后,soe 691,刘宝瑞孙女,联大伟绣花网,天阅网,宁夏网虫宠物情缘,51saoluche,qq中原锋行世界,胡汉三怕妻子,zadull,qq炫舞音飞官网,阿曼尼散兵,qingsewuyutian,按此进入性格中人,十五年等候候鸟19楼,清幽异梦,女性健德堂,安格格时空周纪行

<div><pre class="ql-align-justify">作者:Cecelia Shao<br>编译:ronghuaiyang<br></pre><p class="ql-align-justify"><strong>导读</strong></p><p class="ql-align-justify">预训练模型用起来极度容易,平博体育,可是你是否忽略了可能影响模型职能的细节呢?</p><h1 class="ql-align-justify">你运转过众少次下面的代码:</h1><pre>import torchvision.models as models<br>inception = models.inception_v3(pretrained=True)<br></pre><p class="ql-align-justify">或者是这个</p><pre class="ql-align-justify">from keras.applications.inception_v3 import InceptionV3<br>base_model = InceptionV3(weights='imagenet', include_top=False)<br></pre><p class="ql-align-justify">看起来运用这些预训练的模型已经成为行业最佳履行的新标准。毕竟,有一个经过大量数据和盘算训练的模型,你为什么倒霉用呢?</p><h1 class="ql-align-justify"><strong>预训练模型万岁!</strong></h1><p class="ql-align-justify">利用预训练的模型有几个主要的好处:</p><ul><li class="ql-align-justify">归并超级简略</li><li class="ql-align-justify">速快完成稳定(雷同或更好)的模型职能</li><li class="ql-align-justify">不需求太众的标签数据</li><li class="ql-align-justify">迁移进建、预测和特色提取的通用用例</li></ul><p class="ql-align-justify">NLP范畴的进取也鼓舞运用预训练的语言模型,如GPT和GPT-2、AllenNLP的ELMo、谷歌的BERT、Sebastian Ruder和Jeremy Howard的ULMFiT。</p><p class="ql-align-justify">利用预训练模型的一种常睹武艺是特色提取,在此进程中检索由预训练模型天生的中间表示,并将这些表示用作新模型的输入。通常假定这些最终的全连接层取得的是新闻与办理新使命相干的。</p><h1 class="ql-align-justify">每私家都到场其中</h1><p class="ql-align-justify">每一个主流框架,平博体育,如Tensorflow,Keras,PyTorch,MXNet等,都供应了预先训练好的模型,如Inception V3,ResNet,AlexNet等,带有权重:</p><ul><li class="ql-align-justify">Keras Applications</li><li class="ql-align-justify">PyTorch torchvision.models</li><li class="ql-align-justify">Tensorflow Official Models (and now TensorFlow Hubs)</li><li class="ql-align-justify">MXNet Model Zoo</li><li class="ql-align-justify">Fast.ai Applications</li></ul><div class="pgc-img"><img src="" img_width="334" img_height="250" alt="请谨慎运用预训练的深度进建模型" inline="0"><p class="pgc-img-caption"></p></div><p class="ql-align-justify">很简略,是不是?</p><h1 class="ql-align-justify">可是,这些benchmarks能够复现吗?</h1><p class="ql-align-justify">这篇文章的灵感来自Curtis Northcutt,他是麻省理工学院盘算机科学博士研究生。<strong>他的文章‘Towards Reproducibility: Benchmarking Keras and PyTorch’ 提出了几个有趣的观念</strong>:</p><ol><li class="ql-align-justify">resnet结构在PyTorch中施行得更好, inception结构在Keras中施行得更好</li><li class="ql-align-justify">在Keras应用顺序上不能复现Keras Applications上的已发布的基准测试,纵然齐全复制示例代码也是如此。事实上,他们报告的准确率(<span>截至</span>2019年2月)通常高于实践的准确率。</li><li class="ql-align-justify">当安排在效劳器上或与其他Keras模型按程序运转时,一些预先训练好的Keras模型会产生不一致或较低的精度。</li><li class="ql-align-justify">运用batch normalization的Keras模型可能不牢靠。对于某些模型,前向传递盘算(假定梯度为off)仍然会导致在推理时权重发生革新。</li></ol><p class="ql-align-justify">你可能会念:<strong>这怎么可能?这些不是雷同的模型吗?假如在雷同的条件下训练,它们不应该有雷同的职能吗?</strong></p><p class="ql-align-justify">并不是只有你这么念,Curtis的文章也在Twitter上激发了一些反馈:</p><div class="pgc-img"><img src="" img_width="510" img_height="318" alt="请谨慎运用预训练的深度进建模型" inline="0"><p class="pgc-img-caption"></p></div><div class="pgc-img"><img src="" img_width="510" img_height="318" alt="请谨慎运用预训练的深度进建模型" inline="0"><p class="pgc-img-caption"></p></div><p class="ql-align-justify">关于这些差距的原因有一些有趣的睹解:</p><div class="pgc-img"><img src="" img_width="507" img_height="281" alt="请谨慎运用预训练的深度进建模型" inline="0"><p class="pgc-img-caption"></p></div><p class="ql-align-justify">相识(并信赖)这些基准测试极度主要,由于它们允许你凭据要运用的框架做出明智的规划,并且通常用作研究和完成的基线。</p><p class="ql-align-justify">那么,当你利用这些预先训练好的模型时,需求注意什么呢?</p><h1 class="ql-align-justify">运用预训练模型的注意事项</h1><p class="ql-align-justify"><strong>1、你的使命有众类似?你的数据有众类似?</strong></p><p class="ql-align-justify">对于你的新x射线数据集,你运用Keras Xception模型,你是不是盼望0.945的验证精度?起首,你需求查抄你的数据与模型所训练的原始数据集(在本例中为ImageNet)有众类似。你还需求知道特色是从何处(收集的底部、中部或顶部)迁移的,由于使命类似性会影响模型职能。</p><p class="ql-align-justify">阅读CS231n?—?Transfer Learning and ‘How transferable are features in deep neural networks?’</p><p class="ql-align-justify"><strong>2、你奈何预处理数据?</strong></p><p class="ql-align-justify">你的模型的预处理应该与原始模型雷同。险些所有的torchvision模型都运用雷同的预处理值。对于Keras模型,你应该始终为相应的模型级模块运用 preprocess_input函数。例如:</p><pre class="ql-align-justify"># VGG16<br>keras.applications.vgg16.preprocess_input<br># InceptionV3<br>keras.applications.inception_v3.preprocess_input<br>#ResNet50<br>keras.applications.resnet50.preprocess_input<br></pre><p class="ql-align-justify"><strong>3、你的backend是什么?</strong></p><p class="ql-align-justify">有一些关于HackerNews的传言称,将Keras的后端从Tensorflow更改为CNTK (Microsoft Cognitive toolkit)提高了职能。因为Keras是一个模型级库,它不处理诸如张量积、卷积等较低级别的操作,所以它依赖于其他张量操作框架,比如TensorFlow后端和Theano后端。</p><p class="ql-align-justify">Max Woolf供应了一个精良的基准测试项目,发现CNTK和Tensorflow之间的准确性是雷同的,但CNTK在LSTMs和众层感知(MLPs)方面更速,而Tensorflow在CNNs和embeddings方面更速。</p><p class="ql-align-justify">Woolf的文章是2017年发表的,所以假如能取得一个更新的比较了局,其中还包括Theano和MXNet作为后端,那将是极度有趣的(尽管Theano如今已经被烧毁了)。</p><p class="ql-align-justify">还有一些人声称,Theano的某些版本可能会忽略你的种子。</p><p class="ql-align-justify"><strong>4、你的硬件是什么?</strong></p><p class="ql-align-justify">你运用的是Amazon EC2 NVIDIA Tesla K80照旧Google的NVIDIA Tesla P100?甚至可能是TPU?看看这些不同的pretrained模型的有效的基准参考资料。</p><ul><li class="ql-align-justify">Apache MXNet’s GluonNLP 0.6:Closing the Gap in Reproducible Research with BERT</li><li class="ql-align-justify">Caleb Robinson’s ‘How to reproduce ImageNet validation results’ (and of course, again, Curtis’ benchmarking post)</li><li class="ql-align-justify">DL Bench</li><li class="ql-align-justify">Stanford DAWNBench</li><li class="ql-align-justify">TensorFlow’s performance benchmarks</li></ul><p class="ql-align-justify"><strong>5、你的进建率是什么?</strong></p><p class="ql-align-justify">在履行中,你应该保持预训练的参数不变(即,运用预训练好的模型作为特色提取器),或者用一个相当小的进建率来排解它们,以便不遗忘原始模型中的所有内容。</p><p class="ql-align-justify"><strong>6、在运用batch normalization或dropout等优化时,特殊是在训练形式和推理形式之间,有什么不同吗?</strong></p><p class="ql-align-justify">正如Curtis的帖子所说:</p><p class="ql-align-justify">运用batch normalization的Keras模型可能不牢靠。对于某些模型,前向传递盘算(假定梯度为off)仍然会导致在推断时权重发生革新。</p><p class="ql-align-justify">可是为什么会如许呢?</p><p class="ql-align-justify">Expedia的首席数据科学家Vasilis Vryniotis起首发现了Keras中的冻结batch normalization层的标题。</p><p class="ql-align-justify">Keras当前完成的标题是,当冻结批处理规范化(BN)层时,它在训练期间照旧会继续运用mini-batch的统计新闻。我觉得当BN被冻结时,更好的方式是运用它在训练中进建到的移动均匀值和方差。为什么?因为同样的原因,在冻结层时不应该更新mini-batch的统计数据:它可能导致较差的了局,由于下一层没有取得恰当的训练。</p><p class="ql-align-justify">Vasilis还引用了如许的例子,当Keras模型从训练形式切换到测试形式时,这种差距导致模型职能显著降落(从100%降落到50%)。</p><p class="ql-align-justify">英文原文:https://medium.com/comet-ml/approach-pre-trained-deep-learning-models-with-caution-9f0ff739010c</p><p class="ql-align-center"><strong>更众内容,请关注微信公多号:AI公园</strong></p></div>

上一篇:平博体育: 【恋爱魔方激活码五岁坏宝贝是若干?】恋爱魔方的txt全集下载地址
下一篇:脸书区块链负责人:不通过操明眼咒纵天秤币攫取利益是脸书的底线


主页    |     地方新闻    |     海峡博客    |     公共服务    |     平博体育    |     网站地图
Copyright © 平博体育 版权所有