TensorFlow的特点与介绍
cpu与GPU的对比
一个通俗易懂的理解:
TensorFlow的结构分析
所以,写TensorFlow代码时,一个是构建图的阶段(流程图,定义数据的操作);一个是执行图阶段(调用各方资源,将定义好的数据和操作运行起来)
数据流图介绍
一个简单的加法案例:
#导入tensorflow import tensorflow as tf #将tensorflow转换成1版本的 tf.compat.v1.disable_eager_execution() tf = tf.compat.v1
def tensorflow_demo(): ''' TensorFlow的基本结构 :return: ''' #原生python实现加法运算 a = 2 b = 3 c = a+b print("原生python实现加法运算:\n",c) #TensorFlow实现假发运算 a_t = tf.constant(2,name="a_T") b_t = tf.constant(3,name="b_T") c_t = a_t + b_t print("tensorflow加法运算的结果\n",c_t) #开启回话 with tf.Session() as sess: c_t_value = sess.run(c_t) print("c_t_value\n",c_t_value) return None
结果:
可以看到,如果我们只定义张量,并在执行加法操作之后,输入的结果并不是加法和的结果,而是一个张量,想要看到加法的结果,我们必须去开启会话,然后运行,才能得到结果。
TensorFlow的图结构
说白了,就是数据(Tensor)+操作(Operation)
1 默认图
代码:
#查看默认图 # 1 调用方法 default_g = tf.get_default_graph() print("default_g:\n",default_g) # 2 查看属性 print("a_t的图属性:\n",a_t.graph) print("c_t的图属性:\n", c_t.graph)
输出:
2 创建图
代码:
#自定义图,tensorflow中的每一个图都有自己的一个命名空间 new_g = tf.Graph() #在自定义的图(new_g)中定义数据和操作,需要借助于上下文管理器 with new_g.as_default(): a_new = tf.constant(20) b_new = tf.constant(30) print("a_new:\n", a_new) print("b_new:\n", b_new) c_new = a_new + b_new print("c_new:\n",c_new) #查看图属性 print("a_new的图属性\n", a_new.graph) print("c_new的图属性\n",c_new.graph)
输出:
TensorBoard可视化:
可视化步骤:
1 数据序列化 -events文件
#图的可视化 #1 将图写入本地生成events文件 #tf.summary.FileWriter("summary",graph=sess.graph) #2 在浏览器查看tenforboard
2 启动TensorBoard
OP(操作函数&操作对象)
常见的op
简单的实例
关于打印出来的张量值
指令名称