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 ]列表数据类型。
当我运行我从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 ]列表数据类型。