TensorFlow的检查点文件大小与参数数量之间的关系

时间:2018-03-16 13:20:36

标签: tensorflow

我想知道TensorFlow的检查点文件的大小与模型的参数数量之间的关系。

我有一个7百万个参数的模型,它应该需要大约(4 * 1.8 * 10^6) / 1024^2 MB的内存(给定model-5000.data-00000-of-00001 15MB model-5000.index 15K )。但是,保存的检查点显然更大

caffemodel

在Caffe中,4的分数似乎始终与UserDefaults一致。

1 个答案:

答案 0 :(得分:-1)

我想说检查点文件与.caffemodel文件不是100%可比。除了模型参数之外,它还包含更多的东西,例如:加载数据节点,权重初始化器,保护节点等。参数将被保存为可训练的变量,这会占用我想象的更多空间。

要获得与caffe的.caffemodel类似的东西,您需要将变量转换为常量(称为冻结图形),然后将图形保存为二进制原型文件(.pb)。这样做将删除图中的所有不必要节点。

要转向.pb,你可以像下面这样做:

 output_graph_def = tf.graph_util.convert_variables_to_constants(
        sess,                       # The session is used to retrieve the weights
        sess.graph_def,             # The graph_def is used to retrieve the nodes 
        output_node_names           # The output node name
    ) 

    # Finally we serialize and dump the output graph to the filesystem
    with open('mode.pb', 'wb') as f:
        f.write(output_graph_def.SerializeToString())