❶ keras 如何保存训练集与验证集正确率的差最小那次epoch的网络及权重
1、我认为模型是用训练数据集训练出来的,然后用验证数据集来验证就可以看出是否过度拟合 我这里是SAS9.4中文版的,使用“简单随机”抽样方法,该方法使得两个数据集没有交集,能够更好验证是否过度拟合 一种方法是比较ROC值,如果训练的比验证的。
❷ 如何从零使用 Keras + TensorFlow 开发一个复杂深度学习模型
最近刚开始使用theano, 经验不多,连个基本的模型都跑不通,于是去看了下Keras,源码比较简洁,可以当作theano的示例教程来看,感受如下:
文档看似很全,每个layer是干啥的,每个参数是啥都写了,但是不去读代码,实际很多人是无法从文档理解其具体用法的。这点看issue里的讨论里可以看出。同样,example似乎很多,而且都能直接run,还都是real world的数据集,看似很好,但是实际上,对于新手,如果需要的模型跟example里的不完全一样,不容易搞懂到底需要把输入输出的数据搞成啥格式。举个例子,example都是做的classification的,没有做sequence labeling的例子,如果想拿来做个pos tagging,不知道数据如何组织。当然,这些其实花一天读下代码或者好好翻翻issue讨论就可以解决了,但我相信不少人不会去认真读代码或者看讨论,而是直接换个工具。我感觉目前的doc只有懂了代码的人才能看懂,不懂得看文档还是没啥用。
2.项目很简单所以开发者不多,但是很活跃,每天都有新东西加进去。今天增加了一个新的分支后端可以用theano或者tensorflow了,不过貌似由于不支持scan,backend用tensorflow的没实现recurrent layer。他们也意识到文档的问题,觉得需要为小白用户多加点tutorial而不是光给develop看。
我没用过其他的framework,仅说keras</ol>拿来学习theano基本用法,很不错
库本身的代码,比较简单易读,我作为python菜鸟,也能看懂。目前model有sequential和grapgh两种,前者并不是指recurrent而是说网络是一层层堆的(也包括recurrent).其他的主要概念包括layer,regularizer, optimizer,objective都分离开。layer用于build每层的输出函数,model会用最后一层的输出,根据objective和每个layer的regularizer来确定最终的cost,然后在update时用optimizer来更新参数。把这四个看下加上model里的fit函数,就会用theano啦。很多模型都能cover,seq2seq这种也有现成的可用。建议不要光看example,多看看github上的 issues讨论,实在找不到,直接提问。效率方面,我不懂theano怎么优化,感觉keras的这种封装,没什么成本,跟自己用原生theano是一样的。当然,theano本身就好慢啊。。估计是我不懂用吧。。
❸ 怎么在keras中定义自己的目标函数
keras的后台支持tensorflow和theano,默认是tensorflow可以通过修改配置文件或定义环境变量来进行修改,详见keras文档。KERAS_BACKEND=tensorflowpython-c"fromkerasimportbackend"
❹ 《DeepLearningwithKeras》pdf下载在线阅读,求百度网盘云资源
《Deep Learning with Keras》(Antonio Gulli)电子书网盘下载免费在线阅读
资源链接:
链接:https://pan..com/s/1VJWd7nxHXg_t-AsnI5UIgg
书名:Deep Learning with Keras
作者:Antonio Gulli
豆瓣评分:7.8
出版社:Packt Publishing - ebooks Account
出版年份:2017-5-4
页数:322
❺ 深度学习有哪些好玩的且易于实现的论文
0. GitHub - Rochester-NRT/RocAlphaGo: An independent, student-led replication of DeepMind's 2016 Nature publication, "Mastering the game of Go with deep neural networks and tree search" (Nature 529, 484-489, 28 Jan 2016), details of which can be found on their website https://deepmind.com/publications.html.
这个项目火遍大江南北啊,就是第三方根据AlphaGo的论文给出的实现。最近工作太忙没空去看具体细节,底层用的是keras,具体的细节大家可以看看paper。另外今天发现了一个不错的slide: http://www.slideshare.net/ShaneSeungwhanMoon/how-alphago-works
当初和李世石大战的时候有很多”专家“都出来讲过这篇paper,包括在下……简单来说,AlphaGo的架构和传统的围棋AI相比并没有传统的创新,传统的机器博弈的架构包括三部分:
主体:AlphaBeta树
走子策略:某一步走哪最好
局面静态评估:当前谁更厉害
每当对方走出一步棋,我方就开始用走子策略判断一批优秀的候选着法,然后我们开始YY对方,针对我方的每一着,给对方选出一批优秀的着法进行对抗,以深入分析我方走子的可行性。然而由于棋局的复杂性,我们无法演绎到比赛结束,于是到达一定深度后,我们对当前的局势进行估计,然后根据这个分数反推回去,得到我们最好的招数,也就是下棋人常说的”下棋要多看几步“。
那么AlphaGo的厉害之处就在于,它把其中的第二、三项换成了CNN,CNN一来我们就得到了两个好处:1)它有强大的非线性映射能力,算出来的招数很厉害;2)CNN的深度学习能力使得搞围棋不用像过去搞围棋的人一样得花大量时间学围棋了!这点也是当初DeepMind在介绍Atari时说过的,一招CNN,搞定无数领域的难题。曾几何时,我们做博弈的写评估函数,都得对某种棋有很深的认识,基本上得做到业余中的佼佼者;现在有了CNN,你还是可以成为佼佼者,但是这方面的作用明显没有过去那么有用了。
1. GitHub - jisungk/deepjazz: Deep learning driven jazz generation using Keras & Theano!
这个是用LSTM写jazz风格的旋律,也是蛮厉害的!跑起来很容易,库用的是Theano,python人民的老朋友!相对比较简单。
[我准备最近把它啃下来把一些细节分享到这里!]
首先是music21这个库,一个很强大的为音乐人士准备的库(我以前怎么没发现这个库,真心很赞!)
2. 最近AlphaGo太火了,于是乎推荐一个增强学习玩Flappy Bird的代码:
GitHub - yenchenlin1994/DeepLearningFlappyBird: Flappy Bird hack using Deep Reinforcement Learning (Deep Q-learning).
亲测有效,很有意思,相信它足够好玩,也能激发大家的兴趣
由于我之前用keras和caffe多一些,所以对tensorflow了解不多,这里贴个中文的文档供大家参考源代码:
TensorFlow官方文档中文版_TensorFlow中文教程_TensorFlow开发中文手册[PDF]下载
[这里补上小鸟的一些代码总结]
flappy bird的程序主题上有两个部分,一部分可以算作“预测”,就是根据模型指示具体的操作,一部分是“学习”,就是根据对局的信息调整模型。
整个项目的根基就是这个游戏本身,在增强学习中可以看作是“Environment”,也就是能接收Action并反馈Next State和Reward的。作者使用了别人写好的现成的程序,不过还是在此基础上做了一定的修改,使游戏能够返回这两个信息。对于Next State,则是下一个时刻的图画信息,对于Reward,主要就是能分了,穿过一对管子得一分,死掉得负分。
预测部分:作者采用了E&E的策略,除了以模型进行判定之外,还以一定概率随机操作。
学习部分:当数据集收集到一定数量后开始学习,对于非完结的状态,要根据Bellman Equation进行Return的计算(Return和Reward有一定的差别)。然后将(state,action,return)扔给模型学习。
模型:CNN,具体的参数README讲得很清楚。
总体来看这就是一个模仿Atari实现的项目,不过他一板一眼地把把Atari的经验借鉴了过来,也做到不错的智能效果,所以值得一赞。
我仔细地看了关于这个项目的介绍,发现他的思想和Deep Mind的另一个增强学习的项目很相近,那就是Atari游戏。我找到了一个Github项目,没有亲测,后面有时间会做一下实验:
GitHub - kuz/DeepMind-Atari-Deep-Q-Learner: The original code from the DeepMind article + my tweaks
两个项目都是用CNN代替增强学习中的state-action-table,项目中的state就是当前的图像(4帧),action就是用户的操作(Flappy Bird就是点一下,昨天和同事聊同事还在说真正游戏里每点一下的轻重是有区别的,我想这个AI应该没有考虑这一点),由于这个空间十分大,我们用CNN来表示它,而学习的关键,也就是把这个表(模型)学习出来。
3.深度学习的在github有一个合集:
GitHub - kjw0612/awesome-deep-vision: A curated list of deep learning resources for computer vision