Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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 正确加载模型以恢复训练(元图、ckpts)_Python_Tensorflow_Deep Learning - Fatal编程技术网

Python 正确加载模型以恢复训练(元图、ckpts)

Python 正确加载模型以恢复训练(元图、ckpts),python,tensorflow,deep-learning,Python,Tensorflow,Deep Learning,我在加载模型以恢复培训时遇到问题。 我在cifar数据集上使用一个简单的两层NN(完全连接)进行练习 NN设置: 保存的模型如下所示: 保存的模型文件 在此目录中: C:\Users\Moondra\Desktop\CIFAR-PROJECT\parameters\u no\u changes 我有以下文件以及model.ckpt-499.index等: model.ckpt-999.meta model.ckpt-999.index model.ckpt-999.data-00000-of-0

我在加载模型以恢复培训时遇到问题。 我在cifar数据集上使用一个简单的两层NN(完全连接)进行练习

NN设置: 保存的模型如下所示: 保存的模型文件 在此目录中:
C:\Users\Moondra\Desktop\CIFAR-PROJECT\parameters\u no\u changes

我有以下文件以及
model.ckpt-499.index
等:

model.ckpt-999.meta
model.ckpt-999.index
model.ckpt-999.data-00000-of-00001
我加载模型的尝试 错误和混乱 1) 我是否应该使用此命令
latest\u checkpoint
还原: `

我看到一些教程只指向保存 .data、.index文件

2) 这就引出了第二个问题:我应该使用什么作为
saver.restore
的第二个参数。 目前我只是指向保存这些文件的文件夹/dir

3) 我不是故意初始化任何变量,因为我被告知,这将覆盖存储的权重和偏差值。这似乎导致了以下错误:

FailedPremissionError(回溯见上文):尝试使用未初始化的值Layer1/权重
[[Node:Layer1/weights/read=Identity[T=DT_FLOAT,[u class=[“loc:@Layer1/weights”],[u device=“/job:localhost/replica:0/task:0/cpu:0”](Layer1/weights)]

4) 但是,如果我通过以下代码初始化所有变量:

sess.run(tf.global\u variables\u initializer())

我的模型似乎从零开始训练(而不是恢复训练)

这是否意味着我应该通过
显式获取张量
?如果是,我如何处理20层以上的层

5) 当我运行这个命令时

for i in tf.get_default_graph().get_operations():
    print(i.values)
我看到很多全局步骤张量/运算

'global_step/initial_value' type=Const>>
'global_step' type=VariableV2>>
<'global_step/Assign' type=Assign>>

global_step/read' type=Identity>>
6) 最后,我看到了很多梯度操作,当我看所有 图中的节点,但我没有看到任何与
列车步骤相关的节点
我创建的python变量指向Gradient Dsecent优化器)。这是否意味着我不需要通过
get_tensor
将其加载到此图中


谢谢。

我通常会执行以下操作:

  • 初始化

  • 恢复

  • 这可转化为此类代码:

    saver = tf.train.Saver()
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        saver.restore(sess, tf.train.latest_checkpoint('./'))
        ...
    

    它将避免未初始化的错误,恢复将用检查点的值覆盖。

    我通常执行以下操作序列:

  • 初始化

  • 恢复

  • 这可转化为此类代码:

    saver = tf.train.Saver()
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        saver.restore(sess, tf.train.latest_checkpoint('./'))
        ...
    

    它将避免未初始化的错误,并且还原将用检查点的值覆盖。

    1/在保存检查点的文件夹中,应该有一个名为“checkpoint”的文件,其中包含最新检查点的名称。
    我通常阅读此文件以查找最新的检查点

    2/我使用检查点目录/全局步骤。
    这样,tf将在checkpoint_目录中创建4个文件:

    全局步骤数据-00000-of-00001
    全局步进索引
    全局步骤元
    检查点

    3/4/我很确定在加载之前不需要预先初始化图形,至少我没有这样做。
    有一些区别:不是导入元图,而是在每次加载时重新生成整个图,但我确信在初始化之前加载不是问题。

    5/注意不要错误地进行张量运算,这样就很好了。张量名称应为op_name:0,这意味着此张量是操作op_name的输出[0]

    6/7/好吧,让我告诉你我如何恢复我的检查点。这可能不是正确的方法,但它确实使我从按名称获取张量的负担中解脱出来。用名字来表示张量有时可能是一个真正的pita。
    通常情况下,我的加载过程将经历:重建图形、加载检查点、根据需要创建一些新的张量、初始化不在检查点中的张量。

    build_net()
    saver=tf.train.saver()
    saver.restore(会话、检查点目录/全局步骤)
    添加\u损失\u和\u优化器()
    初始化\u所有\u未初始化\u张量


    如果需要最新的检查点,检查点目录/全局步骤来自检查点文件,或者您可以使用不同的全局步骤来获取要加载的特定检查点。

    1/在保存检查点的文件夹中,应该有一个名为“checkpoint”的文件,其中包含最新检查点的名称。
    我通常阅读此文件以查找最新的检查点

    2/我使用检查点目录/全局步骤。
    这样,tf将在checkpoint_目录中创建4个文件:

    全局步骤数据-00000-of-00001
    全局步进索引
    全局步骤元
    检查点

    3/4/我很确定在加载之前不需要预先初始化图形,至少我没有这样做。
    有一些区别:不是导入元图,而是在每次加载时重新生成整个图,但我确信在初始化之前加载不是问题。

    5/注意不要错误地进行张量运算,这样就很好了。张量名称应为op_name:0,这意味着此张量是操作op_name的输出[0]

    6/7/好吧,让我告诉你我如何恢复我的检查点。这可能不是正确的方法,但它确实使我从按名称获取张量的负担中解脱出来。用名字来表示张量有时可能是一个真正的pita。
    通常情况下,我的加载过程将经历:重建图形、加载检查点、根据需要创建一些新的张量、初始化不在检查点中的张量。

    build_net()
    saver=tf.train.saver()
    saver.restore(会话、检查点目录/全局步骤)
    添加\u损失\u和\u优化器()
    初始化\u所有\u未初始化\u张量

    如果您想要最新的检查点,则checkpoint_dir/global_步骤来自检查点文件,或者您可以使用不同的global_步骤来获取所需的特定检查点
    for i in tf.get_default_graph().get_operations():
        print(i.values)
    
    'global_step/initial_value' type=Const>>
    'global_step' type=VariableV2>>
    <'global_step/Assign' type=Assign>>
    
    global_step/read' type=Identity>>
    
    <bound method Operation.values of <tf.Operation 'Loss/Const' type=Const>>
    <bound method Operation.values of <tf.Operation 'Loss/Mean' type=Mean>>
    <bound method Operation.values of <tf.Operation 'Loss/AddN' type=AddN>>
    <bound method Operation.values of <tf.Operation 'Loss/add' type=Add>>
    <bound method Operation.values of <tf.Operation 'Loss/loss/tags' type=Const>>
    <bound method Operation.values of <tf.Operation 'Loss/loss' type=ScalarSummary>>
    
    saver = tf.train.Saver()
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        saver.restore(sess, tf.train.latest_checkpoint('./'))
        ...