TensorFlow基础知识1-计算图

什么是计算图?

计算图又被称为是有向图,数据流图。
TensorFlow是一个通过计算图的形式来表述计算的编程系统。TensorFlow中的每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。
下图展示了通过TensorBoard画出来的两个向量相加的计算图。
这里写图片描述
(TensorBoard的使用参考我的博客:http://blog.csdn.net/hongxue8888/article/details/69389171


什么是数据流图(Data Flow Graph)?

数据流图是描述有向图中的数值计算过程。有向图中的节点通常代表数学运算,但也可以表示数据的输入、输出和读写等操作;有向图中的边表示节点之间的某种联系,它负责传输多维数据(Tensors)。图中这些tensors的flow也就是TensorFlow的命名来源。

节点可以被分配到多个计算设备上,可以异步和并行地执行操作。因为是有向图,所以只有等到之前的入度节点们的计算状态完成后,当前节点才能执行操作。
这里写图片描述

这里写图片描述

计算图的构造流程:
这里写图片描述

import tensorflow as tf
import numpy as np
x_data = np.float32(np.random.rand(2,100))
y_data = np.dot([0.1 , 0.2] , x_data) + 0.3
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1,2],-1.0,1.0))
y = tf.matmul(W,x_data) + b
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

1.inference()-尽可能地构建好图表,满足促使神经网路向前反馈并做出预测的要求。
2.loss()-往inference图表中添加生产损失(loss)所需要的操作(ops)。
3.training()-往损失图表中添加计算并应用梯度(gradients)所需的操作。


计算图的使用

TensorFlow程序一般分为两个阶段:
1、定义计算图中所有的计算。
2、执行计算。

先看这段代码:

a = tf.constant([1.0, 2.0], name="a")
print(a.graph is tf.get_default_graph())

输出:true
说明在TensorFlow程序中,系统会自动维护一个默认的计算图,通过tf.get_default_graph方法可以获取当前默认的计算图。

当然,除了使用默认的计算图,可以通过tf.Graph方法来生成新的计算图。注意,不同计算图上的张量和运算都不会共享。以下代码显示了如何在不同计算图上定义和使用变量。

import tensorflow as tf

g1 = tf.Graph()
with g1.as_default():
    v = tf.get_variable("v", [1], initializer = tf.zeros_initializer()) # 设置初始值为0

g2 = tf.Graph()
with g2.as_default():
    v = tf.get_variable("v", [1], initializer = tf.ones_initializer())  # 设置初始值为1

with tf.Session(graph = g1) as sess:
    tf.global_variables_initializer().run()
    with tf.variable_scope("", reuse=True):
        print(sess.run(tf.get_variable("v")))

with tf.Session(graph = g2) as sess:
    tf.global_variables_initializer().run()
    with tf.variable_scope("", reuse=True):
        print(sess.run(tf.get_variable("v")))

输出:
[ 0.]
[ 1.]

在计算图1中将v初始化为0;在计算图2中将v初始化成为1。可以看到运行不同计算图时,变量v的值也是不一样的。


参考:http://www.jeyzhang.com/tensorflow-learning-notes.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值