TensorFlow -- session,feed,fetch使用和指定GPU计算

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)

猜你喜欢

转载自blog.csdn.net/jian15093532273/article/details/80751073