您的位置:首页 > 其它

TensorFlow学习(三) 保存和恢复

2018-03-26 22:26 267 查看
Tensorflow训练过程中的可视化,是通过Tensorflow训练过程中生成摘要,再通过Tensorboard调用,可以直观看到损失函数和其他参数的变化图。其中对数据的命名,参考name_scope()中的作用,即方便Tensorboard中观察各变量。tf.summary.scalar(a_name, a_tensor)
tf.summary.scalar(b_name, b_tensor)
#生成可写入摘要的变量集合,之后的变量不会写入摘要
merged = tf.summary.merge_all()
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    with tf.summary.Filewriter(filename, filepath) as writer:
        for index in range(1000):
            _, summary = sess.run([train_op, merged], feed_dict={......})
            writer.add_summary(summary, global_step=index)
最后通过tensorboard命令访问保存的数据,可在powershell命令行里先进入到保存数据的根目录中,再输入如下内容,其中--log_dir指保存数据的目录。tensorboard --logdir==./

TensorFlow支持训练时保存节点数据和元数据(meta_data),节点数据指被训练的参数,元数据指图(Graph)的结构数据。训练中数据可以保存,以供以后再次使用,或者加载别人已经过大量运算的数据结果,缩短训练时间。saver = tf.train.Saver()
writer = saver.save(sess, ckpt_dir, global_step)
for index in range(1000):
    sess.run([train_op, feed_dict={....})
    #每训练100次记录一次训练数据和元数据
    if index % 100 == 0:
        saver.save(sess, ckpt_dir, global_step)写入后,在ckpt_dir目录中会发现16个文件,一个checkpoint文件保存最近一次摘要结果,5个index文件和5个000000-000001-data文件代表最近5次节点数据摘要,5个meta文件代表最近5次元数据摘要
恢复节点数据需要tf.train.Saver().restore(session, ckpt_path),由于节点数据不包括图信息,需要tf.train.import_meta_graph(meta_path)sess_store = tf.Session()
#ckpt_dir是checkpoint文件所在
ckpt = tf.train.get_checkpoint.state(ckpt_dir)
tf ckpt and ckpi.model_checkpoint_path:
    tf.train.import_meta_graph(meta_path)
    tf.train.Saver().restore(sess_restore, ckpt.model_checkpoint_path)
    graph = tf.get_default_graph()
之后就可以利用图的性质(property)读取节点和变量啦graph = tf.get_default_graph
var1 = graph.get_tensor_by_name('var1')
train_op = graph.get_operation_by_name('train_op')

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tensorflow