Tensorflow 在训练中的内存溢出以及线程安全问题
2017-11-20 15:22
253 查看
这是笔者项目中用到的部分代码:
这里是对图像进行处理的迭代过程,用到了多线程;
在迭代过程中,有两点需要注意:
1 不能在迭代中使用tf.cast() 或者 tf.convert() 等会增加图节点的方法,否则随着迭代的进行,tf的图会越来越大,最终导致溢出;
2 在每轮的迭代中,用sess.run()一次性返回所有需要的结果,不要多次调用sess.run(),因为在同一轮迭代中调用多次sess.run(),意味着会从多个线程中取值,这回导致数据的混乱。
with tf.Session() as sess: coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=sess, coord=coord) for i in range(TRAIN_NUM*5): # ! 这里注意,不能在迭代中进行增加节点的操作,例如 tf.cast, tf.convert等等,否则计算机会因为节点数量过多而溢出。 # ! 这里,返回的结果应当用同一个sess.run()得到,不要在同一个循环中两次调用sess.run(),否则在多线程中可能会导致混乱。 image, label, file_name, image_encode_eval = sess.run([images_decode, labels, file_names, image_encode]) file_name = str(file_name, encoding='utf8').replace('.jpg', '') # 转换后的展示图片 # plt.imshow(image_transfer.eval()) # plt.title(file_name) # plt.show() with tf.gfile.GFile(TRAIN_SUPPLEMENT_PATH+file_name+'_'+str(i)+'.jpg', 'wb') as f: f.write(image_encode_eval) if i%100==0: print('step %d, pic: %s' % (i,file_name)) coord.request_stop() coord.join(threads)
这里是对图像进行处理的迭代过程,用到了多线程;
在迭代过程中,有两点需要注意:
1 不能在迭代中使用tf.cast() 或者 tf.convert() 等会增加图节点的方法,否则随着迭代的进行,tf的图会越来越大,最终导致溢出;
2 在每轮的迭代中,用sess.run()一次性返回所有需要的结果,不要多次调用sess.run(),因为在同一轮迭代中调用多次sess.run(),意味着会从多个线程中取值,这回导致数据的混乱。
相关文章推荐
- tensorflow1.2训练cifar10步骤以及问题汇总
- TensorFlow学习笔记(六) tensorflow 中的保存训练的参数以及载入参数检测test集
- 关于java中多线程的问题的一点思考(什么情况下需要考虑到线程,以及线程安全的问题?)
- TensorFlow实现人脸识别(3)------将得到的训练图片以及测试图片进行处理
- 【原创】 [ 探索epoll的内置Leader-Follower支持以及线程安全问题, epoll可以更高效! ] - xmpp? - 博客园
- tensorflow 训练时内存溢出问题
- Android 项目中内存泄漏和内存溢出(oom)以及常见内存问题相关Demo详解
- tensorflow使用GPU训练时的显存占用问题
- faster-rcnn训练和测试自己的数据(VGG/ResNet)以及遇到的问题
- mac安装 tensorflow以及出现numpy.core.multiarray failed to import问题
- DNN训练过程中的一些问题以及技巧
- 记记关于tensorflow训练模型时出现损失函数为NAN问题
- 单例设计模式:饿汉式、懒汉式、枚举方式。以及涉及到的线程安全问题和反射机制问题。
- Ubuntu14安装tensorflow以及相关问题
- (尤其是训练集验证集的生成)深度学习 tensorflow 实战(2) 实现简单神经网络以及随机梯度下降算法S.G.D
- TensorFlow训练遇到的问题总结
- Win10下用Anaconda安装TensorFlow以及出现的问题No module named ‘tensorflow’
- 用tensorflow框架和Mnist手写字体,训练cnn模型以及测试一张手写字体
- 多线程-线程安全问题的产生原因分析以及同步代码块的方式解决线程安全问题
- tensorflow训练中出现nan问题的解决