python深度学习Tensorflow基础(三)

Tensorflow基础

Tensorflow基本概念

Tensorflow分布式

TensorFlow的分布式有几种模型,具体有In-graph replication、Between-graph replication这两种模型。In-graph的含义是在图内,可理解为一个计算图。此时如何实现分布式并行运算呢?基本思路就是:把一个图内的不同操作(不同运算节点)放在不同设备上(GPU或服务器)。而Between-graph的含义是图间,可理解为在相同计算图之间。此时如何实现分布并行呢?基本思路就是在每个设备使用相同计算图,但计算不同的batch数据。前面我们介绍训练神经网络时,一般采用mini-batch梯度下降方法,即把输入数据分为多份数据,如随机分成100份,假设你有10台服务器,那么每台服务器只需要运行其中10份数据,这样效率自然就比一台服务器运行100份数据高多了。
这是个大致思路,其实In-graph replication与Between-graph replication这两种模型在如何更新参数方式上又可细分为同步更新和异步更新,这两种更新各有优缺点。
1.同步更新
同步更新的时候,每次梯度更新,都要等所有分发出去的数据计算完成,返回结果,把梯度累加计算均值之后,再更新参数。这样的好处是代价函数的下降比较稳定,但是这里有个木桶效应,处理的速度取决于最慢的那个设备的性能。
2.异步更新
在异步更新的时候,所有的计算节点,自己算自己的,更新参数也是自己更新自己计算的结果。这样的优点就是计算速度快,设备间的耦合度不高,计算资源能得到充分利用,但是,缺点是代价函数的下降不稳定,抖动大。

两种更新方法各有优缺点,在实际使用中该如何选择呢?一般而言,在数据量小,各个节点的计算能力比较均衡的情况下,推荐使用同步模式;在数据量很大,各个机器的计算性能参差不齐的情况下,推荐使用异步的方式。

以下代码是关于GPU的博主无GPU***没有测试***!!!!!!

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
import numpy as np

N_GPU = 2
train_x = np.random.rand(100).astype(np.float32)
train_y = train_x*0.2+0.3

with tf.device('/cpu:0'):
    X = tf.placeholder(tf.float32)
    Y = tf.placeholder(tf.float32)
    w = tf.Variable(0.0,name = "weight")
    b = tf.Variable(0.0,name = "reminder")
    for i in range(2):
        with tf.device('/gpu:%d' %i):
            y = w*X+b
            loss = tf.reduce_mean(tf.square(y-Y))
            init_op=tf.global_variables_initializer()
            train_op = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
    with tf.Session() as sess:
        sess.run(init_op)
        for i in range(1000):
            sess.run(train_op,feed_dict={X:train_y,Y:train_y})
            if i%100==0:
                print(i,sess.run(w),sess.run(b))
        print(sess.run(w))
        print(sess.run(b))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值