【TensorFlow】理解TensorFlow计算图

博客TensorFlow基础知识:计算图中的Op,边,和张量中有一句话,对于我来说是醍醐灌顶,一下子明白了TensorFlow的计算模式计算图的定义和图的运算是分开的.tensorflow是一个’符号主义的库’.编程模式分为两类,命令式(imperative style)和符号式(symbolic style).命令式的程序很容易理解和调试,它按照原有的逻辑运行.符号式则相反,在现有的深度学习...
摘要由CSDN通过智能技术生成

博客TensorFlow基础知识:计算图中的Op,边,和张量中有一句话,对于我来说是醍醐灌顶,一下子明白了TensorFlow的计算模式

计算图的定义和图的运算是分开的.tensorflow是一个符号主义的库.编程模式分为两类,命令式(imperative style)和符号式(symbolic style).命令式的程序很容易理解和调试,它按照原有的逻辑运行.符号式则相反,在现有的深度学习框架中,torch是命令式的,Caffe,Mxnet是两种模式的混合,tensorflow完全采用符号式.符号式编程,一般先定义各种变量,然后建立一个计算图(数据流图),计算图指定了各个变量之间的计算关系,此时对计算图进行编译,没有任何输出,计算图还是一个空壳,只有把需要运算的输入放入后,才会在模型中形成数据流.形成输出.

就是说TensorFlow是一个符号式编程模型,图上最关键的两个东西,一个数据相关的概念Tensor(张量),指的是对数据的一种引用,另一个是图上的概念Operation(操作),也就是计算图中的节点,在写TensorFlow程序的时候,我们就是在Graph上布置节点。
如下代码可以分为几个步骤

  1. 刚开始的时候,想象现在graph上一个op都没有;
  2. 然后随着代码从上往下一直到with tf.Session() as sess:这行,我在图上一共放了6个op,不同的op的之间是有联系的,比如matmul这个op需要“吃掉”一个x和一个weights,然后“吐出”一个东西叫mat_res ,这个mat_res又会被喂给tf.add这个op。这里一个隐含的信息是:op是从上到下依次被定义的(通俗点说,就是依次将各个op扔到了graph上)
  3. 但是当打印mat_res的时候,返回的结果告诉我们,mat_res是一个Tensor,也就是说,个人理解,从数据的角度看,mat_res这个Tensor代表着matmul这个op的输出。
import tensorflow as tf
x = [[1.,2.],[-1.,3.]]
y = [1,0]
weights = tf.Variable([[1,-1],[-1,-1]],name='weights',dtype=tf.float32) #虽然是定义了一个Variable类,但是也相当于在设置了一个op
bias = tf.get_variable('bias',shape=[2],initializer=tf.zeros_initializer) #get_variable也是一个op

mat_res = tf.matmul(x,weights) #定义矩阵乘法计算,也是一个op,目前图上有3个op
print(mat_res) #Tensor("MatMul:0", shape=(2, 2), dtype=float32)
add_res = tf.add(mat_res,bias) #定义矩阵相加计算,也是一个op,目前图上有4个op
y_ = tf.nn.sigmoid(add_res) #定义sigmoid运算,也是一个op,目前图上有5个op

loss = tf.losses.sparse_softmax_cross_entropy(labels=y,logits=y_) #定义sigmoid运算,也是一个op,目前图上有6个op

# 以上就是在图上放op,一共6个op
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(weights))
    print(sess
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值