Tensorflow——创建图、启动图

一、前言

       Tensorflow是一个编程系统,使用图(graphs)来表示计算任务,图(graphs)中的节点称之为op(operation),一个op获得0个或者多个Tensor,执行计算,产生0个或者多个Tensor,Tensor看做是一个n维的数组或者列表,图必须在会话(Session)里被启动。

Tensorflow——创建图、启动图_第1张图片

 

二、操作

  • 导入tensorflow库 
import tensorflow as tf
  • 创建两个常量op:m1,m2
# m1:一行两列的矩阵,m2:两行一列的矩阵
m1 = tf.constant([[3,3]])
m2 = tf.constant([[2],[3]])

# 创建一个矩阵乘法的op,将m1和m2作为参数传入
product = tf.matmul(m1,m2)
  • 如果直接使用print函数进行结果的打印,是打印不出来的,结果如下显示的是一个Tensor, 程序需要在会话下执行

  • 结果分析:

在Tensorflow中,所有的数据都是通过张量(Tensor)的形式来表示的,从功能的角度上看,张量可以被简单理解为多维数组。其中零阶张量表示标量(scalar),也就是一个数,第一阶张量为向量(vector),也就是一个一维数组;第n阶张量可以理解为一个n维数组。但是张量在tensorflow中的实现并不是直接采用数组的形式,他只是对tensorflow中运算结果的引用。在张量中并没有真正的保存数字,它保存的是如何得到这些数字的计算过程。因此使用print输出product的结果时,输出的并不是所希望得到的值。

从print的输出结果来看,张量中主要保存了三个属性:名字(name)、维度(shape)和类型(type)

 

  • 第一种创建会话

此种创建会话的方法,需要在完成所有的计算之后,关闭会话(sess.close())来帮助系统回收资源,否则就可能出现资源泄露的问题。

# 定义一个会话,启动默认图
sess = tf.Session()
# 调用run方法来执行矩阵乘法op,run(product)触发了图中的3个op
result = sess.run(product)
print(result)
#关闭会话
sess.close()

结果:

 

  • 第二种创建会话:创建会话最常用的标准方式

在上一种创建会话的方式下,当程序因为异常而退出时,关闭会话的函数可能就不会被执行,从而导致资源泄漏,为了解决异常退出时,资源释放的问题,Tensorflow可以通过python的上下文管理器来使用会话。当上下文退出时,会话关闭和资源释放也自动完成了。

# 语句执行完,自动关闭会话
with tf.Session() as sess:
    result = sess.run(product)
    print(result)

结果:

 

 

  • 完整过程

Tensorflow——创建图、启动图_第2张图片

你可能感兴趣的:(tensorflow)