AttributeError: 'list' object has no attribute 'value'

AttributeError: 'list' object has no attribute 'value'

当我运行我从github下载的代码训练CNN模型时,意外的错误是occurred.I已经搜索过类似的问题并且知道可能的reason.But 还是解决不了,请问有什么建议吗?由于代码量大,我尽量把相关代码贴在下面。

class BaseModel(object):
"""Base model implementing the training loop and general model interface."""
__metaclass__ = abc.ABCMeta

def __init__(self, inputs, checkpoint_dir, is_training=False,reuse=False):
    """Creates a model mapped to a directory on disk for I/O:

Args:
  inputs: input tensor(s), can be placeholders (e.g. for runtime prediction) or
          a queued data_pipeline.
  checkpoint_dir: directory where the trained parameters will be saved/loaded from.
  is_training: allows to parametrize certain layers differently when training (e.g. batchnorm).
  reuse: whether to reuse weights defined by another model.
"""

    self.inputs = inputs
    self.checkpoint_dir = checkpoint_dir
    self.is_training = is_training

    self.layers = {}
    self.summaries = []
    self.eval_summaries = []

    self.global_step = tf.Variable(0, name='global_step', trainable=False)
    self._setup_prediction()
    self.saver = tf.compat.v1.train.Saver(tf.compat.v1.global_variables(), max_to_keep=100)

def _tofetch(self):
    """Tensors to run/fetch at each training step.
Returns:
  tofetch: (dict) of Tensors/Ops.
"""
    pass

def _train_step(self, sess, start_time, run_options=None, run_metadata=None):
    """Step of the training loop.
Returns:
  data (dict): data from useful for printing in 'summary_step'.
               Should contain field "step" with the current_step.
"""
    tofetch = self._tofetch()
    tofetch['step'] = self.global_step
    tofetch['summaries'] = self.summaries
    data = sess.run(tofetch, options=run_options, run_metadata=run_metadata)
    data['duration'] = time.time() - start_time
    return data

self.summary_writer = tf.compat.v1.summary.FileWriter(self.checkpoint_dir, sess.graph)

self.summary_writer.add_summary(step_data['summaries'], global_step=step)

2021-10-03 14:00:44.444692: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] 无法加载动态库 'cudart64_110.dll'; dlerror: cudart64_110.dll 未找到

2021-10-03 14:00:44.444956: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] 如果您的机器上没有设置 GPU,请忽略上面的 cudart dlerror。

WARNING:tensorflow:From D:\school\地球物理\ConvNetQuake-1.0\quakenet\data_pipeline.py:77: TFRecordReader.init(来自tensorflow.python.ops.io_ops) 已弃用,将在未来版本中删除。

更新说明: 基于队列的输入管道已被 tf.data 取代。使用 tf.data.TFRecordDataset.

WARNING:tensorflow:From D:\school\地球物理\ConvNetQuake-1.0\quakenet\data_pipeline.py:92: string_input_producer (from tensorflow.python.training.input) 已弃用,将被弃用在未来的版本中删除。

更新说明: 基于队列的输入管道已被 tf.data 取代。使用 tf.data.Dataset.from_tensor_slices(string_tensor).shuffle(tf.shape(input_tensor, out_type=tf.int64)[0]).repeat(num_epochs)。如果 shuffle=False,则省略 .shuffle(...)

警告:tensorflow:来自 D:\python\python\lib\site-packages\tensorflow\python\training\input.py:267:input_producer(来自 tensorflow.python.training.input)已弃用,将在未来版本中删除。

更新说明: 基于队列的输入管道已被 tf.data 取代。使用 tf.data.Dataset.from_tensor_slices(input_tensor).shuffle(tf.shape(input_tensor, out_type=tf.int64)[0]).repeat(num_epochs)。如果 shuffle=False,则省略 .shuffle(...)

警告:tensorflow:来自 D:\python\python\lib\site-packages\tensorflow\python\training\input.py:189:limit_epochs(来自 tensorflow.python.training.input)已弃用,将在未来版本中删除。

更新说明: 基于队列的输入管道已被 tf.data 取代。使用 tf.data.Dataset.from_tensors(tensor).repeat(num_epochs).

WARNING:tensorflow:From D:\python\python\lib\site-packages\tensorflow\python\training\input.py:197: QueueRunner.init(来自 tensorflow.python.training.queue_runner_impl)已弃用,将在未来的版本。

更新说明: 要构造输入管道,请使用 tf.data 模块。

警告:tensorflow:来自 D:\python\python\lib\site-packages\tensorflow\python\training\input.py:196:add_queue_runner(来自 tensorflow.python.training.queue_runner_impl)已弃用,将在未来版本中删除。

更新说明: 要构造输入管道,请使用 tf.data 模块。

WARNING:tensorflow:From D:\school\地球物理学\ConvNetQuake-1.0\quakenet\data_pipeline.py:142: shuffle_batch (from tensorflow.python.training.input) 已弃用,将被弃用在未来的版本中删除。

