浅谈tf.train.Saver()与tf.train.import_meta_graph的要点

(一)、tf.train.Saver()

(1). tf.train.Saver() 是用来保存tensorflow训练模型的,默认保存全部参数

(2). 用来加载参数,注:只加载存储在data中的权重和偏置项等需要训练的参数,其他一律不加载,包括meta文件中的图也不加载

(二)、tf.train.import_meta_graph

(1). 用来加载meta文件中的图,以及图上定义的结点参数包括权重偏置项等需要训练的参数,也包括训练过程生成的中间参数,所有参数都是通过graph调用接口get_tensor_by_name(name="训练时的参数名称")来获取

(三)、总结

(1). 保存使用tf.train.Saver()

(2). 加载可以使用tf.train.import_meta_graph(".meta文件"),直接通过训练参数名称就可以获取需要的参数,但需要提前知道训练时的参数名称才能获取,要懂得tensorflow命名规则

(3). tf.train.Saver("./checkpoints目录/")加载的缺点是只加载了训练参数,并且必须定义与之相同(shape,dtype要相同,tf.type要相同,如:我是placeholder,你也是tf.placeholder)方能使用,当你要获取训练中间参数时,需要和训练过程一样搭建相同的网络.

补充:tf.train.import_meta_graph报KeyError

我在模型恢复时,在执行tf.train.import_meta_graph的时候报错

