我的网络避免了过早收敛,对于 TensorFlow,只需损失很小的训练速度;不幸的是,CNTK 的速度比简单模型慢了许多,但在高级模型中仍然比 TensorFlow 快得多。 以下是用 TensorFlow 训练的我的架构模型生成的文本输出: hinks the rich man must be wholly perverity and connection of the english sin of the philosophers of the basis of the same profound of his placed and evil and exception of fear to plants to me such as the case of the will seems to the will to be every such a remark as a primates of a strong of[...] 这是用 CNTK 训练的模型输出: (_x2js1hevjg4z_?z_aæ?q_gpmj:sn![?(f3_ch=lhw4y n6)gkhkujaumomu,?!ljë7g)k,!?[45 0as9[d.68éhhptvsx jd_næi,ä_z!cwkr"_f6ë-mu_(epp[...] 等等,什么?显然,我的模型架构导致 CNTK 在预测时遇到错误,开奖,而「CNTK+简单的 LSTM」架构并没有发生这种错误。通过质量评估,我发现批归一化(batch normalization)是错误的原因,并及时提出了这个问题(https://github.com/Microsoft/CNTK/issues/1994)。 结论 综上,评价 Keras 框架是否比 TensorFlow 更好,这个判断并没有设想中的那么界限分明。两个框架的准确性大致相同。CNTK 在 LSTM/MLP 上更快,TensorFlow 在 CNN/词嵌入(Embedding)上更快,但是当网络同时实现两者时,它们会打个平手。 撇开随机错误,有可能 CNTK 在 Keras 上的运行还没有完全优化(实际上,1bit-SGD 的设置不起作用(https://github.com/Microsoft/CNTK/issues/1975)),所以未来还是有改进的空间的。尽管如此,简单地设置 flag 的效果是非常显著的,在将它们部署到生产之前,值得在 CNTK 和 TensorFlow 后端上测试 Keras 模型,以比较两者哪个更好。 原文链接: 本文为机器之心编译,转载请联系本公众号获得授权。 ✄------------------------------------------------ 加入机器之心(全职记者/实习生):[email protected] 投稿或寻求报道:[email protected] 广告&商务合作:[email protected] (责任编辑:本港台直播) |