当前位置:网站首页>tensorflow的session和内存溢出
tensorflow的session和内存溢出
2022-08-05 05:15:00 【sc0024】
我有一个九十多张图片的成对测试集,要计算输出图片和gt的PSNR和SSIM,这两个的计算tf是有接口的,直接调用就可以,问题是每次跑几张图片就内存溢出,进程被kill掉了,经过一番调研终于解决,来此记录。
TensorFlow的session
首先介绍一下session(会话)。
会话的作用是处理内存分配和优化,使我们能够实际执行由计算图指定的计算。你可以将计算图想象为我们想要执行的计算的「模版」:它列出了所有步骤。为了使用计算图,我们需要启动一个会话,它使我们能够实际地完成任务;例如,遍历模版的所有节点来分配一堆用于存储计算输出的存储器。为了使用 TensorFlow 进行各种计算,你既需要计算图也需要会话。
会话包含一个指向全局图的指针,该指针通过指向所有节点的指针不断更新。这意味着在创建节点之前还是之后创建会话都无所谓。
创建会话对象后,可以使用 sess.run(node) 返回节点的值,并且 TensorFlow 将执行确定该值所需的所有计算。
常用的两种用法:
1、sess = tf.Session()使用完需要显式关闭:
sess.close()
2、with tf.Session() as sess: 自动完成关闭动作
问题分析
之前我以为,每次循环会覆盖掉psnr和ssim两个变量的内容,所以训练集有多大应该不影响内存的占用。但每次跑十几张图片进程就被kill掉,说明在循环的过程中有一些内存没有被释放掉,产生了积累。查了一些资料之后,我找到了tf.reset_default_graph()这个函数。
TensorFlow执行的时候会自动新建很多节点,而重置计算图就可以解决这个问题。
for test_id in test_ids:
with tf.Session() as sess:
img1 = cv2.imread(result_dir + '%12s_out.png' % test_id)
img2 = cv2.imread(result_dir + '%12s_gt.png' % test_id)
psnr = tf.image.psnr(img1, img2, max_val=255)
ssim = tf.image.ssim(tf.convert_to_tensor(img1), tf.convert_to_tensor(img2), max_val=255)
i = i + 1
print(i, test_id, psnr.eval(), ssim.eval())
tf.reset_default_graph()#在每个session执行完重置计算图,注意一定不能在sess代码块里面调用
边栏推荐
- 2022年中总结关键词:裁员、年终奖、晋升、涨薪、疫情
- CVPR最佳论文得主清华黄高团队提出首篇动态网络综述
- flink on yarn 集群模式启动报错及解决方案汇总
- Flink accumulator Counter 累加器 和 计数器
- [Database and SQL study notes] 10. (T-SQL language) functions, stored procedures, triggers
- SharedPreferences和SQlite数据库
- ECCV2022 | RU&谷歌提出用CLIP进行zero-shot目标检测!
- My 的第一篇博客!!!
- 面向小白的深度学习代码库,一行代码实现30+中attention机制。
- Thread handler句柄 IntentServvice handlerThread
猜你喜欢

解决端口占用问题

Flink 状态与容错 ( state 和 Fault Tolerance)

CVPR 2022 | 70% memory savings, 2x faster training

【数据库和SQL学习笔记】7.SQL中的插入(INSERT)、删除(DELETE)、更新(UPDATE)

Tensorflow steps on the pit notes and records various errors and solutions

Thread handler handle IntentServvice handlerThread

SQL(1) - Add, delete, modify and search

如何停止flink job

【零基础开发NFT智能合约】如何使用工具自动生成NFT智能合约带白名单可Mint无需写代码

【NFT开发】设计师无技术基础保姆级开发NFT教程在Opensea上全套开发一个NFT项目+构建Web3网站
随机推荐
解决端口占用问题
SQL(1) - Add, delete, modify and search
用GAN的方法来进行图片匹配!休斯顿大学提出用于文本图像匹配的对抗表示学习,消除模态差异!
【数据库和SQL学习笔记】9.(T-SQL语言)定义变量、高级查询、流程控制(条件、循环等)
redis persistence
[Go through 10] sklearn usage record
Flink Distributed Cache 分布式缓存
Machine Learning (1) - Machine Learning Fundamentals
怎么更改el-table-column的边框线
如何跟踪网络路由链路&检测网络健康状况
Pandas(五)—— 分类数据、读取数据库
ES6基础语法
Spark ML学习相关资料整理
Flink 状态与容错 ( state 和 Fault Tolerance)
Map、WeakMap
MySQL
基于Flink CDC实现实时数据采集(二)-Source接口实现
[Over 17] Pytorch rewrites keras
The University of Göttingen proposed CLIPSeg, a model that can perform three segmentation tasks at the same time
BroadCast Receiver(广播)详解