当前位置: 首页 > 知识库问答 >
问题:

Tensorflow:如何使用tf绘制小批量。火车来自cifar10的批次?

周翼
2023-03-14

我正在尝试从cifar10二进制文件中绘制小批量。当实现下面显示的代码时(请参见[源代码]),机器(python 3.6)会不断显示消息(请参见[控制台])并停止。

有人能告诉我我的源代码有什么问题吗?

另外,我是tensorflow的新手。。

[源代码]-------------------------------------------------------------将tensorflow作为tf导入numpy作为np导入os导入matplotlib。pyplot作为plt

def_获取_图像_和_标签():

# directory where binary files are stored
data_dir = '/tmp/cifar10_data/cifar-10-batches-bin'

# Step1) make filename Queue
filenames = [os.path.join(data_dir, 'data_batch_%d.bin' % i) for i in range(1, 6)]
filename_queue = tf.train.string_input_producer(filenames)

# Step2) read files
label_bytes = 1  # 2 for CIFAR-100
height = 32
width = 32
depth = 3
image_bytes = height * width * depth
record_bytes = label_bytes + image_bytes

reader = tf.FixedLengthRecordReader(record_bytes=record_bytes)
key, value = reader.read(filename_queue)

# Step3) decode the file in a unit of 1 byte
record_bytes = tf.decode_raw(value, tf.uint8)

# The first bytes represent the label, which we convert from uint8->int32.
label = tf.cast(tf.strided_slice(record_bytes, [0], [label_bytes]), tf.int32)

# The remaining bytes after the label represent the image, which we reshape from [depth * height * width] to [depth, height, width].
depth_major = tf.reshape(tf.strided_slice(record_bytes, [label_bytes], [label_bytes + image_bytes]),
                         [depth, height, width])

# Convert from [depth, height, width] to [height, width, depth].
uint8image = tf.transpose(depth_major, [1, 2, 0])

# set shape ( image: tf.float32, label: tf.int32 )
image = tf.cast(uint8image, tf.float32)
image.set_shape([height, width, 3])
label.set_shape([1])

# collect batch from the files
# train_x_batch, train_y_batch = tf.train.batch([image, label], batch_size=1)
# return train_x_batch, train_y_batch

return image, label

用tf。Session()作为sess:sess。运行(tf.global\u variables\u initializer())

coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)

image, label = _get_image_and_label()

for i in range(10):
    image_batch, lable_batch = tf.train.batch([image, label], batch_size=1)
    image_batch_uint8 = tf.cast(image_batch, tf.uint8)
    final_image = sess.run(image_batch_uint8)
    imgplot = plt.imshow(final_image[0])

coord.request_stop()
coord.join(threads)

塞斯。关闭()

[控制台]-----------------------------------------------------------------/首页/dooseop/anaconda3/bin/python /home/dooseop/pycharm-community-2016.3.3/helpers/pydev/pydevd.py--Multiproc--qt-support--Client127.0.0.1--port 40623--file /home/dooseop/PycharmProjects/Tensorflow/CIFAR10_main.py警告:未找到使用cython的调试器加速。运行'"/home/dooseop/anaconda3/bin/python"/home/dooseop/pycharm-Community-2016.3.3/help ers/pydev/setup_cython.py"build_ext--inplace"来构建。连接到pydev调试器(构建163.15188.4)pydev调试器:进程10992正在连接

