加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python Tensorflow NoneType不可迭代

发布时间:2020-12-20 12:14:19 所属栏目:Python 来源:网络整理
导读:完整代码是 here 错误: ---------------------------------------------------------------------------TypeError Traceback (most recent call last)ipython-input-6-e6c5369957bc in module() 55 print(feed_dict) 56 _,loss_val = sess.run(tr_op,--- 57
完整代码是 here

错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-e6c5369957bc> in <module>()
     55 print(feed_dict)
     56 _,loss_val = sess.run(tr_op,---> 57                         feed_dict=feed_dict)
     58 print('Loss of the current batch is {}'.format(loss_val))

TypeError: 'NoneType' object is not iterable

在执行该调用之前运行以下代码:

print(type(tr_op))
print(type(feed_dict))
try:
    some_object_iterator = iter(feed_dict)
except TypeError as te:
    print (feed_dict,'is not iterable')
print(feed_dict)

产生输出:

<class 'tensorflow.python.framework.ops.Operation'>
<class 'dict'>
{<tf.Tensor 'img_data:0' shape=(?,64,3) dtype=float32>: array([[[[0.3019608,0.23921569,0.58431375],[0.30588236,0.61960787],[0.30980393,0.24705882,0.63529414],...,

因此,应该可迭代的对象显然是可迭代的,因为当我尝试从中创建迭代器时它不会引发异常,并且两个对象都具有明确定义的类型.此错误不在会话的TensorFlow文件中,我不知道它被引发的位置,因为没有跟踪.

谢谢你的帮助

解决方法

看起来您的问题在这里:

_,feed_dict=feed_dict)

您要求tensorflow为您计算tr_op.这是一个操作.例如.将生成sess.run的一个返回值.您正尝试从结果中提取2个值.在这种情况下,它试图将None的返回值视为元组.

试试看:

result = sess.run(tr_op,feed_dict=feed_dict)
print(result)

您将看到结果为None,这是优化器(tr_op)的正确返回值.如果你进一步尝试:

_,loss_val = result

您将再次收到错误TypeError:’NoneType’对象不可迭代.

你打算做什么可能是这样的:

_,loss_val = sess.run([tr_op,loss_op],feed_dict=feed_dict)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读