ljg2np 发表于 2024-11-1 14:09

深度学习框架的相关讨论

<p>开源生态非常完善,为人熟知的深度学习相关的开源框架就有caffe,tensorflow,<a data-pretit="pytorch" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https://so.csdn.net/so/search?q=pytorch&amp;spm=1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;searchword\&quot;:\&quot;pytorch\&quot;}&quot;}" data-tit="pytorch" href="https://so.csdn.net/so/search?q=pytorch&amp;spm=1001.2101.3001.7020" target="_blank">pytorch</a>/caffe2,keras,mxnet,paddldpaddle,theano,cntk,deeplearning4j,matconvnet等,除此之外还有tiny-dnn,ConvNetJS,MarVin,Neon等等小众,以及CoreML等移动端框架。网上给出的调查表,如下:</p>

<div style="text-align: center;"></div>

<p>在选择开源框架时,要考虑很多原因,如开源生态的完善性,项目的需求,编程语言。对于选择什么样的框架的参考建议:</p>

<p>(1) 一般来说,tensorflow/pytorch必须会,这是目前开发者最喜欢,开源项目最丰富的两个框架。</p>

<p>(2) 如果你要进行移动端算法的开发,那么Caffe是不能不会的。</p>

<p>(3) 如果你非常熟悉Matlab,matconvnet你不应该错过。</p>

<p>(4) 如果你追求高效轻量,那么darknet和mxnet你不能不熟悉。</p>

<p>(5) 如果你很懒,想写最少的代码完成任务,那么用keras。</p>

<p>(6) 如果你是java程序员,那么掌握deeplearning4j没错的。</p>

<p>其它的框架也自有特点,可以考虑尝试。</p>

ljg2np 发表于 2024-11-1 14:13

<p>&nbsp;关于Caffe的介绍</p>

<p><a data-pretit="github" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https://so.csdn.net/so/search?q=github&amp;spm=1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;searchword\&quot;:\&quot;github\&quot;}&quot;}" data-tit="github" href="https://so.csdn.net/so/search?q=github&amp;spm=1001.2101.3001.7020" target="_blank">github</a>地址:<a href="https://link.zhihu.com/?target=https%3A//github.com/BVLC/caffe" rel="nofollow">https://github.com/BVLC/caffe</a>。</p>

<p>(1) 概述:</p>

<p>Caffe是伯克利的贾扬清主导开发,以C++/CUDA代码为主,最早的深度学习框架之一,比TensorFlow、<a data-pretit="mxnet" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https://so.csdn.net/so/search?q=Mxnet&amp;spm=1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;searchword\&quot;:\&quot;Mxnet\&quot;}&quot;}" data-tit="Mxnet" href="https://so.csdn.net/so/search?q=Mxnet&amp;spm=1001.2101.3001.7020" target="_blank">Mxnet</a>、Pytorch等都更早,需要进行编译安装。支持命令行、Python和Matlab接口,单机多卡、多机多卡等都可以很方便的使用。目前master分支已经停止更新,intel分支等还在维护,caffe框架已经非常稳定。</p>

<p>(2)caffe的使用通常是下面的流程:</p>

<p><img alt="" src="https://i-blog.csdnimg.cn/blog_migrate/4891920b3d5a945c146ac60b1e78fcee.jpeg" width="1080" /></p>

<p>以上的流程相互之间是解耦合的,所以caffe的使用非常优雅简单。</p>

<p>(3) caffe有很明显的优点和缺点。</p>

<p>优点:</p>

<ul>
        <li>以C++/CUDA/python代码为主,速度快,性能高。</li>
        <li>工厂设计模式,代码结构清晰,可读性和拓展性强。</li>
        <li>支持命令行、Python和Matlab接口,使用方便。</li>
        <li>CPU和GPU之间切换方便,多GPU训练方便。</li>
        <li>工具丰富,社区活跃。</li>
</ul>

<p>缺点:</p>

<ul>
        <li>源代码修改门槛较高,需要实现前向反向传播,以及CUDA代码。</li>
        <li>不支持自动求导。</li>
        <li>不支持模型级并行,只支持数据级并行</li>
        <li>不适合于非图像任务。</li>
</ul>

ljg2np 发表于 2024-11-1 14:15

<p>关于Tensorflow的介绍</p>

<p>github地址:<a href="https://link.zhihu.com/?target=https%3A//github.com/tensorflow/tensorflow" rel="nofollow">https://github.com/tensorflow/tensorflow</a>。</p>

<p>(1) 概述</p>

<p>TensorFlow是Google brain推出的开源机器学习库,可用作各类深度学习相关的任务。</p>

<p>TensorFlow =&nbsp;<a data-pretit="tensor" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https://so.csdn.net/so/search?q=Tensor&amp;spm=1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;searchword\&quot;:\&quot;Tensor\&quot;}&quot;}" data-tit="Tensor" href="https://so.csdn.net/so/search?q=Tensor&amp;spm=1001.2101.3001.7020" target="_blank">Tensor</a>&nbsp;+ Flow,Tensor就是张量,代表N维数组,这与Caffe中的blob是类似的;Flow即流,代表基于数据流图的计算。</p>

<p>(2) 特点</p>

<p>TensorFlow最大的特点是计算图,即先定义好图,然后进行运算,所以所有的TensorFlow代码,都包含两部分:</p>

<ul>
        <li>创建计算图,表示计算的数据流。它做了什么呢?实际上就是定义好了一些操作,你可以将它看做是Caffe中的prototxt的定义过程。</li>
        <li>运行会话,执行图中的运算,可以看作是Caffe中的训练过程。只是TensorFlow的会话比Caffe灵活很多,由于是Python 接口,取中间结果分析,Debug等方便很多。</li>