更新说明: 基于队列的输入管道已被 tf.data 取代。使用 tf.data.Dataset.shuffle(min_after_dequeue).batch(batch_size).

警告:tensorflow:来自 D:\python\python\lib\site-packages\tensorflow\python\util\decorator_utils.py:145:GraphKeys.VARIABLES(来自 tensorflow.python.framework.ops)已弃用,将在未来版本中删除。

更新说明: 请改用 tf.GraphKeys.GLOBAL_VARIABLES

WARNING:tensorflow:From D:\school\地球物理学\ConvNetQuake-1.0\quakenet\models.py:118: to_float (from tensorflow.python.ops.math_ops) 已弃用,将被弃用在未来的版本中删除。

更新说明: 请改用 tf.cast

2021-10-03 14:00:49.467624: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] 无法加载动态库 'cudart64_110.dll'; dlerror: cudart64_110.dll 未找到

2021-10-03 14:00:49.468871: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] 无法加载动态库 'cublas64_11.dll'; dlerror: cublas64_11.dll 未找到

2021-10-03 14:00:49.470071: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] 无法加载动态库 'cublasLt64_11.dll'; dlerror: cublasLt64_11.dll 未找到

2021-10-03 14:00:49.471424: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] 无法加载动态库 'cufft64_10.dll'; dlerror: cufft64_10.dll 未找到

2021-10-03 14:00:49.472768: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] 无法加载动态库 'curand64_10.dll'; dlerror: curand64_10.dll 未找到

2021-10-03 14:00:49.474003: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] 无法加载动态库 'cusolver64_11.dll'; dlerror: cusolver64_11.dll 未找到

2021-10-03 14:00:49.475254: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] 无法加载动态库 'cusparse64_11.dll'; dlerror: cusparse64_11.dll 未找到

2021-10-03 14:00:49.476496: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] 无法加载动态库 'cudnn64_8.dll'; dlerror: cudnn64_8.dll 未找到

2021-10-03 14:00:49.476730: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1835] 无法打开某些 GPU 库。如果您想使用 GPU,请确保正确安装了上述缺少的库。按照 https://www.tensorflow.org/install/gpu 上的指南,了解如何为您的平台下载和设置所需的库。

正在跳过注册 GPU 设备...

2021-10-03 14:00:49.477635: I tensorflow/core/platform/cpu_feature_guard.cc:142] 此 TensorFlow 二进制文件使用 oneAPI 深度神经网络库 (oneDNN) 进行了优化,以使用以下 CPU 性能关键操作中的指令:AVX AVX2 要在其他操作中启用它们,请使用适当的编译器标志重建 TensorFlow。

正在初始化所有变量。 启动数据线程协调器。 开始优化。

WARNING:tensorflow:From D:\school\地球物理学\ConvNetQuake-1.0\tflib\model.py:242: start_queue_runners (from tensorflow.python.training.queue_runner_impl) 已弃用,将被弃用在未来的版本中删除。

更新说明: 要构建输入管道,请使用 tf.data 模块。

第 10 步 | 2 秒(214 毫秒) |损失 = 2.2992 |侦探符合。 = 50.0% |位置。符合。 = 45.3% 正在关闭数据线程。

2021-10-03 14:00:52.803844: W tensorflow/core/kernels/queue_base.cc:277] _3_inputs_1/input_producer: 跳过已取消的入队尝试,队列未关闭

2021-10-03 14:00:52.804091: W tensorflow/core/kernels/queue_base.cc:277] _5_inputs_1/shuffle_batch/random_shuffle_queue: 跳过已取消的入队尝试,队列未关闭

回溯(最近调用最后):

文件“D:/school/地球物理/ConvNetQuake-1.0/bin/train”,第 90 行,在 主要(参数)

文件“D:/school/地球物理/ConvNetQuake-1.0/bin/train”,第 67 行,在 main model.train(

文件“D:\school\地球物理\ConvNetQuake-1.0\tflib\model.py”,第 263 行,在火车中 self.summary_writer.add_summary(step_data['summaries'],global_step=步骤)

文件“D:\python\python\lib\sitepackages\tensorflow\python\summary\writer\writer.py”,第 127 行,在 add_summary summary.value 中的值:

AttributeError: 'list' 对象没有属性 'value'

我相信除了您提供的代码之外,您正在尝试这样做

example_list=[]
example_list.value()

据我所知这是不正确的因为 list 数据类型有 no 方法命名为 value( )

因此它抛出这个错误说 AttributeError: 'list' object has no attribute 'value'.

所以请检查您的代码中的某处,必须有一行您将 .value() 放在 list 数据类型

之后

但我不确定,因为您既没有向我们提供完整的代码,也没有提供完整的错误消息。

已编辑

现在您已经更新并提供了完整的错误消息

你可以看到在文件writer.py的第127行,你写了summary.value

而摘要是一个 list,所以 没有被命名为 value( ) 的 attribute/method ]列表数据类型。