欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tensorflow 基础

程序员文章站 2022-07-13 14:56:49
...

前言

本文主要介绍学习tensorflow的一些基础知识,是tensorflow C++的基础,里面的样例使用的是python,后续将给出C++的示例。

数据流图基础

像计算机科学里面通用的数据流表示一样,在tensorflow的数据流图里面,使用节点和边来表示数据流的流动与各种操作。
节点:一般以圆圈/椭圆/方框表示,表示某种运算或操作。
边:有向边,对应于流入节点或从节点流出的数据,边的方向对应于数据的方向,用于连接不同的节点,通常是一个节点的输出是其他节点的输入。
举例:
Tensorflow 基础
圆圈里面的都是节点,在tensorflow里面也叫做运算operator;各条边是数据,也就是tensor张量。
任何节点都可以将其输出传递给数据流图中的任意后继节点,无论这两个节点之间发生了多少运算。如下图:
Tensorflow 基础
是完全合情合理的。

节点的依赖关系

定义:依赖关系是一种二元关系,如果在某个数据流图中,节点i的输出对节点j的计算来说的必需的,那么就说j依赖于i,i是j的依赖节点。
性质:依赖关系满足传递性。
直接依赖:如果i是j的依赖节点,并且i的输出直接流入j节点,则称i是j的直接依赖。
间接依赖:如果i是j的依赖节点,并且i的输入不直接流入J节点,则称i是j的间接依赖。
Tensorflow 基础
其中,a是c/d的直接依赖节点,a是e的间接依赖节点。

在tensorflow中定义数据流图

在tensorflow中使用数据流图需要两个步骤
1)。定义数据流图
2)。运行数据流图
在使用数据流图之前一定要先定义好数据流图来,这个是显然需要的,因为没有数据流图如何运行呢?

构建第一个Tensorflow数据流图

下面 我们在tensorflow里面定义这个数据流图并让其运行起来。

__author__ = 'jmh081701'
import  tensorflow as tf
import  numpy as np
a =tf.constant(5,dtype=tf.int32,name='input_a')
 #定义常量a,同时设置名字为Input_a
b =tf.constant(3,dtype=tf.int32,name='input_b')
 #定义常量b,同时设置名字为input_b
c =tf.multiply(a,b,'mul_c')
 #定义节点c,它接受两个输入a,b
d =tf.add(a,b,'add_d')
 #定义节点d,它接受两个输入a,b
e =tf.add(c,d,'add_e')
 #定义节点e,它接受两个输入c,d
 #以上都是tensorflow数据流图的定义阶段,下面是让他们运行起来
sess =tf.Session()
print(sess.run(e))
 #数据流图需要在session里面的run才能真正运行起来。当在计算e的值时,tensorflow将自动计算他的所有依赖节点的结果。
writer =tf.summary.FileWriter('mygraph',tf.get_default_graph())
 #将tensorflow的数据流图保存下来,以备可视化观察。
writer.close()
sess.close()

运行:
输出23.
在命令行输入 tensorboard –logdir=保存目录
Tensorflow 基础
然后再浏览器打开:http://127.0.0.1:6006
即可看到我们生成的数据流图,此图与我们的目标的同构的。
Tensorflow 基础