python - 如何在tensorflow中检测哪个变量是 'nonetype'

标签 python tensorflow

我正在使用 TensorFlow 创建一个新模型,其中包含一个动态循环。我正在使用 tf.while_loop 来实现这个实例。我遇到的一个问题是:

AttributeError: 'NoneType' 对象没有属性 'back_prop'

做的时候出现这个问题

gradients = tf.gradients(self.loss, params)

然后,我尝试打印所有 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'

最佳答案

NoneType 只是表示值为None

>>> item = None
>>> item.value
Traceback (most recent call last):
  File "<stdin>", line 1 in <module>
AttributeError: 'NoneType' object has no attribute 'value'

如果在None上调用type就可以看到

>>> type(None)
<type 'NoneType'>

None 是 python 中的一种特殊值。这是一个singleton目的。它是 NoneType 的实例,所有 None 都是完全相同的对象。

通常,为了防止这些类型的错误,人们要么先测试值是否为 None,要么将表达式包装在 try/except block 中

if item is not None:
    print item.back_prop

或者使用try/except

try:
    item.back_prop
except AttributeError:
    pass

请注意,try/except block 可能会抑制与 item 无关的其他 AttributeErrorsNone,例如如果 item 是一些其他值, 没有 back_prop 属性。您可能希望以不同于 itemNone 的方式来处理这种情况。

关于python - 如何在tensorflow中检测哪个变量是 'nonetype',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37284794/

相关文章:

python - 比较两个 pandas dataframe 单元格,如果相等 ==,则复制其他内容 - 导致错误

python - matplotlib:辅助 y 轴上的 ylabel 带有手动刻度放置

C++ TensorFlow SoftmaxCrossEntropWithLogits 返回(成本,梯度),如何访问成本?

python - 在python中找到最相似的句子

python-3.x - 添加的图层必须是图层类的实例

python - 访问 JSON 中的字段时发生 KeyError

python - 将Docker作为syslog-ng目标运行失败

tensorflow - 使用 tensorflow_datasets API 访问已下载的数据集

python - Tm1 到 python 到 R

python - 我如何使用 2 gpu 在 tensorflow 中进行计算?