后来发现,我的模型是在服务器上训练的,服务器上tensorflow版本是1.11.0,而我在本地电脑上执行的 tf.train.import_meta_graph,我本地的tensorflow是1.5.0,我将tensorflow更新到1.11.0后,就解决了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Tensorflow之Saver的用法详解

    Saver的用法 1. Saver的背景介绍 我们经常在训练完一个模型之后希望保存训练的结果,这些结果指的是模型的参数,以便下次迭代的训练或者用作测试.Tensorflow针对这一需求提供了Saver类. Saver类提供了向checkpoints文件保存和从checkpoints文件中恢复变量的相关方法.Checkpoints文件是一个二进制文件,它把变量名映射到对应的tensor值 . 只要提供一个计数器,当计数器触发时,Saver类可以自动的生成checkpoint文件.这让我们可以在训练

  • TensorFlow Saver:保存和读取模型参数.ckpt实例

    在使用TensorFlow的过程中,保存模型参数变量是很重要的一个环节,既可以保证训练过程信息不丢失,也可以帮助我们在需要快速恢复或使用一个模型的时候,利用之前保存好的参数之间导入,可以节省大量的训练时间.本文通过最简单的例程教大家如何保存和读取.ckpt文件. 一.保存到文件 首先是导入必要的东西: import tensorflow as tf import numpy as np 随便写几个变量: # Save to file # remember to define the same d

  • TensorFlow入门使用 tf.train.Saver()保存模型

    关于模型保存的一点心得 saver = tf.train.Saver(max_to_keep=3) 在定义 saver 的时候一般会定义最多保存模型的数量,一般来说,如果模型本身很大,我们需要考虑到硬盘大小.如果你需要在当前训练好的模型的基础上进行 fine-tune,那么尽可能多的保存模型,后继 fine-tune 不一定从最好的 ckpt 进行,因为有可能一下子就过拟合了.但是如果保存太多,硬盘也有压力呀.如果只想保留最好的模型,方法就是每次迭代到一定步数就在验证集上计算一次 accurac

  • 浅谈tf.train.Saver()与tf.train.import_meta_graph的要点

    (一).tf.train.Saver() (1). tf.train.Saver() 是用来保存tensorflow训练模型的,默认保存全部参数 (2). 用来加载参数,注:只加载存储在data中的权重和偏置项等需要训练的参数,其他一律不加载,包括meta文件中的图也不加载 (二).tf.train.import_meta_graph (1). 用来加载meta文件中的图,以及图上定义的结点参数包括权重偏置项等需要训练的参数,也包括训练过程生成的中间参数,所有参数都是通过graph调用接口get

  • 浅谈tensorflow模型保存为pb的各种姿势

    一,直接保存pb 1, 首先我们当然可以直接在tensorflow训练中直接保存为pb为格式,保存pb的好处就是使用场景是实现创建模型与使用模型的解耦,使得创建模型与使用模型的解耦,使得前向推导inference代码统一.另外的好处就是保存为pb的时候,模型的变量会变成固定的,导致模型的大小会大大减小. 这里稍稍解释下pb:是MetaGraph的protocol buffer格式的文件,MetaGraph包括计算图,数据流,以及相关的变量和输入输出 主要使用tf.SavedModelBuilde

  • 浅谈tensorflow 中tf.concat()的使用

    concat()是将tensor沿着指定维度连接起来.其中tensorflow1.3版中是这样定义的: concat(values,axis,name='concat') 一.对于2维来说,0表示行,1表示列 t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, 8, 9], [10, 11, 12]] with tf.Session() as sess: print(sess.run(tf.concat([t1, t2], 0) )) 结果为:[[1, 2, 3], [4

  • 浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack

    有一段时间没用tensorflow了,现在跑实验还是存在一些坑了,主要是关于张量计算的问题.tensorflow升级1.0版本后与以前的版本并不兼容,可能出现各种奇奇怪怪的问题. 1 tf.concat函数 tensorflow1.0以前函数用法:tf.concat(concat_dim, values, name='concat'),第一个参数为连接的维度,可以将几个向量按指定维度连接起来. 如: t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, 8, 9], [10

  • 浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)

    池化层定义在tensorflow/python/layers/pooling.py. 有最大值池化和均值池化. 1.tf.layers.max_pooling2d max_pooling2d( inputs, pool_size, strides, padding='valid', data_format='channels_last', name=None ) inputs: 进行池化的数据. pool_size: 池化的核大小(pool_height, pool_width),如[3,3].

  • 浅谈keras中Dropout在预测过程中是否仍要起作用

    因为需要,要重写训练好的keras模型,虽然只具备预测功能,但是发现还是有很多坑要趟过.其中Dropout这个坑,我记忆犹新. 一开始,我以为预测时要保持和训练时完全一样的网络结构,也就是预测时用的网络也是有丢弃的网络节点,但是这样想就掉进了一个大坑!因为无法通过已经训练好的模型,来获取其训练时随机丢弃的网络节点是那些,这本身就根本不可能. 更重要的是:我发现每一个迭代周期丢弃的神经元也不完全一样. 假若迭代500次,网络共有1000个神经元, 在第n(1<= n <500)个迭代周期内,从1

  • 浅谈keras中自定义二分类任务评价指标metrics的方法以及代码

    对于二分类任务,keras现有的评价指标只有binary_accuracy,即二分类准确率,但是评估模型的性能有时需要一些其他的评价指标,例如精确率,召回率,F1-score等等,因此需要使用keras提供的自定义评价函数功能构建出针对二分类任务的各类评价指标. keras提供的自定义评价函数功能需要以如下两个张量作为输入,并返回一个张量作为输出. y_true:数据集真实值组成的一阶张量. y_pred:数据集输出值组成的一阶张量. tf.round()可对张量四舍五入,因此tf.round(

  • 浅谈TensorFlow中读取图像数据的三种方式

    本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片.大量图片,和TFRecorder读取方式.并且还补充了功能相近的tf函数. 1.处理单张图片 我们训练完模型之后,常常要用图片测试,有的时候,我们并不需要对很多图像做测试,可能就是几张甚至一张.这种情况下没有必要用队列机制. import tensorflow as tf import matplotlib.pyplot as plt def read_image(file_name): img = tf.read_fil

  • 浅谈tensorflow与pytorch的相互转换

    目录 1.变量预定义 2.创建变量并初始化 3.语句执行 4.tensor 5.其他函数 本文以一段代码为例,简单介绍一下tensorflow与pytorch的相互转换(主要是tensorflow转pytorch),可能介绍的没有那么详细,仅供参考. 由于本人只熟悉pytorch,而对tensorflow一知半解,而代码经常遇到tensorflow,而我希望使用pytorch,因此简单介绍一下tensorflow转pytorch,可能存在诸多错误,希望轻喷~ 1.变量预定义 在TensorFlo

随机推荐