1 # 会话---执行op的类
 2 # 本质:连接前台程序与底层C++代码的纽带
 3 # 两种形式
 4 # tf.Session() :用于完整的程序中
 5 # tf.InteractiveSession() :应用于交互环境
 6 
 7 # 会话使用--完整流程
 8 # 1、会话初始化
 9 # __init__
10 # 2、会话执行
11 # ss.run()
12 # 3、关闭会话
13 # ss.close()
14 
15 # 不使用上面的方式,使用with托管
16 import tensorflow as tf
17 
18 con_a = tf.constant(3, name="con_a")
19 con_b = tf.constant(3, name="con_b")
20 
21 con_sum = tf.add(con_a, con_b, name="add")
22 
23 print("con_a:", con_a)
24 print("con_b:", con_b)
25 print("con_sum:", con_sum)
26 
27 # 构建一个占位op
28 plt = tf.placeholder(shape=[2, 2], dtype=tf.int32)
29 hh = tf.placeholder(shape=[2, 2], dtype=tf.int32)
30 
31 # c = 1.0
32 # a = "hello world"
33 
34 # 开启会话 执行图
35 # 会话初始化的时候
36 # 参数 target : 可以指定云端的设备进行执行会话
37 # 参数 graph :可以指定想要执行的图
38 # 参数 config: 可以打印设备信息
39 with tf.Session() as ss:
40     # fetches 参数
41     # print("运行结果:\n", ss.run(con_sum))
42     # print("运行结果:\n", ss.run([con_a,con_b,con_sum]))
43     # print("运行结果:\n", ss.run((con_a,con_b,con_sum)))
44     # run 必须是一个op 或者是一个op列表、或者op元组
45     # feed_dict  跟占位op一块使用对 占位op进行填值
46     print(ss.run([plt, hh], feed_dict={plt: [[1, 2], [3, 4]], hh: [[1, 2], [3, 4]]}))
47     # print("运行结果:\n", ss.run(c)) # 错误的
48     # ss.run(a) # 错误的
49 
50 # 如果安装GPU 的同学-设置使用GPU
51 # tf.DeviceSpec(device_type="GPU", device_index=0)
52 
53 # with tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)) as ss:
54 #     print("运行结果:\n", ss.run(con_sum))