TensorFlow手把手入门之分布式TensorFlow — 3个关键点,把你的TensorFlow代码重构为分布式!

分布式架构就像哈姆雷特,一千个人眼中有一千种分布式方式 — David 9

对于机器学习模型,分布式大致分两类:模型分布式数据分布式:

模型分布式非常复杂和灵活, 它把整个机器学习模型分割,分散在多个节点上,在每个节点上计算模型的各个部分, 最后把结果拼接起来。如果你造了一个并行性很高的深度网络,比如这个,那就更棒了。你只要在每个节点上,计算不同的层,最后把各个层的异步结果通过较为精妙的方式汇总起来。

而我们今天要手把手教大家的是数据分布式。模型把数据拷贝到多个节点上, 每次算Epoch迭代的时候,每个节点对于一个batch的梯度都会有一个计算值,一个batch结束后,所有节点把梯度值汇总起来(ps参数服务器的任务就是汇总所有参数更新),从而进行更新。这就会导致每个batch的计算都比非分布式方法精准。相对非分布式,并行方法下,同样的迭代次数,收敛较快。 继续阅读TensorFlow手把手入门之分布式TensorFlow — 3个关键点,把你的TensorFlow代码重构为分布式!

业界 | 扒一扒Facebook人工智能谈判模型 — Facebook开源的”端到端”强化学习模型

端到端学习是那么吸引人, 因为它与理想的”自治”学习是那么近. — David 9

我们离完全”自治”的AI系统还很远很远, 没有自我采集样本的能力, 没有自己构建模型的能力, 也缺少”端到端” 学什么就像什么的灵活性. 而最近Facebook 人工智能研究所(FAIR)的研究人员公开了一个具有谈判新能力的对话智能体(dialog agents),并开源了其代码, 在”端到端” 这一方向上更进了一步:

这篇文章的突破仅限于智能对话, 更像是一篇专利, 教大家如何用一堆神经网络训练一个智能对话来获得谈判最终利益. 另外值得注意的是该pytorch项目虽然开源, 但是是经过 creativecommonsNonCommercial 4.0 非商业化协议保护的, 即, 你可以研究和使用代码, 但是你不能直接用它做商业用途.

言归正传, David 9 想说的是, 这个近乎科幻的对话机器人, 其实并没有那么神奇.

首先看看Facebook一伙人怎么收集对话(dialog)数据的 :

Facebook这伙人收集的数据是从亚马逊 Mechanical Turk 交易网站上 买来的, $0.15一个对话, 总共买了5808个对话. 继续阅读业界 | 扒一扒Facebook人工智能谈判模型 — Facebook开源的”端到端”强化学习模型

#16 那些没被玩坏的GAN—用条件对抗网络实现”图片到图片”的通用风格转换

AI的进步是不断为机器赋能: “深蓝”时代机器有了暴力搜索能力, “数据”时代有了依靠数据建模的能力, 甚至用GAN自动寻找目标函数.  下一个时代, 会不会是一个数据和模型泛滥, 机器自我寻找数据和创造模型的时代 ? — David 9

之前伯克利人工智能研究实验室(Berkeley Artificial Intelligence Research (BAIR) Lab)在Arxiv上放出的论文: Image-to-Image Translation with Conditional Adversarial Networks , 又把图片风格转换玩了一把:

来自: https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
图片到图片风格转换示例—马匹变斑马 来自: https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

如今, 想把GAN(生成对抗网络)训练出来并且不玩坏, 已经很了不起, 而这篇文章提出通用的框架用于”图片到图片”的风格转换.  加之投稿即将举办的cvpr 2017 , 又出自伯克利之手, 引来了不少目光.

条件对抗网络cGAN进行图片风格转换已经不是新鲜事, 继续阅读#16 那些没被玩坏的GAN—用条件对抗网络实现”图片到图片”的通用风格转换

TensorFlow手把手入门之 — TensorFlow保存还原模型的正确方式,Saver的save和restore方法,亲测可用

许多TensorFlow初学者想把自己训练的模型保存,并且还原继续训练或者用作测试。但是TensorFlow官网的介绍太不实用,网上的资料又不确定哪个是正确可行的。

今天David 9 就来带大家手把手入门亲测可用的TensorFlow保存还原模型的正确方式,使用的是网上最多的Saver的save和restore方法, 并且把关键点为大家指出。

今天介绍最为可行直接的方式来自这篇Stackoverflow:https://stackoverflow.com/questions/33759623/tensorflow-how-to-save-restore-a-model 亲测可用:

保存模型:

import tensorflow as tf

#Prepare to feed input, i.e. feed_dict and placeholders
w1 = tf.placeholder("float", name="w1")
w2 = tf.placeholder("float", name="w2")
b1= tf.Variable(2.0,name="bias")
feed_dict ={w1:4,w2:8}

#Define a test operation that we will restore
w3 = tf.add(w1,w2)
w4 = tf.multiply(w3,b1,name="op_to_restore")
sess = tf.Session()
sess.run(tf.global_variables_initializer())

#Create a saver object which will save all the variables
saver = tf.train.Saver()

#Run the operation by feeding input
print sess.run(w4,feed_dict)
#Prints 24 which is sum of (w1+w2)*b1 

#Now, save the graph
saver.save(sess, 'my_test_model',global_step=1000)

必须强调的是:这里4,5,6,11行中的name=’w1′, name=’w2′,  name=’bias’, name=’op_to_restore’ 千万不能省略,这是恢复还原模型的关键。 继续阅读TensorFlow手把手入门之 — TensorFlow保存还原模型的正确方式,Saver的save和restore方法,亲测可用

ICLR 2017论文精选#3 机器自我编程—用”递归” 提高神经编程解释器(NPI)的泛化能力(Best paper award 最佳论文奖)

机器自主编程的发展比我们想象的要快, 并且, 人们容易忽略的是, 互联网上数不尽的源代码本身是高质量的”训练数据”. —— David 9

今天的最佳论文, 是伯克利改进去年 DeepMind 突破性论文: NPI (神经编程解释器). 论文题为: MAKING NEURAL PROGRAMMING ARCHITECTURES GENERALIZE VIA RECURSION

能够让机器自己具有推理能力和编程能力一直是人们梦想, 而如今, 即使深度学习和神经网络发展壮大, 我们在这一领域依然是”婴儿学步”. 去年DeepMind的论文NEURAL PROGRAMMER-INTERPRETERS (NPI) 又似乎让我们看到了曙光. 一旦研究能在工业界大范围应用, 使用伪代码编程, 甚至构造”自治”的下一代互联网都成为可能.

言归正传, 伯克利的这篇论文对去年NPI的改进, 已经能够模拟简单的冒泡排序,拓扑排序,快速排序, 小学生进位加法运算等简单算法. 基本目标如下:

上图蓝色部分是NPI核心, 目标是训练出一个神经网络(往往基础是LSTM), 来模拟一个程序的行为. 最后训练出一个和目标程序行为一样的神经网络.

读者可能好奇训练数据是什么? 继续阅读ICLR 2017论文精选#3 机器自我编程—用”递归” 提高神经编程解释器(NPI)的泛化能力(Best paper award 最佳论文奖)