Tensorflow代码中断

2024-10-01 09:16:35 发布

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

我正在修改cifar multi-GPU tensorflow代码以读取Imagenet数据集。在

我所做的编辑是:

Cifar10.py:

1)变更tf.app标志.DEFINE_string('data_dir',…)

2)删除了data_dir=os.path.join操作系统(FLAGS.data\u目录,‘cifar-10-batches-bin')

3)从maybe\u download_and_extract()中删除了下载部分

cifar10_输入.py:

1)图像大小=227

(二)结果.高度=256和结果宽度=256

3)变更

filenames = [os.path.join(data_dir, 'data_batch_%d.bin' % i) for i in xrange(1, 6)]

^{pr2}$

但这是一个可怕的错误: tensorflow.python.framework.错误。超出范围错误:random shufflequeue'_1_tower_0/shuffle_batch/random_shuffle_queue'已关闭且元素不足(请求128,当前大小为0)

[[节点:tower_0/shuffle_batch=QueueDequeueMany[组件类型=[DT_FLOAT,DT_INT32],超时时间\u ms=-1,_设备=”/作业:本地主机/副本:0/任务:0/cpu:0“](塔楼0/随机洗牌批次/随机洗牌队列,塔楼0/随机洗牌批次/n/_775)]]

终端设备u u,终端设备u u=终端设备【】/作业:本地主机/副本:0/任务:0/cpu:0“,发送设备=”/作业:本地主机/副本:0/任务:0/gpu:1“,send_device_conformation=1,tensor_name=“edge_170_tower_1/shuffle_batch/n”,_device=”/作业:本地主机/副本:0/任务:0/gpu:1“]] 由op u'tower_0/shuffle_batch'引起,定义为:

文件“lib/python2.7/site-packages/tensorflow/models/image/cifar10/cifar10_multi-gpu_火车.py“,第224行,英寸

tf.app.run()

File“/home/saoni.m/tensorflow/lib/python2.7/site-packages/tensorflow/python/platform/default/_应用程序副本“,第30行,运行中

sys.exit(main(sys.argv))

文件“lib/python2.7/site-packages/tensorflow/models/image/cifar10/cifar10_multi-gpu_火车.py“,第222行,主要

train()

文件“lib/python2.7/site-packages/tensorflow/models/image/cifar10/cifar10_multi-gpu_火车.py“,150号线,列车内

loss = tower_loss(scope)

文件“lib/python2.7/site-packages/tensorflow/models/image/cifar10/cifar10_multi-gpu_火车.py“,65号线,塔楼损失

images, labels = cifar10.distorted_inputs()

File“/home/saoni.m/tensorflow/lib/python2.7/site packages/tensorflow/models/image/cifar10/cifar10.py”,第119行,失真的_输入

batch_size=FLAGS.batch_size)

File“/home/saoni.m/tensorflow/lib/python2.7/site-packages/tensorflow/models/image/cifar10/cifar10_输入.py“,第153行,输入失真

min_queue_examples, batch_size)

File“/home/saoni.m/tensorflow/lib/python2.7/site-packages/tensorflow/models/image/cifar10/cifar10_输入.py“,第104行,在“生成图像”和“标签”批处理中

min_after_dequeue=min_queue_examples)

File“/home/saoni.m/tensorflow/lib/python2.7/site-packages/tensorflow/python/training/输入.py,第496行,在shuffle_批处理中 返回queue.dequeue多(批次大小,名称=名称)

File“/home/saoni.m/tensorflow/lib/python2.7/site-packages/tensorflow/python/ops/data_-flow_操作py“,第287行,出列

self._queue_ref, n, self._dtypes, name=name)

File“/home/saoni.m/tensorflow/lib/python2.7/site-packages/tensorflow/python/ops/gen_data_流_操作py“,第319行,在'u queue\u dequeue'u many

timeout_ms=timeout_ms, name=name)

File“/home/saoni.m/tensorflow/lib/python2.7/site-packages/tensorflow/python/ops/op_def_库.py“,第664行,在apply-up中 op_def=操作定义)

File“/home/saoni.m/tensorflow/lib/python2.7/site-packages/tensorflow/python/framework/操作py“,第1834行,在create\u op中

original_op=self._default_original_op, op_def=op_def)

File“/home/saoni.m/tensorflow/lib/python2.7/site-packages/tensorflow/python/framework/操作py“,第1043行,ininit

self._traceback = _extract_stack()

当我追溯到shuffle_batch()调用的行时:

images, label_batch = tf.train.shuffle_batch(
      [image, label],
      batch_size=batch_size,
      num_threads=num_preprocess_threads,
      capacity=min_queue_examples + 3 * batch_size,
      min_after_dequeue=min_queue_examples)

传递给它的值是: 批量大小128,线程数16,容量20384,最小容量20000


Tags: pyimagehomedataqueuelibpackagestensorflow
2条回答

看起来你没有从你的读者那里得到任何数据输入。在

你改变了:

[os.path.join(data_dir, i) for i in os.listdir(data_dir)]

data-dir/中的实际内容是什么?(是否确定使用了正确的dirname等?)在

我的建议是在执行开始时print filenames,它不使用tensorflow,只使用python,这样您就可以得到一个即时易读的答案。如果它看起来有效,我们就从那里开始工作。:)

第二个问题是您的更改不足以开始在imagenet上工作。read_cifar10函数专门用于cifar输入格式,但ImageNet数据(大部分)是jpeg格式,有一个单独的文件指定标签。您可以使用tf.image.decode_jpeg对jpeg进行解码,但还需要合并synset标签。在

我遇到了一个类似的问题,我试图更改python列表,比如 [os.path.join操作系统(data_dir,i)用于输入操作系统列表目录(数据方向)] 到 文件=tf.train.match_文件名\u一次(“/path/to/data.tf记录-*"), 文件队列=tf.train.input_string_input_生产者(文件)。 它对我有用,你可以试试。在

相关问题 更多 >