本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:【组图】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技(6)

时间:2017-03-10 02:41来源:118论坛 作者:118KJ 点击:
说点题外话,为啥我在看到这里的时候特别激动呢,笔者之前在开展团队内部的分布式训练平台时就遇到这个问题,我们在测试AlexNet模型时,发现多个p

说点题外话,为啥我在看到这里的时候特别激动呢,笔者之前在开展团队内部的分布式训练平台时就遇到这个问题,我们在测试AlexNet模型时,发现多个ps上的带宽占用差别极大,原因在与AlexNet模型的最后三个全连接参数太多,造成了ps的不均衡。

上面说了下Distributed TensorFlow我特别激动的东西,之后talk的就是比较简单的了,如果在TensorFlow做分布式的job,文档里面都有,很简单,这里不提了不对,这里还必须说下TensorFlow对于容灾的一个支持。

下图是几种分布式下机器挂掉的情况:

  

wzatv:【j2开奖】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

  

wzatv:【j2开奖】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

  

wzatv:【j2开奖】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

  

wzatv:【j2开奖】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

多麻烦是吧,但是没有关系,在TensorFlow下能够自动对这些进行一个快速的恢复,只需要更改一行代码:

wzatv:【j2开奖】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

  将模型布入生产环境

如何把训练好的模型快速部署在生产环境提供可用的服务,TensorFlow Serving就是专注在这块,我这里简单介绍下吧:

wzatv:【j2开奖】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

把训练好的模型提供生产环境可用的服务,通常有以下几个需求:

长期稳定服务,低时延

支持多个模型服务

支持同一模型多版本

保证计算时耗尽量小以保证一些实时性需求

mini-batching的支持,以提高效率

TensorFlow Serving的设计就是为了解决这些需求,而且TensorFlow基于gRPC,支持多种语言。

  TensorFlow生态

这部分讲了如果利用TensorFlow生态结合一些流程的框架比如Spark、Hadoop等等来更好地使用TensorFlow。

  1. 数据准备工作

支持的数据读取方法,从快到慢依次是:

tf.Example, tf.SequenceExample对象;

原生的读取CSV,JSON的OP;

直接从Python feed数据(最简单)。

如何在其他如Hadoop, Spark上支持TFRecords(Beam原生支持) 见(github.com/tensorflow/ecosystem)

  2. 集群的管理

TensorFlow支持以下多种框架:

wzatv:【j2开奖】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

  3. 分布式存储

wzatv:【j2开奖】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

  4. 容器支持

wzatv:【j2开奖】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

  5. 模型导出

SavedModel: 1,TensorFlow模型的标准保存格式;2,包括以下必须的assets,比如vocabularies(不太会翻,啥意思);

GraphDef: 通常在移动设备的模型保存比较通用。

  移动端以及嵌入式应用

  Mobile and Embedded TensorFlow

Pete Warden介绍了怎么在移动设备比如安卓、IOS设备、树莓派上面怎么使用TensorFlow来做一些开发,具体的可能对移动设备程序开发的小伙伴们比较有用,有兴趣的可以去看看https://www.youtube.com/watch?v=0r9w3V923rk&index=9&list=PLOU2XLYxmsIKGc_NBoIhTn2Qhraji53cv

  Hands On TensorBoard

这个talk主要是介绍了TensorBoard的一些应用,很多用法以前都没有尝试过,听演讲者描述之后受益匪浅。

  # Define a simple convolutional layer def conv_layer(input, channels_in, channels_out): w = tf.Variable(tf.zeros([5, 5, channels_in, channels_out])) b = tf.Variable(tf.zeros([channels_out])) conv = tf.nn.conv2d(input, w, strides=[1, 1, 1, 1], padding="SAME") act = tf.nn.relu(conv + b) return act# And a fully connected layer def fc_layer(input, channels_in, channels_out): w = tf.Variable(tf.zeros([channels_in, channels_out])) b = tf.Variable(tf.zeros([channels_out])) act = tf.nn.relu(tf.matmul(input, w) + b) return act# Setup placeholders, and reshape the data x = tf.placeholder(tf.float32, shape=[None, 784]) y = tf.placeholder(tf.float32, shape=[None, 10]) x_image = tf.reshape(x, [-1, 28, 28, 1])# Create the network conv1 = conv_layer(x_image, 1, 32) pool1 = tf.nn.max_pool(conv1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding="SAME")conv2 = conv_layer(pooled, 32, 64) pool2 = tf.nn.max_pool(conv2, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding="SAME") flattened = tf.reshape(pool2, [-1, 7 * 7 * 64])fc1 = fc_layer(flattened, 7 * 7 * 64, 1024) logits = fc_layer(fc1, 1024, 10)# Compute cross entropy as our loss function cross_entropy = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y))# Use an AdamOptimizer to train the network train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)# compute the accuracy correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(y, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))# Initialize all the variables sess.run(tf.global_variables_initializer())# Train for 2000 steps for i in range(2000): batch = mnist.train.next_batch(100)# Occasionally report accuracy if i % 500 == 0: [train_accuracy] = sess.run([accuracy], feed_dict={x: batch[0], y: batch[1]}) print("step %d, training accuracy %g" % (i, train_accuracy))# Run the training step sess.run(train_step, feed_dict={x: batch[0], y_true: batch[1]})

很多小伙伴都写过类似的代码,构造网络,然后设定训练方式,最后输出一些基本的结果信息,如下:

  step 0, training accuracy 10% step 500, training accuracy 12% step 1500, training accuracy 9% step 2000, training accuracy 13%

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容