1 FailedPreconditionError错误现象
在运行tensorflow时出现报错,报错语句如下:
FailedPreconditionError (see above for traceback): Attempting to use uninitialized value Variable
[[Node: Variable/read = _MklIdentity[T=DT_FLOAT, _kernel="MklOp", _device="/job:localhost/replica:0/task:0/device:CPU:0"](Variable, DMT/_0)]]
对报错原因进行直白翻译(信、雅、达精度严重缺失):
条件预处理时失败错误(参看上面的回溯):尝试使用未初始化的值变量。
2 FailedPreconditionError错误浅析
2.1 FailedPreconditionError的浅析
查看错误类源代码:
class FailedPreconditionError(OpError): """Operation was rejected because the system is not in a state to execute it. This exception is most commonly raised when running an operation that reads a @{tf.Variable} before it has been initialized. @@__init__ """ def __init__(self, node_def, op, message): """Creates a `FailedPreconditionError`.""" super(FailedPreconditionError, self).__init__(node_def, op, message, FAILED_PRECONDITION)
注释意思可理解为:
因为系统未处于执行状态,所以操作被拒绝。
在@ {tf.Variable}初始化前运行读取操作时,通常会引发此异常。
2.2 global_variables_initializer的源代码
查看global_variables_initializer函数的源代码
def global_variables_initializer(): """Returns an Op that initializes global variables. This is just a shortcut for `variables_initializer(global_variables())` Returns: An Op that initializes global variables in the graph. """ if context.executing_eagerly():