深度学习资料汇总(满满的干货)

 

Deep Learning(深度学习),一个很火热的研究方向,然而,它已经有很久的历史,只不过由于当时没有充足的数据和强大的计算能力,导致它此起彼伏了好几次。如今,他为什么会这么火热,最主要的原因有两点:

1.大数据时代已经来临,国内很多的公司每天可以收集到足够多的信息,并将其存储起来,对其经过预处理之后,将其作为深度学习的深入。总之,企业已经有了海量的数据,基本上可以满足你的各种需求。除此之外,越来越多的数据集被开放了出来,但是主要用来进行“学术研究”,这些数据的贡献者主要是国外的公司、大学、研究机构等,而国内在这方面做得不是很好。

2.计算机的计算能力已经大幅度提升,这主要还要归功于这些硬件公司们的不懈努力,在这里给你们以崇高的敬意!主要的贡献者包括Microsoft、NVIDIA、IBM、Google、ARM、TI、Xillion等众多知名企业。虽然CPU的计算能力已经很强,但是明显可以感觉到的是CPU的发展已经到了一个瓶颈阶段。发展的速度比较缓慢。而对应的其他硬件厂商则发展迅速,主要的代表是NVIDIA,这个GPU提供商,由于GPU的高性能,使得它广泛的应用到了深度学习领域中,用来训练Model。但是它的致命缺点是“功耗太高”,需要耗费好大的电力资源,同时需要认真的考虑散热。这就给Xillion–这个FPGA提供商创造了一个良好的机会,因为FPGA最大的特点就是“可编程、低功耗,高速率”,这使得它成为了一种候选硬件,但是当前FPGA在深度学习领域的应用并不多,主要还是GPU。这可能是因为它对编程人员有一定的要求,需要你懂得一定的硬件架构知识,即门槛相对会比较高一些。当然除了这两者之外,还有一个竞争对手,那就是TPU – 由谷歌主导的一种专门用于深度学习的处理器,这实质上是一种集成电路(ASIC)。它的优点是“高速”,但是缺点是“只能应用于特定领域,而且成本极高。”谷歌在近日已经发表论文并声称自己的TPU可以比GPU快几十倍!但是经过很多专家和学者的讨论,一致认为TPU更多的会作为“深度学习中的一部分,不可能完全使用TPU”。即更好的一种趋势会是“用GPU进行训练,用TPU进行测试”,即不同的初始干自己适合干的事,共同协作起来,从而从本质上加速整个流程。我本人很赞同这个观点。

正是由于这两个主要的原因导致又重新复活了起来。 
好啦,开始我们的正题。

1.首先要推荐的是“Github”,这个开源平台,为什么要推荐它呢,原因有以下几点: 
1)它里面收集了大量最新的技术成果,主要包括“论文” “项目”等;

2)许多知名的国际或者国内的大公司、研究机构、知名学者和大牛们都会有自己的Github。便于发布或者开源一些框架或者代码。

3)它可以作为你自己的一个“数据仓库”,你可以免费的在它上面存储大量的数据,上传一些自己的工程或者项目。这样不仅不需要大量的硬盘资源,同时可以和全球的顶尖大牛们分享经验一起探讨和学习。这是一个难得的好机会。

4)其实,它也是一个寻找“代码Bug的解决方案的好地方” – Bug解决利器。在这里有众多的项目和代码,许多人可能都会遇到这样或者那样的问题,他们会提出问题并探讨问题,找出合适的解决方案。如果你有一个“code方面的问题”,一般都可以在它里面找到一个“完美的解决方案”。让我感受最为深刻的是,我在学习Linux的过程中在Github中解决了很多的问题,并且学到了好多实用的知识或者技巧。这一点是很多人都会忽略掉的一个地方。如果你没有解决问题,你可以去stackoverflow stackoverflow寻找解决方案。

5) 这里有一个小的方法:你可以简单的通过在Github中查找某个技术,通过观察其“Watch”和“Star”的大小来初略的判断某种技术的受欢迎程度。虽然这并不完全准确,但是它会给你提供一些思路,可以更好的帮助你找到最新最热的前沿技术。一个具体的案例就是:如今,各大公司都推出了自己的“深度学习框架”,你如果想要想要了解那个框架最受欢迎,你可以通过观察Star的个数得出:“目前使用tensorflow的人是最多的,远远的超越了其它框架”。当然这是有原因的。找到了方向后,你就可以深入的了解它来寻找真正的原因。

