- import tensorflow as tf
- a = tf.add(3, 5)
- print(a)
- >> Tensor("Add: 0", shape=(), dtype=int32)
并不能得到 8,需要开启 session,在 session 中操作能够被执行,Tensor 能够被计算,这点有点反人类,跟一般的推断式编程是不同的,比如 PyTorch
- import tensorflow as tf
- a = tf.add(3, 5)
- sess = tf.Session()
- print(sess.run(a))
- sess.close()
- >> 8
当然可以使用一种更高效的写法
- import tensorflow as tf
- a = tf.add(3, 5)
- with tf.Session() as sess:
- print(sess.run(a))
当然可以建立更复杂的计算图如下
- x = 2
- y = 3
- add_op = tf.add(x, y)
- mul_op = tf.mul(x, y)
- useless = tf.mul(x, add_op)
- pow_op = tf.pow(add_op, mul_op)
- with tf.Session() as sess:
- z, not_useless = sess.run([pow_op, useless])
在
调用的时候使用 [] 来得到多个结果。
- sess.run
也可以将图分成很多小块,让他们在多个 CPU 和 GPU 下并行
可以将计算图的一部分放在特定的 GPU 或者 CPU 下
- with tf.device('/gpu:2'):
- a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]], name='a')
- b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]], name='b')
- c = tf.matmul(a, b)
- sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
- print(sess.run(c))
尽量不要使用多个计算图,因为每个计算图需要一个 session,而每个 session 会使用所有的显卡资源,必须要用 python/numpy 才能在两个图之间传递数据,最好在一个图中建立两个不联通的子图
这就是第一个 lecture 的笔记
本文首发于:https://sherlockliao.github.io/2017/08/13/cs20si1/
欢迎访问知乎专栏:深度炼丹
推荐阅读:
精选干货 | 近半年干货目录汇总
干货 | 台湾大学林轩田机器学习基石课程学习笔记 5 -- Training versus Testing
干货 | MIT 线性代数课程精细笔记 [第一课]
百度搜索 "就爱阅读", 专业资料, 生活学习, 尽在就爱阅读网 92to.com, 您的在线图书馆!来源: http://www.92to.com/bangong/2017/08-22/27396468.html