Estimator API:AttributeError:“NoneType”对象没有属性“dtype”

2024-10-01 13:36:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经查过这个问题以前的答案,但还没有解决。我正在从头开始实现一个YOLO算法(用于对象检测),并且在训练部分遇到了问题。

为了训练,我是tf.估计器API和am使用的代码类似于tensorflowexample中的CNN MNIST代码。我得到以下错误:

Traceback (most recent call last):
  File "recover_v3.py", line 663, in <module>
    model.train(input_fn=train_input_fn, steps=1)
  File "/home/nyu-mmvc-019/miniconda3/envs/tf_0/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 376, in train
    loss = self._train_model(input_fn, hooks, saving_listeners)
  File "/home/nyu-mmvc-019/miniconda3/envs/tf_0/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 1145, in _train_model
    return self._train_model_default(input_fn, hooks, saving_listeners)
  File "/home/nyu-mmvc-019/miniconda3/envs/tf_0/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 1170, in _train_model_default
    features, labels, model_fn_lib.ModeKeys.TRAIN, self.config)
  File "/home/nyu-mmvc-019/miniconda3/envs/tf_0/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 1133, in _call_model_fn
    model_fn_results = self._model_fn(features=features, **kwargs)
  File "recover_v3.py", line 584, in cnn_model_fn
    loss=loss, global_step=tf.train.get_global_step())
  File "/home/nyu-mmvc-019/miniconda3/envs/tf_0/lib/python3.6/site-packages/tensorflow/python/training/optimizer.py", line 400, in minimize
    grad_loss=grad_loss)
  File "/home/nyu-mmvc-019/miniconda3/envs/tf_0/lib/python3.6/site-packages/tensorflow/python/training/optimizer.py", line 494, in compute_gradients
    self._assert_valid_dtypes([loss])
  File "/home/nyu-mmvc-019/miniconda3/envs/tf_0/lib/python3.6/site-packages/tensorflow/python/training/optimizer.py", line 872, in _assert_valid_dtypes
    dtype = t.dtype.base_dtype
AttributeError: 'NoneType' object has no attribute 'dtype'

主文件中与loss函数相关的代码如下所示(类似于官方的CNN MNIST示例):

^{pr2}$

前面类似问题的answers表明丢失函数没有返回任何内容。但是,当我尝试随机生成数组的损失函数时,它工作得很好,并产生正常值。在

同样,如果我从损失函数返回一个10.0这样的常数,我仍然会得到同样的错误。在

我现在不知道该怎么办。还有,我有没有办法打印损失函数返回的损失。显然地,tf.估计器API自己启动一个tensorflow会话,如果我试图创建另一个会话(为了打印loss函数返回的值),我会得到其他错误。在


Tags: inpyhomemodellibtftensorflowline
1条回答
网友
1楼 · 发布于 2024-10-01 13:36:19

However, when I try the loss function with randomly generated arrays, it works fine and yields normal values.

您的输入似乎有问题。你确定它被正确地执行了吗?在

Also, is there any way I could print the loss returned by the loss function.

Estimator在控制台中自动打印损失函数的值,每个全局“步骤%”保存“摘要步骤”。也可以使用标量摘要跟踪损失函数,如下所示:

tf.summary.scalar('loss', loss)

相关问题 更多 >