</ul>

ljg2np 发表于 2024-11-1 14:17

<h4>关于PyTorch的介绍</h4>

<p>github地址:<a href="https://link.zhihu.com/?target=https%3A//github.com/pytorch/pytorch" rel="nofollow">https://github.com/pytorch/pytorch</a>。</p>

<p>(1) 概述:一句话总结Pytorch = Python + Torch。</p>

<p>Torch是纽约大学的一个机器学习开源框架,几年前在学术界非常流行,包括Lecun等大佬都在使用。但是由于使用的是一种绝大部分人绝对没有听过的Lua语言,导致很多人都被吓退。后来随着Python的生态越来越完善,Facebook人工智能研究院推出了Pytorch并开源。Pytorch不是简单的封装Torch 并提供Python接口,而是对Tensor以上的所有代码进行了重构,同TensorFlow一样,增加了自动求导。</p>

<p>后来Caffe2全部并入Pytorch,如今已经成为了非常流行的框架。很多最新的研究如风格化、GAN等大多数采用Pytorch源码。</p>

<p>(2) 特点</p>

<ul>
        <li>动态图计算。TensorFlow从静态图发展到了动态图机制Eager Execution,pytorch则一开始就是动态图机制。动态图机制的好处就是随时随地修改,随处debug,没有类似编译的过程。</li>
        <li>简单。相比TensorFlow1.0中Tensor、Variable、Session等概念充斥,数据读取接口频繁更新,tf.nn、tf.layers、tf.contrib各自重复,Pytorch则是从Tensor到Variable再到nn.Module,最新的Pytorch已经将Tensor和Variable合并,这分别就是从数据张量到网络的抽象层次的递进。有人调侃TensorFlow的设计是&ldquo;make it complicated&rdquo;,那么 Pytorch的设计就是&ldquo;keep it simple&rdquo;。</li>
</ul>

ljg2np 发表于 2024-11-1 14:18

<h4>关于<strong>Keras的介绍</strong></h4>

<p>github网址:<a href="https://link.zhihu.com/?target=https%3A//github.com/keras-team/keras" rel="nofollow">https://github.com/keras-team/keras</a>。</p>

<p>(1) 概述</p>

<p>Keras是一个对小白用户非常友好而简单的深度学习框架,严格来说并不是一个开源框架,而是一个高度模块化的神经网络库。</p>

<p>Keras在高层可以调用TensorFlow,CNTK,Theano,还有更多的库也在被陆续支持中。 Keras的特点是能够快速实现模型的搭建,是高效地进行科学研究的关键。</p>

<p>(2) 特点</p>

<ul>
        <li>高度模块化,搭建网络非常简洁。</li>
        <li>API很简单,具有统一的风格。</li>
        <li>容易扩展,只需使用python添加新类和函数。</li>
</ul>

ljg2np 发表于 2024-11-1 14:26

<h4>学习开源框架,通常要考虑以下几点:</h4>

<p>(1) 不同任务数据的准备和使用。</p>

<p>(2) 模型的定义。</p>

<p>(3) 训练过程和结果的可视化。</p>

<p>(4) 训练方法和测试方法。</p>

<p>一个框架,官方都会开放有若干的案例,最常见的案例就是以MNISI数据接口+预训练模型的形式,供大家快速获得结果,但是这明显还不够,学习不应该停留在跑通官方的demo上,而是要解决实际的问题。</p>

<p>要学会从自定义数据读取接口,自定义网络的搭建,模型的训练,模型的可视化,模型的测试与部署等全方位进行掌握。</p>

ljg2np 发表于 2024-11-4 14:47

<div class='shownolgin' data-isdigest='no'><p>深度学习框架通过提供API和软件工具,可以方便地定义和训练神经网络模型,用于支持和简化深度学习算法的设计、训练和部署。</p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

ljg2np 发表于 2024-11-4 14:49

<div class='shownolgin' data-isdigest='no'><p>深度学习框架通常包括:</p>

<p>1、前端API:用于定义和配置神经网络模型的结构和参数,例如层、激活函数、优化器等。</p>

<p>2、计算引擎:用于执行神经网络模型的前向传播和反向传播算法,进行梯度计算和参数更新。</p>

<p>3、数据管理和预处理:用于加载和处理训练数据和测试数据,进行数据增强和批量处理等操作。</p>

<p>4、硬件加速和分布式计算:用于在多个GPU或分布式系统上进行高效的并行计算和训练。</p>
</div><script>showreplylogin();</script>

hellokitty_bean 发表于 2024-11-8 18:10

<div class='shownolgin' data-isdigest='no'><p>总体感觉,总结得非常好。。。。。。。。。。。。。。。。。。。。<img height="63" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/victory.gif" width="61" /></p>
</div><script>showreplylogin();</script>

ljg2np 发表于 2024-11-9 05:36

<div class='shownolgin' data-isdigest='no'> 本帖最后由 ljg2np 于 2024-11-9 05:38 编辑

<p>hellokitty_bean&nbsp;发表于&nbsp;2024-11-8&nbsp;18:10</p>
<p>总体感觉,总结得非常好。。。。。。。。。。。。。。。。。。。。</p>
<p></p>
<p><p>还在不断摸索、探讨和学习中,感谢你的认可和支持:handshake</p></p>
<p></p>
</div><script>showreplylogin();</script>

hellokitty_bean 发表于 2024-11-9 13:48

<div class='shownolgin' data-isdigest='no'><p>共同学习。。。共同摸索。。。。共同探讨。。。。共同进步!。。。<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/loveliness.gif" width="48" /></p>
</div><script>showreplylogin();</script>

通途科技 发表于 2024-11-11 05:34

页: [1]
查看完整版本: 深度学习框架的相关讨论