我正在使用TensorFlow创建一个新模型,其中包括一个动态循环.我使用tf.while_loop来实现这个实例.我遇到的一个问题是:
AttributeError: 'NoneType' object has no attribute 'back_prop'
这样做就出现了
gradients = tf.gradients(self.loss, params)
Run Code Online (Sandbox Code Playgroud)
然后,我尝试打印所有params,结果每个参数都有一个形状.我想如果有一个nonetype参数,它的形状应该也None一样吗?另一方面,有没有其他方法可以帮助我检测哪个变量未分配或类似[]?
这是完整的引用:
Traceback (most recent call last):
File "main.py", line 125, in <module>
tf.app.run()
File "/usr/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 30, in run
sys.exit(main(sys.argv))
File "main.py", line 119, in main
train()# if FLAGS.train:
File "main.py", line 95, in train
model = create_model(sess, False)
File "main.py", line 75, in create_model
forward_only=False)
File "/home/sniu/lab/ai_lab/DMN-tensorflow/models/DMN.py", line 248, in __init__
gradients = tf.gradients(self.loss, params)
File "/usr/lib/python2.7/site-packages/tensorflow/python/ops/gradients.py", line 481, in gradients
in_grads = _AsList(grad_fn(op, *out_grads))
File "/usr/lib/python2.7/site-packages/tensorflow/python/ops/control_flow_grad.py", line 181, in _EnterGrad
if not grad_ctxt.back_prop:
AttributeError: 'NoneType' object has no attribute 'back_prop'
Run Code Online (Sandbox Code Playgroud)
NoneType只是意味着该值为None
>>> item = None
>>> item.value
Traceback (most recent call last):
File "<stdin>", line 1 in <module>
AttributeError: 'NoneType' object has no attribute 'value'
Run Code Online (Sandbox Code Playgroud)
你可以看看如果你type打电话None
>>> type(None)
<type 'NoneType'>
Run Code Online (Sandbox Code Playgroud)
None是 python 中的一种特殊值。这是一个单例对象。它是 的一个实例NoneType,并且所有None的都是完全相同的对象。
通常,为了防止这些类型的错误,人们要么测试该值是否为None第一个,要么将表达式包装在try/except块中
if item is not None:
print item.back_prop
Run Code Online (Sandbox Code Playgroud)
或者使用try/except
try:
item.back_prop
except AttributeError:
pass
Run Code Online (Sandbox Code Playgroud)
请注意,该try/except块可能会抑制与beingAttributeErrors无关的其他值,例如 if是也没有属性的其他值。您可能希望以不同于 if 的方式对待这种情况。itemNoneitemback_propitemNone
| 归档时间: |
|
| 查看次数: |
2855 次 |
| 最近记录: |