tensorflow 多计算图并行(使用mp多进程)
2021/11/19 7:10:33
本文主要是介绍tensorflow 多计算图并行(使用mp多进程),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
保存和加载多计算图模型
pre-knowledge
- ckpt.meta/index/data文件 以及 checkpoint文件
这个ckpt是我们自己给的前缀赋名
.ckpt文件:是旧版本的输出saver.save(sess),相当于你的.ckpt-data “checkpoint”:文件仅用于告知某些TF函数,这是最新的检查点文件。 .ckpt-meta:包含元图,即计算图的结构,没有变量的值(基本上你可以在tensorboard / graph中看到)。 .ckpt-data:包含所有变量的值,没有结构。 .ckpt-index:可能是内部需要的某种索引来正确映射前两个文件,它通常不是必需的
使用tf.train.Saver保存
(1). save= tf.train.Saver() 是用来保存tensorflow训练模型的,默认保存全部参数 【用来指定保存的变量范围 以及 一些设置】 saver.save()用来设置存储地址、多久保存一次 之类的
(2). 用来加载参数,
注:只加载存储在data中的权重和偏置项等需要训练的参数,其他一律不加载,
包括meta文件中的图
注意无论是参数变量还是计算图 都调用save保存
- 只想load计算图
tf.train.import_meta_graph(".meta文件")
多计算图的数据隔离
- tf.global_variables()是各计算图之间隔离的,里面的代码demo也不错的
reference
- 再看看这个博客:tf.train.Saver() 与tf.train.import_meta_graph区别
多进程使用多计算图训练踩坑
- TF hangs when initializing variables in a multi process setting
里面阐述了为何多进程会hang住,以及处理的两种方法:- 修改multiprocessing默认的开启子进程的方式为fork,我已成功尝试(但是需要用py3)
- 之前我用直接继承Process类的方式去做,失败了。估计也有更改fork方式的API,如果修改了,讲道理也得能成功。
- mp.set_start_method()要在主模块的if __name__ == '__main__'子句中调用
- spawn和别的方式的区别
- 在子进程中再导入tf。这篇blog里面在子进程中导入tf成功了,但是我没有成功
- 修改multiprocessing默认的开启子进程的方式为fork,我已成功尝试(但是需要用py3)
- simple sample codes:
for cur_index in range(self.NODE_NUM): # some preparation father_conn, child_conn = Pipe() sub_proc = Process(target=createAgent, args=( child_conn, cur_index, ..., )) sub_proc.daemon = True # 退出主进程的时候紫禁城也会退出,防止泄漏 sub_proc.start() # collect father and children conns in order for afterwards operations sub_proces.append(sub_proc) self.par_conns[cur_index] = father_conn
完整版见仓库 fdb0cc2 版本
这篇关于tensorflow 多计算图并行(使用mp多进程)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-30tensorflow是什么-icode9专业技术文章分享
- 2024-10-15成功地使用本地的 NVIDIA GPU 运行 PyTorch 或 TensorFlow
- 2024-01-23供应链投毒预警 | 恶意Py包仿冒tensorflow AI框架实施后门投毒攻击
- 2024-01-19attributeerror: module 'tensorflow' has no attribute 'placeholder'
- 2024-01-19module 'tensorflow.compat.v2' has no attribute 'internal'
- 2023-07-17【2023年】第33天 Neural Networks and Deep Learning with TensorFlow
- 2023-07-10【2023年】第32天 Boosted Trees with TensorFlow 2.0(随机森林)
- 2023-07-09【2023年】第31天 Logistic Regression with TensorFlow 2.0(用TensorFlow进行逻辑回归)
- 2023-07-01【2023年】第30天 Supervised Learning with TensorFlow 2(用TensorFlow进行监督学习 2)
- 2023-06-18【2023年】第29天 Supervised Learning with TensorFlow 1(用TensorFlow进行监督学习 1)