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

Tensorflow中Session会话控制

程序员文章站 2024-03-20 15:34:04
...

Session是Tensorflow为了控制和输出文件的执行语句。运行Session.run()可以获得你想要的运算结果。

举个例子:

用Tensorflow实现两个矩阵相乘,并输出结果。

首先,我们先加载Tensorflow,然后建立两个matrix,输出两个matrix相乘的结果。因为product是直接计算的步骤,所有我们要使用Session来**product,并得到计算结果。

import tensorflow as tf

matrix1 = tf.constant([[3,3]])
matrix2 = tf.constant([[2],[2]])

product = tf.matmul(matrix1,matrix2)  # matrix multiply np.dot(m1,m2)

# method 1
sess = tf.Session()
result = sess.run(product)
print(result)
sess.close()

方法二:

因为Session是一个对象,使用完后需要close。在编程的时候,我们往往容易忘记close(),所以我们可以使用With更加简洁的语句来实现。

先说一下Python中with的作用:

(1)使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作。例如file的file.close()方法,无论with中出现任何错误,都会执行file.close()方法

(2)with只有在特定场合下才能使用。这个特定场合指的是那些支持了上下文管理器的对象。

这些对象包括:

file
decimal.Context
thread.LockType
threading.Lock
threading.RLock
threading.Condition
threading.Semaphore
threading.BoundedSemaphore

这些对象都是Python里面的,当然在Tensorflow中还有Session对象啦!

那么什么是上下文管理器呢??

这个管理器就是在对象内实现了两个方法:__enter__() 和__exit__()

  __enter__()方法会在with的代码块执行之前执行,__exit__()会在代码块执行结束后执行。

  __exit__()方法内会自带当前对象的清理方法。

with语句类似

  try :

  except:

  finally:

的功能。但是with语句更简洁。而且更安全。代码量更少。

import tensorflow as tf

matrix1 = tf.constant([[3,3]])
matrix2 = tf.constant([[2],[2]])

product = tf.matmul(matrix1,matrix2)  # matrix multiply np.dot(m1,m2)

# method 2
with tf.Session() as sess:
    result2 = sess.run(product)
    print(result2)

观看视频笔记:https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/2-3-session/

Reference:

(参考关于Python中With用法)https://www.cnblogs.com/zhangkaikai/p/6669750.html