我是靠谱客的博主 过时飞机,最近开发中收集的这篇文章主要介绍Tensorflow运行时ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape使用Tensorflow库进行cifar-10模型测试时,出现以下错误:解决办法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用Tensorflow库进行cifar-10模型测试时,出现以下错误:

ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[10000,32,32,32] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
	 [[Node: Conv2D = Conv2D[T=DT_FLOAT, data_format="NCHW", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](Conv2D-0-TransposeNHWCToNCHW-LayoutOptimizer, Variable/read)]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

	 [[Node: Mean/_21 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_67_Mean", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

在程序中,一次把10000个测试数据一次喂入神经网络
[10000,32,32,3]的第一个参数表示测试集的大小,第二、三个参数表示图像的长宽,第四个参数表示图像的通道数,
这里出现这种错误的原因时超出GPU的内存了。

解决办法

1.将测试集分为小块,再喂入神经网络

这种方法可行,但增大了测试集的随机性,不利于对训练模型做出正确的判别

2.通过CPU运行

由于测试集无需提高运行速度,所以放置在CPU中运行较好,方法如下:
由于仅仅是x超出了范围,所以仅需将x值通过CPU运行,但为了腾出空间给训练集训练,故也将y值放入CPU中
部分代码如下:

with tf.Graph().as_default() as g:#,利用 tf.Graph()复现之前定义的计算图,
       with tf.device('/cpu:0'):
            x = tf.placeholder(tf.float32,[Num_test,cifar_forward.IMAGE_SIZE,
                                      cifar_forward.IMAGE_SIZE,cifar_forward.NUM_CHANNELS])
            y_ = tf.placeholder(tf.int64,[None,1])
            y = cifar_forward.forward(x,False, None)
       #下三行用来加载滑动平均值
       ema=tf.train.ExponentialMovingAverage(cifar_backward.MOVING_AVERAGE_DECAY)
       ema_restore=ema.variables_to_restore()
       saver=tf.train.Saver(ema_restore)

如此即可,同理,也可任意分配运行过程中的张量的存储位置。

最后

以上就是过时飞机为你收集整理的Tensorflow运行时ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape使用Tensorflow库进行cifar-10模型测试时,出现以下错误:解决办法的全部内容,希望文章能够帮你解决Tensorflow运行时ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape使用Tensorflow库进行cifar-10模型测试时,出现以下错误:解决办法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部