tensorflow eager通过把静态图计算转换为动态图计算,让人能直接输出tensor的结果,用来debug十分方便。但是其中也有一些坑需要避免。
由于scipy.sparse和SparseTensor的很多运算兼容性相比numpy和Tensor运算的兼容性差很多,建议在sparse运算很多的时候用tensor debugger调试。
以下是用eager进行debug的时候遇到的一些bug和解决方案
1.
......
tfe.enable_eager_execution()
ValueError: tf.enable_eager_execution must be called at program startup.
解决方案:import tensorflow之后程序开始执行之前启动
eager execution,这个bug将会在未来版本中修复
import tensorflow.contrib.eager as tfe
tfe.enable_eager_execution()
2.
rowsum = np.array([6,6,6])
np.power(rowsum, -1).
ValueError: Integers to negative integer powers are not allowed.
解决方案:rowsum dtype设为float
rowsum = np.array([6,6,6], dtype=np.float32)
np.power(rowsum, -1)