I tensorflow/流执行器/dso加载器。cc:135]已成功打开CUDA库libcublas。所以8.0本地I tensorflow/流执行器/dso加载器。cc:135]已成功打开CUDA库libcudnn。所以5本地I tensorflow/流执行器/dso加载器。cc:135]已成功打开CUDA库libcuft。所以8.0本地I tensorflow/流执行器/dso加载器。cc:135]已成功打开CUDA库libcuda。所以1个本地I tensorflow/流执行器/dso加载器。cc:135]已成功打开CUDA库libcurand。所以8.0本地带tensorflow/core/platform/cpu功能保护。cc:45]TensorFlow库的编译不是为了使用SSE3指令,但这些指令在您的机器上可用,可以加快CPU计算速度。带tensorflow/core/platform/cpu功能保护。cc:45]TensorFlow库的编译不是为了使用SSE4。1指令,但这些指令在您的计算机上可用,可以加快CPU计算速度。带tensorflow/core/platform/cpu功能保护。cc:45]TensorFlow库的编译不是为了使用SSE4。2条指令,但这些指令在您的计算机上可用,可以加快CPU计算速度。带tensorflow/core/platform/cpu功能保护。cc:45]TensorFlow库的编译不是为了使用AVX指令,但这些指令在您的机器上可用,可以加快CPU计算速度。带tensorflow/core/platform/cpu功能保护。cc:45]TensorFlow库的编译不是为了使用AVX2指令,但这些指令在您的机器上可用,可以加快CPU计算速度。带tensorflow/core/platform/cpu功能保护。cc:45]TensorFlow库的编译不是为了使用FMA指令,但是这些指令可以在您的机器上使用,并且可以加快CPU计算。I tensorflow/stream_执行器/cuda/cuda_gpu执行器。cc:910]从SysFS成功读取的NUMA节点的值为负值(-1),但必须至少有一个NUMA节点,因此返回NUMA节点零I tensorflow/core/common_runtime/gpu/gpu_device。cc:885]找到具有以下属性的设备0:名称:GeForce GTX 1070主要:6次要:1 memoryClockRate(GHz)1.683 pciBusID 0000:01:00.0总内存:7.92GiB可用内存:7.17GiB I tensorflow/core/common_runtime/gpu/gpu_设备。cc:906]DMA:0 I tensorflow/core/common_运行时/gpu/gpu设备。cc:916]0:Y I tensorflow/core/common_运行时/gpu/gpu设备。cc:975]正在创建TensorFlow设备(/gpu:0)-

进程结束,退出代码137(被信号9打断: SIGKILL)

共有1个答案

司空坚
2023-03-14

Sigkill仅在有人显式终止程序时发生。这里的问题是,在创建队列运行程序之前(因为它们是由tf.train.batch创建的),正在调用start\u queue\u运行程序。此外,为了获得更好的性能,只需构建一次图表,并在循环中运行它,如下所示:

image, label = _get_image_and_label()
image_batch, lable_batch = tf.train.batch([image, label], batch_size=1)
image_batch_uint8 = tf.cast(image_batch, tf.uint8)

coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
for i in range(10):
    final_image = sess.run(image_batch_uint8)
    imgplot = plt.imshow(final_image[0])

coord.request_stop()
coord.join(threads)
 类似资料:
  • 我试着创建一个tf。具有动态形状的变量。以下概述了问题。 这样做很有效。 然而,当我尝试这样做时: 它抛出错误ValueError:initial_value必须具有指定的形状:张量("random_uniform: 0",形状=(?, ?), dtype=flat32) 刚来上下文(问题输入是动态批处理的占位符): 似乎将一个动态值放入随机均匀给出了形状=(?,?) 给出了tf的误差。变量。 感

  • 您可设置此制度使员工企业支付用车前需审批,通过后才能继续叫车,实现更好管控。支持按照用车次数申请和按照用车日期申请。 操作步骤 管理员登陆滴滴企业版用车管理后台,点击左侧边栏“用车制度”选项,点击“新建用车制度”,选择“需审批用车”。填写规则如下:1. 按用车次数申请 • 用车次数由员工填写 • 每次限额可选择不限或限制每单企业支付不超过x元 • 用车时间由员工填写 • 用车路线可选择由员工填写或

  • 我有一个名为products的代理,在这个代理中,我分配了一个名为sp的参数;在模拟中,我有一个相同的代理,不同的sp范围从1到5。我想在同一批中批量使用相同sp的代理,这取决于sp。所以如果我有200个代理,其中49个sp等于1,我想把它们分成4批,因为这个sp的批量是10个,剩下的9个代理等到下一个周期,而sp等于2,我有33个代理,批量是7个,我想把它们分成4批,剩下的5个代理等到下一个周期

  • 有没有办法为Spring的NamedParameterJdbcTemplate对象设置批处理大小? 在我的项目中,我遇到了一些OutOfMemory问题,但我能够通过在一个较小的块循环中调用NamedParameterJdbcTemplate来解决它。但这需要一些额外的努力,比如确定块大小,将一个大列表拆分成更小的子列表等等。 我想知道NamedParameterJdbcTemplate是否有这样

  • 在TensorFlow中执行批量规格化的正确方法是什么?(即,我不想计算连续均值和方差)。我当前的实现基于tf。nn。batch\u normalization(批次规格化),其中x是具有形状的卷积层的输出。[批次大小、宽度、高度、通道数]。我想在通道方面执行批处理规范。 但这种实施的结果非常糟糕。与tensorflow比较。承包商。苗条的batch\u norm显示其票价较低(同样糟糕的培训表现

  • 希望有人能帮助我。