TensorFlow – 会话

TensorFlow中,会话(Session)表示计算图一次执行的上下文,也被称为TensorFlow运行时。

TensorFlow应用大致可以分为2个部分:

  1. 使用计算图定义神经网络结构
  2. 创建会话运行神经网络(计算图)

我们将通过一个例子来加深理解。

示例

本例完成以下操作:

  • 创建两个张量常量
  • 创建一个操作
  • 打开一个会话
  • 打印结果
import tensorflow as tf

## 创建2个常量
x = tf.constant([2])
y = tf.constant([4])

## 定义一个操作
multiply = tf.multiply(x, y)

## 创建会话执行操作

# 打开一个会话,所有操作都将在会话中进行
sess = tf.Session()
# 执行定义好的操作
result_1 = sess.run(multiply)
# 打印结果
print(result_1)
# 关闭会话
sess.close()

输出

[8]

结果是8,即x和y的乘积。

创建会话的另一种方法是在with块中,优点是自动关闭会话。

with tf.Session() as sess:    
    result_2 = multiply.eval()
    print(result_2) 

输出

[8]

可以在会话中,打印张量的值。

## 检查之前创建的张量
sess = tf.Session()
print(sess.run(x))
print(sess.run(y))
sess.close()

输出

[2]
[4]

global_variables_initializer初始化

变量中的默认值是随机值。要使用变量,在会话中,需要调用object tf.global_variables_initializer(),根据定义变量时设置的初始化器(initializer),来初始化变量的值。

import tensorflow as tf

# 创建一个变量
var = tf.get_variable("var", [1, 2])

# 创建一个变量,并把变量中的元素值初始化为0
var_init_1 = tf.get_variable("var_init_1", [1, 2], dtype=tf.int32,  initializer=tf.zeros_initializer)

# 创建一个变量,并使用矩阵常量初始化变量
tensor_const = tf.constant([[10, 20],[30, 40]])
var_init_2 = tf.get_variable("var_init_2", dtype=tf.int32,  initializer=tensor_const)

sess = tf.Session()
# 初始化
sess.run(tf.global_variables_initializer()) 
print(sess.run(var))
print(sess.run(var_init_1))
print(sess.run(var_init_2))
sess.close()

输出

[[ 1.2669944  -0.07566607]]
[[0 0]]
[[10 20] 
 [30 40]]   

占位符与feed_dict

要为占位符传值,可以在会话中使用feed_dict参数。

import tensorflow as tf
# 导入numpy库
import numpy as np

# 创建一个占位符
data_placeholder_b = tf.placeholder(tf.float32, name = "data_placeholder_b")

# 声明一个操作,对占位符中的数据,作平方运算
power_a = tf.pow(data_placeholder_b, 2)

with tf.Session() as sess:  
    # 创建一个随机的数据数组
    data = np.arange(0, 10, 2, np.float)  
    print(data)
    # 向占位符提供数据
    result = sess.run(power_a, feed_dict={data_placeholder_b: data})
    print(result)  

输出

[0. 2. 4. 6. 8.]
[ 0.  4. 16. 36. 64.]


浙ICP备17015664号联系我们网站地图  
@2019 qikegu.com 版权所有,禁止转载