6)当然它也是一个学习新技术的平台,因为这里面有来自全球的知名学者和大牛们,他们大多都会分享自己的项目。你可以通过学习他们的项目,慢慢的积累一些方法和技巧。比如:“编写整洁的代码 – 代码风格” “如何使用具体的函数” “学习他们的项目布局以及代码” “优化代码的效率” “结合多个工具高效的开发自己的代码”等等。一个简单的例子就是“你可以通过学习tensorflow官方提供的标准样例代码去深入的学习tensorflow,在此期间你很块就会知道tensorflow中有那些常用的模块,如何使用具体的某个函数,通常需要配置哪些参数,如何优化代码的结构,项目的构成等,同时,你可以通过代码的注释学到一些有用的方法,如FLAGS的使用;除此之外,你会学会使用CNN、RNN、LSTM并通过实践来理解它们的原理;当然,你也会看到它的应用领域和前景。”

7)你可以通过Github交到一些志同道合的朋友,认识一些大牛,一起成长,一起学习,一起进步。相信当你长时间使用Github之后,你可以深深的感受到这一点!

总之,它有很多的优点,有待我们自己去深入的发掘和分析。以上只是我个人的见解。就凭以上的原因就值得你去注册一个Github账号啦!

Github官网链接 
你可以通过以下的界面开始你的Github之旅。 
这里写图片描述

2.接下来我要推荐的是“arXiv” – 一个深度学习的经典论文集,在它里面会收录一些预发表的论文,你可以提前了解你当前方向的发展动态。更早的了解别人的现状。这里面的论文质量相当高,都是深度学习领域的一些泰斗或者顶尖的公司或者团队预发表的高质量论文。一般都是被“CVPR” “ECCV” “ICCV” “NLP” “ACM”等一流的国际会议所收录的一些论文。这些论文不仅会有详细的讲解,同时大多都会发布开源的代码,你可以借助他们发布的代码更好的去验证算法的性能,更快的开发出自己的新算法或者新代码。

原因如下所述: 
1)首先,可以使用它来把握“深度学习的最新成果”,这对一个搞科研的人来说极其重要; 
2)其次,你可以进行高级检索,类似谷歌的高级检索功能; 
3)你可以下载到免费的PDF论文,即不用花钱,同时能学到最新的技术; 
4)你可以为这些论文添加BookMark,这里支持多种软件;

这是它的主页:在这里你可以看到一些最新的论文。 
主页

这是检索AI后的结果:这里会选择有关A方面最新的论文,并进行排序。 
AI

高级检索功能: 
高级检索功能

论文界面:你可以下载免费的PDF等多个版本的论文。 
论文下载界面

3.接下来推荐的是一些开源框架的官方网站 
原因如下: 
1. 在官方网站,你可以找到详细的使用文档,包括示例代码和API使用; 
2. 你可以查询API接口详细参数; 
3. 你可以找到Install这些框架的指南; 
4. 你可以和一些志同道合的朋友讨论针对某个框架的某个问题,毕竟“自己开发的东西自己最了解”。 
5. 你可以详细的了解到这个框架所具有的功能,以及如何快速高效的使用它;

网址如下:
1) Tensorflow -- https://www.tensorflow.org/
github:https://github.com/tensorflow/tensorflow

2)  Caffe -- http://caffe.berkeleyvision.org/
github:https://github.com/BVLC/caffe

3) Theano -- http://deeplearning.net/software/theano/install.html
github:https://github.com/Theano/Theano

4) keras -- https://keras.io/
github:https://github.com/fchollet/keras

5) Torch -- http://torch.ch/
github:https://github.com/torch/torch7

6) Lasagne -- http://lasagne.readthedocs.io/en/latest/
github:https://github.com/Lasagne/Lasagne

7) MXNet -- http://mxnet.io/
github:https://github.com/dmlc/mxnet

8) DIGITS -- https://developer.nvidia.com/digits
github:https://github.com/NVIDIA/DIGITS

