我检查tensorflow API,如果为None,则var_list默认为所有可保存对象的列表。我想知道所有可保存对象的含义是什么? tf.global_variables? W = tf.get_variable(“ W”,shape = [784,256],initializer = tf.contrib.layers.xavier_initializer()) b = tf.get_variable(“ b”,shape = [784,256],initializer = tf.contrib.layers.xavier_initializer()) m = tf.add(W,b) m是否属于tf.global_variables? 我真的很困惑。 这是我的图,我发现训练和损失节点存在,那么我要保存训练和损失节点吗?我只想保存模型权重.....
答案 0 :(得分:1)
var_list变量说明了它的作用,有时您可能不想保存整个模型,而只保存其中一部分,出于这些目的,可以使用此列表,让我详细说明
我正在研究人脸识别,我训练了一个CNN,该CNN从人脸图像中提取信息,并提供512大小的编码数组,然后我可以将其传递给SVM,后者可以将这些嵌入映射到名称,现在在训练中我需要SVM(或简单的ANN)在推理过程中不需要它,并且保存其权重将导致更大的模型尺寸并消耗更多的GPU内存,因此我可以在保存时决定仅存储CNN变量,而不存储SVM / ANN,因此我将在var_list中传递CNN的层名称,而不是SVM的层名称
保存以进行推理的另一个方面是,像dropout这样的层在推理过程中是无用的,因此最好不要完全存储它们,因为它们会占用大量内存
在您的情况下,我建议您不要使用它并按原样保存模型