Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 恢复训练过的tensorflow模型,编辑与节点关联的值,然后保存它_Python_Machine Learning_Tensorflow_Deep Learning_Batch Normalization - Fatal编程技术网

Python 恢复训练过的tensorflow模型,编辑与节点关联的值,然后保存它

Python 恢复训练过的tensorflow模型,编辑与节点关联的值,然后保存它,python,machine-learning,tensorflow,deep-learning,batch-normalization,Python,Machine Learning,Tensorflow,Deep Learning,Batch Normalization,我用tensorflow训练了一个模型,并在训练过程中使用了批量规范化。批量规范化要求用户传递一个布尔值,称为is_training,以设置模型是处于培训阶段还是测试阶段 当模型被训练时,is\u training被设置为常数,如下所示 is_training = tf.constant(True, dtype=tf.bool, name='is_training') 我保存了经过训练的模型,文件包括checkpoint、.meta文件、.index文件和a.data。我想恢复模型并使用它运行

我用tensorflow训练了一个模型,并在训练过程中使用了批量规范化。批量规范化要求用户传递一个布尔值,称为
is_training
,以设置模型是处于培训阶段还是测试阶段

当模型被训练时,
is\u training
被设置为常数,如下所示

is_training = tf.constant(True, dtype=tf.bool, name='is_training')
我保存了经过训练的模型,文件包括checkpoint、.meta文件、.index文件和a.data。我想恢复模型并使用它运行推理。 模型无法重新训练。因此,我想恢复现有模型,将
is\u training
的值设置为
False
,然后将模型保存回去。
如何编辑与该节点关联的布尔值并再次保存模型?

您可以使用的
input\u map
参数将图形张量重新映射到更新的值

config = tf.ConfigProto(allow_soft_placement=True)
with tf.Session(config=config) as sess:
    # define the new is_training tensor
    is_training = tf.constant(False, dtype=tf.bool, name='is_training')

    # now import the graph using the .meta file of the checkpoint
    saver = tf.train.import_meta_graph(
    '/path/to/model.meta', input_map={'is_training:0':is_training})

    # restore all weights using the model checkpoint 
    saver.restore(sess, '/path/to/model')

    # save updated graph and variables values
    saver.save(sess, '/path/to/new-model-name')

如果使用
is_training=tf.Variable..
而不是constantIs,则会更容易。为什么
is_training
需要是tensorflow常量?难道不是一个巨蟒之躯吗?请注意,将
is_training
更改为python bool不会在恢复模型时产生错误。@GeertH可能是这样,问题是如何在加载模型后将
is_training
设置为
False
,然后将其保存回去。因此,当再次还原时,节点的值为
False
。上面的代码会抛出一个错误
ValueError:tf。如果使用input\u map,则import\u graph\u def()需要一个非空名称
我已经使用
tensorflow==1.2.0
测试了此代码,希望对您有所帮助;它也不是
tf.import\u graph\u def
。查看我的代码。我按原样尝试了您的代码,错误是由这一行引发的,
saver=tf.train.import\u meta\graph(r'D:\code\iprings\k-fold-model\VanillaCNN\u 24.0000.meta',input\u map={'is\u training':is\u training})
我建议您使用tf==1.2.0