TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Evaluation of Deep Learning Toolkits

94 点作者 marcelsalathe超过 9 年前

7 条评论

Smerity超过 9 年前
Given how many deep learning toolkits have popped up and the complexities involved, these evaluations are quite useful. Code comparisons would be even better but I feel that&#x27;s asking too much given how quickly things move :)<p>One important note, if you&#x27;re looking to actually do standard tasks, use a higher level library. My favourite is fchollet&#x27;s Keras[1] given that it supports using both Theano and TensorFlow as backends. It will likely support more in the future, giving you better performance (i.e. Neon is likely the next contender) and helping prevent legacy toolkit specific code.<p>I&#x27;m confident many of the issues with TensorFlow will be cleared up sooner than later, especially given it was only open sourced a month and a half ago. As an example, bidirectional RNNs are trivial to implement by yourself (~5 lines of code) but additionally TensorFlow has working code for that already in TensorFlow 0.6[2], the API is just not publicly listed.<p>Most important for this, single device performance is already at cuDNNv2 Torch levels for TensorFlow given the 0.6 update[3]. Both soumith and this evaluation haven&#x27;t updated the numbers but Google replicated the benchmarks and presented them at NIPS. They&#x27;re working on adding cuDNNv3 support, which should be another speed jump.<p>[1]: <a href="http:&#x2F;&#x2F;keras.io&#x2F;" rel="nofollow">http:&#x2F;&#x2F;keras.io&#x2F;</a><p>[2]: <a href="https:&#x2F;&#x2F;github.com&#x2F;tensorflow&#x2F;tensorflow&#x2F;blob&#x2F;master&#x2F;tensorflow&#x2F;python&#x2F;ops&#x2F;rnn.py#L227" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;tensorflow&#x2F;tensorflow&#x2F;blob&#x2F;master&#x2F;tensorf...</a><p>[3]: <a href="https:&#x2F;&#x2F;twitter.com&#x2F;deliprao&#x2F;status&#x2F;673888452736245760" rel="nofollow">https:&#x2F;&#x2F;twitter.com&#x2F;deliprao&#x2F;status&#x2F;673888452736245760</a>
评论 #10809762 未加载
gcr超过 9 年前
In my opinion, the author doesn&#x27;t try very hard to be constructively critical of all the systems.<p>Example: Caffe is given 3&#x2F;5 in the &quot;Architecture&quot; section because its layerwise design means you have to implement the forward&#x2F;backward passes yourself for both CPU and GPU. Torch uses exactly the same design and inherits all of its downsides, but is given 5&#x2F;5 for no reason.<p>I would also strongly mark Torch down because Lua is difficult for users who are familiar with Python&#x2F;C&#x2F;C++. At least, it&#x27;s difficult for me. I&#x27;m still routinely bit by off-by-one bugs due to Lua&#x27;s lack of 0-indexed arrays. Hardly the kind of thing you should be worried about in a scientific computing framework.<p>This article is a good start, but you should familiarize yourself with each framework and ignore the author&#x27;s subjective ratings.
emcq超过 9 年前
I would love to hear what people think of mxnet. I haven&#x27;t had time to do anything real with it but at a high level view seems super fast and flexible.
mjw超过 9 年前
On the whole this is useful, although I think it&#x27;s a little unfair to Theano in places.<p>* Performance<p>I feel they should score separately here for compilation&#x2F;startup time vs runtime. Theano&#x27;s compilation step can be slow the first time around. (In my personal experience not enough to add significant friction at development time, but YMMV -- I hear it can struggle with some more complex architectures like deep stacked RNNs.)<p>Its compilation process gives some unique advantages though -- for example it can generate and compile custom kernels for fused elementwise operations, which can give speed advantages at runtime that aren&#x27;t achievable via a simple stacking of layers with pre-canned kernels. Some of its graph optimisations are pretty useful too. In short smarter compilation can save you from having to implement your own kernels to achieve good performance on non-standard architectures. If you&#x27;re doing research that can matter.<p>* Architecture<p>The architecture of Theano&#x27;s main public API is clean and elegant IMO, which is what matters most.<p>When it comes to extensibility, firstly you don&#x27;t need to go implement custom Ops very often, certainly not as often as you might implement a custom Layer in Torch. That&#x27;s because Theano ships with lots of fundamental tensor operations that you can compose, <i>and</i> a compiler that can optimise the resulting graph well.<p>About the idea that it&#x27;s hacky that &quot;the whole code base is Python where C&#x2F;CUDA code is packaged as Python string&quot;: if you want to generate new CUDA kernels programatically then you&#x27;re going to want to use some high-level language to do it. As stated Theano gets some unique advantages from being able to do this. At some conceptual cost I&#x27;m sure it&#x27;d be possible to handle this code generation in a slightly cleaner way, but I don&#x27;t really see anyone else in this area doing it significantly better, so I think given the constraints it&#x27;s a bit subjective and slightly unfair to call it &quot;hacky&quot;.<p>I also think it&#x27;s something that matters more for framework developers than users. In my experience, on the relatively rare situations where you do need to implement a custom Op, it&#x27;s usually as a performance optimisation and you can get away with something relatively simple and problem-specific, essentially a thin python wrapper around some fixed kernel code.<p>The CGT project (which seems to be aiming for a better Theano) has some valid and more detailed criticism of the architecture of the compiler, which I think is fairer: <a href="http:&#x2F;&#x2F;rll.berkeley.edu&#x2F;cgt&#x2F;#whynottheano" rel="nofollow">http:&#x2F;&#x2F;rll.berkeley.edu&#x2F;cgt&#x2F;#whynottheano</a><p>I&#x27;m also hoping in due course that Tensorflow will come closer to parity with some of Theano&#x27;s compiler smarts, at which point I&#x27;ll be eager to switch as Tensorflow has some other advantages, multi-GPU for one.
elliott34超过 9 年前
Anyone using dl4j?<p><a href="http:&#x2F;&#x2F;deeplearning4j.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;deeplearning4j.org&#x2F;</a>
therobot24超过 9 年前
These are great, i hope they&#x27;ll update as frameworks do.
blazespin超过 9 年前
Wow, what a Torch puff piece. It&#x27;s good, but who uses lua..
评论 #10809906 未加载
评论 #10809819 未加载