9) CNTK -- https://cntk.codeplex.com/
github:https://github.com/Microsoft/CNTK

10) PaddlePaddle -- http://www.paddlepaddle.org/
github:https://github.com/PaddlePaddle/Paddle

11) Deeplearning4j -https://github.com/deeplearning4j/
deeplearning4j

注: 
1) 以上列出了一些最常用的深度学习框架,并没有列全,感兴趣的同学可以自己搜索。 
2) 可悲的一件事是,国内基本上除了PaddlePaddle没有好的深度学习框架,而国内的众多大牛却是许多框架的开发者!中国需要有自己的深度学习框架!BAT,你们必须努力!中国的大牛们,我们需要努力!

4.下面,我给大家推荐一些有关深度学习方面的学习资料

 

1)http://cs231n.github.io/ 
这个“李飞飞”教授有关CNN的资料,讲解的特别清晰。

2)http://videolectures.net/Top/Computer_Science/Machine_Learning/Deep_Learning/ 
这个国外一个有关“深度学习”的视频链接,里面有很多精彩的视频。有CNN、RNN、LSTM、GAN、RL等。

3)http://deeplearning.net/ 
这是一个网站,里面含有有关“深度学习”的“数据集” “软件” “研究小组” “demo” “tutorials”以及“深度学习领域最新动态”等很多实用的内容。

4)https://cn.udacity.com/course/deep-learning–ud730 
这是一个视频平台,里面有许多高质量的视频,包括很多领域,当然也有“深度学习” “机器学习” “智能驾驶” “tensorflow”等一些新技术。大多数的视频都是免费的。而且任课教师都是该领域的一些大牛。分为“初阶” “中阶” “高阶”课程,你需要根据自己的实际情况进行选择。

5)https://www.coursera.org/learn/machine-learning/home/welcome 
这是深度学习大牛 – 吴恩达在斯坦福讲授的“深度学习课程”。内容讲解的很全面,也很清楚,可以作为一个深度学习的入门教程,值的你去仔细品味。这个教程应该是很多人入门必看的视频。

6)https://web.stanford.edu/class/cs20si/ 
这个一个有关NLP的经典视频,由斯坦福大学提供。对于NLP领域的人来说,是一个必看的教程。随着NLP与CV领域不断的融合,我建议CV领域的我们也应该了解了解,这样才能更好的促进NLP与CV的高效融合。

7) http://blog.csdn.net/nnnnnnnnnnnny/article/details/53524858 
这是吴恩达出的一本新书的中文翻译版,可以在闲暇时间看一看,可以加深你对深度学习中某些知识的理解,使你更加高效的进行项目开发和实践。

8)http://www.open-open.com/lib/view/open1476758313725.html 
这个某位大牛整理的一些资料,里面含有很多内容,包括“基本的模型” “数据集” “案例” “强化学习”等

9)http://blog.csdn.net/songrotek/article/details/50572935 
这是一个有关DRL即深度强化学习的资料,作为一个较新的技术,网上的资料极少,很难得。适合高阶水平的学者进行研究。

10)http://mp.sohu.com/profile?xpt=YWlfZXJhQHNvaHUuY29t 
这一一个国内的收集有关深度学习方面最新研究的网站 – 新智元,里面会对最新发表的一些高质量论文进行简要的总结,并提供下载链接,可以作为你的“今日头条”。在闲暇之余了解一下最新动态。每天它都会更新一部分内容,值的你去关注。很专业的一个网站!

11)https://github.com/muupan/deep-reinforcement-learning-papers 
这个一位大牛在Github上收集的“有关深度学习领域的经典论文集”。这个主要是“针对DL(强化学习)”的,因为这也是一个比较新的研究方向,网上的资料很少,值的收藏!

12) https://github.com/junhyukoh/deep-reinforcement-learning-papers 
这也是在Github上的“RL论文集”,和上一个相比,有更多的论文,内容更加充足,更加全面。如果你对这方面的内容感兴趣,值的进行收藏,闲暇之时可以理解理解里面的论文。学习学习“强化学习”,这在许多大公司里面有着很多的用处。

