tensorflow(五)
一、单机编程框架
单机程序是指启动和运行都在一台机器的一个进程中完成,因为没有网络开销,非常适合参数不多、计算量小的模型。
步骤,创建单机数据流图,创建并运行单机会话。
saver = tf.train.Saver()
sess = tf.InteractiveSession()
tf.global_variables_initializer().run() for i in range(1000):
batch_xs,batch_ys = mnist.train.next_batch(100)
sess.run(train_step,feed_dict={x:batch_xs,y_=batch_ys})
if i%100 = 0:
saver.save(sess,'mnist.ckpt')
correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
sess.run(accuracy,feed_dict={x:mnist.test.images,y_:mnist.test.labels})
如果想指定机器上的设备如cpu,gpu
可以使用
with tf.device('/cpu:0'):
……
二、分布式程序编程框架
PS-worker是一种经典的分布式架构,它在大规模分布式机器学习和深度学习中有广泛的应用,tensorFlow提供了对PS-worker的支持。
步骤
(1).pull,各worker根据数据流图的拓扑结构,从PS拉取最新的模型参数
(2).feed,各worker按照一定的规则填充不同批次的批数据
(3).compute,各worker使用相同的模型参数和不同的批数据计算梯度,得出不同的梯度值
(4).push,各worker将上一步计算得到的梯度值推送到PS
(5).update,PS汇总数据,求出梯度平均值后更新模型参数
分布式程序运行步骤 创建集群,创建分布式数据流图,创建分布式会话
集群创建, tf.train.Server(host,job_name,task_index)
将操作放置在目标设备上
with tf.device('/job:PS/task:0'):
weights_1 = tf.Variable()
with tf.device('/job:PS/task:1'):
weights_2 = tf.Variable()
with tf.device('/job:worker/task:1'):
tf.nn.relu()
3.训练机制
同步训练机制
每个worker独立训练,直到所有worker计算出梯度值后进行模型参数的汇总计算,并更新当前训练步的模型参数,计算较快的worker需要阻塞等待计算较慢的worker
y = tf.nn.softmax(tf.nn.xw_plus_b(hid,sm_w,sm_b))
cross_entropy = -tf.reduce_sum(FLAGS.learning_rate)
if FLAGS.sync_replicas:
opt = tf.train.SyncReplicasOptimizer(opt,replicas_to_aggregate=10,total_num_replicas=100,name='mnist_sync')
opt.minimize(cross_entropy,global_step=1)
异步训练机制
每个worker独立训练,计算出梯度值后立即进行模型参数计算,每个worker无阻塞等待其他所有worker的梯度计算完成。
tensorflow(五)的更多相关文章
- TensorFlow(五):手写数字识别加强版
# 该版本的最终识别准确率达到98%以上 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_d ...
- Anaconda安装和卸载+虚拟环境Tensorflow安装以及末尾问题大全(附Anaconda安装包),这一篇就够了!!!
前言 实话说,在自己亲手捣鼓了一下午加一晚上后,本人深深地感受到了对于"Anaconda安装+虚拟环境Tensorflow安装"里面的坑点之多,再加上目前一些博主的资料有点久远,尤 ...
- centos7 手把手从零搭建深度学习环境 (以TensorFlow2.0为例)
目录 一. 搭建一套自己的深度学习平台 二. 安装系统 三. 安装NVIDA组件 四. 安装深度学习框架 TensorFlow 五. 配置远程访问 六. 验收 七. 福利(救命稻草
- tensorflow笔记(五)之MNIST手写识别系列二
tensorflow笔记(五)之MNIST手写识别系列二 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7455233.html ...
- tensorflow入门笔记(五) name_scope和variable_scope
一.上下文管理器(context manager) 上下文管理器是实现了上下文协议的对象,主要用于资源的获取与释放.上下文协议包括__enter__.__exit__,简单说就是,具备__enter_ ...
- 深度学习(五)基于tensorflow实现简单卷积神经网络Lenet5
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8954892.html 参考博客:https://blog.csdn.net/u01287127 ...
- tensorflow学习笔记五----------逻辑回归
在逻辑回归中使用mnist数据集.导入相应的包以及数据集. import numpy as np import tensorflow as tf import matplotlib.pyplot as ...
- tensorflow学习笔记五:mnist实例--卷积神经网络(CNN)
mnist的卷积神经网络例子和上一篇博文中的神经网络例子大部分是相同的.但是CNN层数要多一些,网络模型需要自己来构建. 程序比较复杂,我就分成几个部分来叙述. 首先,下载并加载数据: import ...
- TF Boys (TensorFlow Boys ) 养成记(五)
有了数据,有了网络结构,下面我们就来写 cifar10 的代码. 首先处理输入,在 /home/your_name/TensorFlow/cifar10/ 下建立 cifar10_input.py,输 ...
随机推荐
- 群论&Polya计数
群论&Polya计数 其实在我听课的过程中,我发现针对于学习OI中的群并没有什么过多必要向内学习... 群 以后会补的. 就是\(QQ\)群. 置换 置换就是一个... \[ \begin{m ...
- js 月份选择器(只选择到月)
需要如下js https://pan.baidu.com/s/1c1T9wY0 在html中添加如下代码 <input onclick="setmonth(this)" /& ...
- Objective-C 和 Swift 第三方库使用
https://www.jianshu.com/p/6be32a047ca7 原文地址: Objective-C 和 Swift 第三方库使用 注1:文章写于2016年9月,(swift 3.0.Xc ...
- Java中多态的实例
public class cf { /** * 实际上这里涉及方法调用的优先问题, * 优先级由高到低依次为:this.show(O).super.show(O).this.show((super)O ...
- Upgrade to 17.1 from 17.0 problem:UnicodeEncodeError: 'ascii' codec can't encode character '\xc4' in position 50: ordinal not in range(128)
最近 gentoo 从 17.0 更新到 17.1, 需要手动进行升级配置,使用 unsymlink-lib -p --finish 这一步的时候报错,报错如下: /usr/lib/python-ex ...
- grep 使用方法 --rn使用
生产环境中,我们经常会碰到一个报错但是却不知道配置文件的路径在哪里,这时候用rn就能轻松解决 [root@localhost ~]# grep -rn "搜索的内容" 路径
- VUE.js入门学习(1)-起步
1.hello world <div id="app">{{content}}</div>var app = new Vue({ el:'#app', da ...
- POJ 1731:Orders
Orders Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9940 Accepted: 6048 Descriptio ...
- WebView的学习
加载网页: 加载URL(网络或者本地assets文件下的html文件) 加载html代码 Native和JavaScript相互调用(利于混合开发) 1.加载网络URL webview.loadUrl ...
- mysql出现 too many connections
出现这个问题的原因网上大致都是说这三种 1.慢sql 2.大量持久性的连接 3.程序没有及时关闭连接 解决方式 mysql -u 账号 -p 输入密码 show processlist; kill掉s ...