gpt4 book ai didi

python - sess.run(Tensor()) 不执行任何操作

转载 作者:行者123 更新时间:2023-11-30 22:45:09 24 4
gpt4 key购买 nike

我正在尝试向我的神经网络提供存储在 TFRecords 中的数据。数据是使用 inputs() 提取的,与 tensorflow 网页上的提取方式类似。它返回的数据是两个张量。当我尝试eval()张量以便我可以使用 feed_dict 通过我的模型发送它们时,我的计算机只是坐着不执行任何操作。代码不会返回错误,我的系统监视器让我相信除了我的 GPU 内存几乎已满之外没有发生任何事情。

image = tf.placeholder("float32", [None, 30000])

image_batch, label_batch = inputs(train_dir, True, batch_size, hm_epochs, one_hot_labels=True)
print(image_batch)
with tf.Session().as_default() as sess:
tf.global_variables_initializer().run()
results = sess.run(image_batch)
print(results)


I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally
Tensor("input/shuffle_batch:0", shape=(100, 30000), dtype=float32)
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:937] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties:
name: GeForce GTX 960
major: 5 minor: 2 memoryClockRate (GHz) 1.342
pciBusID 0000:01:00.0
Total memory: 3.94GiB
Free memory: 3.38GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 960, pci bus id: 0000:01:00.0)

**编辑:**我的输入函数。

def inputs(train_dir, train, batch_size, num_epochs, one_hot_labels=False):

if not num_epochs: num_epochs = None
filename = os.path.join(train_dir,
TRAIN_FILE if train else VALIDATION_FILE)

with tf.name_scope('input'):
filename_queue = tf.train.string_input_producer(
[filename], num_epochs=num_epochs)

image, label = read_and_decode(filename_queue)

if one_hot_labels:
label = tf.one_hot(label, 2, dtype=tf.int32)

example_batch, label_batch = tf.train.shuffle_batch(
[image, label], batch_size=batch_size, num_threads=1,
capacity=1000,
# Ensures a minimum amount of shuffling of examples.
min_after_dequeue=10)

return example_batch, label_batch

最佳答案

TL;DR: 尝试在初始化变量之后、尝试评估 input_batch 之前添加以下行:

tf.train.start_queue_runners(sess)

在没有看到 inputs() 的实现的情况下很难确定,但张量名称 "input/shuffle_batch" 表明该函数正在使用以下方式构建输入tf.train.shuffle_batch()功能。

许多用于输入处理的 TensorFlow 函数都会在内部创建预取队列,包括 tf.train.shuffle_batch()。这些预取队列最初是空的,并且您的 sess.run(input_batch) 调用可能会被阻塞,等待将元素放入这些队列中。目前,这种情况通常发生的方式是使用“队列运行线程”,它是当您调用 tf.train.start_queue_runners() 时启动的一个或多个后台线程的名称。 .

这是 TensorFlow 中较为复杂的领域之一,我们正在努力改进。同时,您可以在 threading and queues in TensorFlow 上找到文档。有用。

关于python - sess.run(Tensor()) 不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41276012/

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