1.session的使用
import tensorflow as tf
# 定义一个常量
hello = tf.constant('Hello TensorFlow!')
# 建立一个session
sess = tf.Session()
# 通过session.run()函数运行结果
print(sess.run(hello))
# 关闭session
sess.close
交互式session方式
sess = tf.InteractiveSession()
2.with session的使用
当程序结束后会自动关闭session,推荐使用
import tensorflow as tf
a = tf.constant(3)
b = tf.constant(4)
with tf.Session() as sess:
print('相加:%i' % sess.run(a + b))
print('相乘:%i' % sess.run(a * b))
3.feed注入机制
import tensorflow as tf
a = tf.placeholder('float32')
b = tf.placeholder('float32')
add = tf.add(a, b)
mul = tf.multiply(a, b)
with tf.Session() as sess:
# feed_dict 把具体的值放入占位符里
print('相加:%i' % sess.run(add, feed_dict={a:3, b:4}))
print('相乘:%i' % sess.run(mul, feed_dict={a:3, b:4}))
4.fetch获取节点
import tensorflow as tf
a = tf.placeholder('float32')
b = tf.placeholder('float32')
add = tf.add(a, b)
mul = tf.multiply(a, b)
with tf.Session() as sess:
# 将op运算的结果通过run打印出来
print('相加:%i' % sess.run(add, feed_dict={a:3, b:4}))
print('相乘:%i' % sess.run(mul, feed_dict={a:3, b:4}))
print(sess.run([mul, add], feed_dict={a:3, b:4}))
结果为:
相加:7
相乘:12
[12.0, 7.0]
5.指定GPU的运算
with … device语句能够用来指派特定的CPU或GPU执行操作
with tf.Session() as sess:
with tf.device('/gpu:1'):
a = tf.placeholder(tf.int16)
b = tf.placeholder(tf.int16)
add = tf.add(a, b)
....
cpu:0 机器上的第一个cpu
gpu:0 机器上的第一个gpu
gpu:1 机器上的第二个gpu
6.设置GPU使用资源
除了上述的方法可以指定GPU运算外,还可以使用tf.ConfigProto来构建一个config,在config中指定相关的GPU
# log_device_placement=True :是否打印设备分配日志
# allow_soft_placement=True :如果指定的设备不存在,允许TF自动分配设备
config = tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)
session = tf.Session(config=config, ...)
设置GPU的分配资源
# allow_growth=True,刚开始会分配少量的GPU资源,然后按需求慢慢增加,由于不会释放内存,所以会导致碎片
gpu_options = tf.GPUOptions(allow_growth=True)
config = tf.ConfigProto(gpu_options=gpu_options)
# 给GPU分配固定大小的计算资源
# 代表分配给tensorflow的GPU显存大小为:GPU实际显存×0.7
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)