13)https://github.com/google/seq2seq 
这是Google开源的一个“seq2seq”的库,seq2seq有很多用途,例如“翻译系统” “给图像、视频添加标题” “文本转换为图像”。有着很好的应用前景,利用这个库你可以更快的开发自己的seq2seq模型。

14)http://210.28.132.67/weixs/project/CNNTricks/CNNTricks.html 
这是一篇有关DNN使用技巧的一篇文章。

15)https://github.com/tensorflow/models/tree/master/slim#pre-trained-models 
这是tensorflow的一个Model库,里面有很多预训练好的Model,可以用来初始化你饿新的Model,从而获得更好的效果。包括LeNet、AlexNet、GoogleNet等经典模型;

16)https://github.com/BVLC/caffe/wiki/Model-Zoo 
这是一个Caffe的Model库,里面包含了多个经典的Model,你可以用它们初始化你自己的Model。

17)https://github.com/yusugomori/DeepLearning 
这是一个利用多种语言来学习深度学习的库,包括C、C++、Go、Java、Python等,同时含有许多基本的网络CNN、AE、DBN等。

18)https://github.com/Piyush3dB/awesome-deep-computation 
这是一些有关“深度学习硬件相关的一些资料”,包括“内存/周期优化”等。如果想用硬件加速DNN,可以参考这里面的一些内容。

19)https://github.com/fengbintu/Neural-Networks-on-Silicon 
这也是一个有关DNN硬件实现的资料,包括利用FPGA实现等。包括各种网络的实现以及加速的硬件实现。

20)https://www.analyticsvidhya.com/blog/2016/08/deep-learning-path/ 
这是一个利用Python进行深度学习的简单案例,深度学习开发语言有很多种,但是使用的最为广泛的一种语言是“Python”,许多的深度学习框架都提供了相应的python接口,即便是刚开始不支持Python,后期都可能会有新的支持python接口的版本退出。一个具体的例子就是Torch,最后退出了pytorch。Python十分简单,使用起来非常方便,可以大大加速项目的开发。但是与C和C++相比,它的执行效率比较低。基于这个原因,很多深度学习框架将C++和Python结合起来,利用Python快速的构建Model,而运行时却使用C++在后台运行。这样更加完美,tensorflow就是一个案例。

21)https://github.com/ty4z2008/Qix/blob/master/dl.md 
这是一个大牛收集的有关深度学习的资料,里面用中文解释,包括“书籍” “文献” “机器学习” “统计学”等,内容非常的丰富,有各种各样的资料,可以满足不同人的不同需求。“只有你想不到,没有大牛做不到的,哈哈”。

22)http://deeplearning.stanford.edu/tutorial/ 
这是一个UFLDL提供的关于“无监督学习和深度学习”的理论教材,里面介绍了深度学习中一些非常基础的概念和知识,例如“MLP” “Pooling”等,可以作为一个入门资料,也可以作为一个加强理解的资料,在你编写了一部分代码之后,重新来理解这些概念,你会有一些全新的理解。可以真正的加深你对这些内容的理解。

23)http://work.caltech.edu/library/ 
这是一个“机器学习”的视频库。

以下是一些大牛主页

 

5.下面介绍一些深度学习领域大牛的主页,你可以通过浏览他们的主页,来把握深度学习最近的动态,以及该领域的一些热点,一般大牛都走在科技前沿,他们的研究方向的前景一般都不差。只要你有兴趣,可以在他们的研究领域做一些基础的研究。

1)lecun -- http://yann.lecun.com/
# 当前主要进行GAN(对抗神经网络的研究)

2) Yoshua Bengio http://www.iro.umontreal.ca/~bengioy/yoshua_en/index.html
# 主要从事深度学习领域“基础理论”的研究,目前仍在“学术界潜心研究”。

3)Andrew Ng -- http://www.andrewng.org/
# 吴恩达,一个再深度学习领域赫赫有名的华人。在深度学习的部署方面很有造诣。有很强的项目经验。不过,最近刚从百度辞职,不知如今身在何处?

4)LiFeiFei http://vision.stanford.edu/feifeili/
# 李飞飞,深度学习领域的又一个“大牛华侨”,目前是斯坦福大学的教授。主要从事的是CV领域。

