gpt4 book ai didi

Python Tensorflow NoneType 不可迭代

转载 作者:太空狗 更新时间:2023-10-30 00:27:17 24 4
gpt4 key购买 nike

完整代码是 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, 64, 3) dtype=float32>: array([[[[0.3019608 , 0.23921569, 0.58431375],
[0.30588236, 0.23921569, 0.61960787],
[0.30980393, 0.24705882, 0.63529414],
...,

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

感谢您的帮助

最佳答案

看来您的问题出在这里:

_ , loss_val = sess.run(tr_op, 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' object is not iterable

你的意思可能是这样的:

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

关于Python Tensorflow NoneType 不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50420359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com