我想知道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
一致。
答案 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())