2017-05-27 47 views
1

首先,我假设一个低层次有意识的实现会导致最有效的实现(就时间和内存消耗而言)。如何比较Theano和Tensorflow的性能?最高的lvl功能或最低的lvl实现?

我只是想测量他们在一些工作上的表现,这些工作是我目前正在做的工作。目前,我的代码的结构是这样

  • Tensorflow
    对于正向传播我使用tf.nn.dynamic_rnn(),这似乎是相当高的水平给我。然后我限定穿过tf.Variable()输出偏置和权重,计算与logits tf.matmul()和损失与tf.nn.sparse_softmax_cross_entropy_with_logits() 对于训练我使用tf.train.AdamOptimizer ().minimize(),这看起来非常高。

  • Theano: My Theano执行看起来更低级别。我从他的网站上描述的丹尼布里茨实施(http://www.wildml.com/2015/10/recurrent-neural-network-tutorial-part-4-implementing-a-grulstm-rnn-with-python-and-theano/),但我做了一些小改动。所述FOWARD传播几乎手动进行,宣告内部LSTM几乎所有操作与theano功能,例如th.nnet.hard_sigmoid()t.tanh()t.ones_like()t.softmax( )numpy用于矩阵乘法的函数。该函数通过循环使用theano.scan()函数。反向传播也几乎是手动进行的,使用梯度微积分的th.grad()和具有用于更新等待的更新的th.function()

那么你怎么看?这是一个公平的比较?或者我应该在2个实现之间寻求更加相等数量的封装?如果你愿意,我可以包含更多关于我的代码的细节,甚至可以包含它的草图。这类问题涉及自然语言处理和生成。也许我会包括更多的感受。我将使用2级的LSTM。

回答

2

你可以看看这个为基准Theano,Tensorflow和火炬的RNN性能深度学习框架:

https://github.com/glample/rnn-benchmarks

鉴于这是发展非常快的领域,我可能是有点老了,但您可以将其用作更新基准的起点。

+0

谢谢,我会检查出来。 –