5)Lan goodfellow -- http://www.iangoodfellow.com/
# 深度学习领域的一个新秀,目前的研究方向是GAN。目前在DeepMind工作。

6)张潼 -- http://tongzhang-ml.org/research.html
又一个深度学习领域的“华人大牛”,目前在腾讯工作。主要研究DL(增强学习)。

以下是他们的个人照片: 
李飞飞 
李飞飞

Yoshua Bengio 
Yoshua Bengio

Lan goodfellow 
这里写图片描述

张潼 
这里写图片描述

吴恩达 
这里写图片描述

lecun 
这里写图片描述

注:如今,深度学习领域的大牛太多啦,我这里仅仅列举了其中几个“顶级大牛”,他们时真真正正的大牛,当之无愧的大牛,给深度学习领域做出了巨大的贡献,在这里给他们致以崇高的敬意!

6.最后,我在这里给大家意见一些有用的公众号,这绝对不是在打广告,这些公众号都有很多干货,值的你去“关注”它。

1)新智元 – 在国内,我认为这是一个很权威的“深度学习资讯平台”,每天都会更新内容,并且提供下载链接。这是我个人强烈推荐的,“不用不知道,用了呱呱叫”。

2)AI世代 – 这一个一个资讯平台,也会不时的更新内容,但是相对来讲,更新的内容较少,而且更新的速度比较慢。

3)AI科技评论 – 这也会一个资讯平台,每天会定期更新内容,而且干货很多,而且每天的问题都很有针对性,和新智元不相上下。值的你去关注一下!

4)深度学习世界 – 一个稍微小众的平台,更新速度比较慢,更新的数量也比较少,但是确实都是干货,一些很实用的技术和方法。建议你去关注。

注:更多的咨讯平台需要我们一起去挖掘,欢迎大家提出更多更好的资讯平台,我们共同研究,共同学习。毕竟这是一个“需要共享学习的社会”。一个微不足道的共享可能会服务到很多的人。希望大家都能贡献自己的一份力量。

```
好啦,这篇Blog暂时写到这里,后续还会不断的补充新的内容,有兴趣的同学可以持续关注。

注:
1)由于个人的能力有限,只能收集到有限的资源,如果大家发现更好的资源,可以联系我,我会随时更新,让更多的人看到这些有用的资料,大家一起学习,一起进步。
2)欢迎你提出你的宝贵意见,如果你有好的想法或者建议可以随时联系我,我会及时回复大家。谢谢。
3)由于本博客是我个人的原创,如果你想要装载,请给我发送信息,我会及时回复大家。
邮箱:1575262785@qq.com
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Java 数组是存储相同类型数据的集合,它们具有固定大小并且在创建后大小不可更改。在Java中,数组通过声明和初始化来创建。声明数组的语法形式如下: ```java int[] arr; // 声明了一个 int 类型的数组 ``` 在声明数组之后,需要通过初始化该数组,也就是为数组分配内存和赋初值。初始化数组的方式有两种:静态初始化和动态初始化。静态初始化是在声明数组的同时给数组元素赋初值的方法,语法形式如下: ```java int[] arr = {1, 2, 3, 4, 5}; // 静态初始化数组 ``` 动态初始化是在声明数组后通过循环或用户输入等方式给数组元素赋值的方法,语法形式如下: ```java int[] arr = new int[5]; // 动态初始化数组 for (int i = 0; i < arr.length; i++) { arr[i] = i + 1; } ``` Java 数组还具有一些常用的属性和方法,如`length`属性用来获取数组的长度,`clone()`方法用来复制数组,`toString()`方法用来将数组转换为字符串等。 除了一维数组外,Java 还支持多维数组,如二维数组、三维数组等。多维数组的声明和初始化方式与一维数组类似,只是需要使用多个`[]`来表示维度。 值得注意的是,Java 中的数组是引用类型,因此在传递数组参数时,实际上传递的是数组的引用,而不是数组的副本。这意味着在方法中对数组的修改会影响到原数组。 总的来说,了解和掌握 Java 数组的声明、初始化、属性和方法,并能灵活运用,对于 Java 编程是非常重要的。希望本文能够为大家提供关于 Java 数组的全面解析和干货知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haoji007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值