1. 运行时warning:The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations。SSE全名Streaming SIMD Extensions,是英特尔公司针对单指令多数据做的一些拓展,可以加速CPU上某些运算,tensorflow的官方编译版本为了能兼容更多的CPU,编译时没有利用CPU这一特性,想要杀掉这个warning的方法是:
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
# 或者export一下这个环境变量
2. 下面的代码可以看graph的定义:
with tf.Session() as sess:
print(sess.graph.as_graph_def())
3. lazy loading trap
normal loading:
x = tf.Variable(10, name='x')
y = tf.Variable(20, name='y')
z = tf.add(x, y) # create the node before executing the graph
writer = tf.summary.FileWriter('./graphs/normal_loading', tf.get_default_graph())
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for _ in range(10):
sess.run(z)
writer.close()
对应的graph是:
lazy loading
x = tf.Variable(10, name='x')
y = tf.Variable(20, name='y')
writer = tf.summary.FileWriter('./graphs/lazy_loading', tf.get_default_graph())
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for _ in range(10):
sess.run(tf.add(x, y)) # someone decides to be clever to save one line of code
writer.close()
对应的图是:
也就是相当于add的op被定义的十次,加入有的代码会执行几百万次的话。。。所以最好在使用前全部定义好,不要使用lazy loading
。。。待续
网友评论