本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深(2)

时间:2017-06-18 03:08来源:香港现场开奖 作者:开奖直播现场 点击:
为了评估算法的速度,我们可以计算训练一个 epoch 所需的平均时间。每个 epoch 的时间大致相同;测量结果真实平均值用 95%的置信区间表示,这是通过非

为了评估算法的速度,我们可以计算训练一个 epoch 所需的平均时间。每个 epoch 的时间大致相同;测量结果真实平均值用 95%的置信区间表示,这是通过非参数统计的 bootstrapping 方法得到的。双向 LSTM 的计算速度:

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

哇,CNTK 比 TensorFlow 快很多!虽然没有比 LSTM 的基准测试(https://arxiv.org/abs/1608.07249)快 5-10 倍,但是仅通过设置后端 flag 就几乎将运行时间减半就已经够令人震惊了。

接下来,我们用同样的数据集测试 fasttext 方法(imdb_fasttext.py)。fasttext 是一种较新的算法,可以计算词向量嵌入(word vector Embedding)的平均值(不论顺序),但是即使在使用 CPU 时也能得到令人难以置信的速度和效果,如同 Facebook 官方对 fasttext 的实现(https://github.com/facebookresearch/fastText)一样。(对于此基准,我倾向于使用二元语法模型/bigram)

  

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

由于模型简单,这两种框架的准确率几乎相同,但在使用词嵌入的情况下,TensorFlow 速度更快。(不管怎样,fasttext 明显比双向 LSTM 方法快得多!)此外,fasttext 打破了 88%的基准,这可能值得考虑在其它机器学习项目中推广。

MNIST 数据集

MNIST 数据集()是另一个著名的手写数字数据集,经常用于测试计算机视觉模型(60000 个训练图像,10000 个测试图像)。一般来说,良好的模型在测试集上可达到 99%以上的分类准确率。

多层感知器(multilayer perceptron/MLP)方法(mnist_mlp.py)仅使用一个大型全连接网络,就达到深度学习魔术(Deep Learning Magic™)的效果。有时候这样就够了。

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

这两个框架都能极速地训练模型,每个 epoch 只需几秒钟;在准确性方面没有明确的赢家(尽管没有打破 99%),但是 CNTK 速度更快。

另一种方法(mnist_cnn.py)是卷积神经网络(CNN),它利用相邻像素之间的固有关系建模,是一种逻辑上更贴近图像数据的架构。

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

在这种情况下,TensorFlow 在准确率和速度方面都表现更好(同时也打破 99%的准确率)。

CIFAR-10

现在来研究更复杂的实际模型,CIFAR-10 数据集(https://www.cs.toronto.edu/~kriz/cifar.html)是用于 10 个不同对象的图像分类的数据集。基准脚本的架构(cifar10_cnn.py)是很多层的 Deep CNN + MLP,其架构类似于著名的 VGG-16(https://gist.github.com/baraldilorenzo/07d7802847aaad0a35d3)模型,但更简单,由于大多数人没有用来训练的超级计算机集群。

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

在这种情况下,两个后端的在准确率和速度上的性能均相等。也许 CNTK 更利于 MLP,而 TensorFlow 更利于 CNN,两者的优势互相抵消。

尼采文本生成

基于 char-rnn(https://github.com/karpathy/char-rnn)的文本生成(lstm_text_generation.py)很受欢迎。具体来说,它使用 LSTM 来「学习」文本并对新文本进行抽样。在使用随机的尼采文集(https://s3.amazonaws.com/text-datasets/nietzsche.txt)作为源数据集的 Keras 例子中,该模型尝试使用前 40 个字符预测下一个字符,并尽量减少训练的损失函数值。理想情况的是损失函数值低于 1.00,并且生成的文本语法一致。

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

两者的损失函数值随时间都有相似的变化(不幸的是,1.40 的损失函数值下,仍有乱文本生成),由于 LSTM 架构,CTNK 的速度更快。

对于下一个基准测试,我将不使用官方的 Keras 示例脚本,而是使用我自己的文本生成器架构(text_generator_keras.py),详见之前关于 Keras 的文章()。

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

报码:CNTK在Keras上表现如何?能实现比TensorFlow更好的深

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容