我正在使用一个合理大小的网络(1 个卷积层,2 个全连接层)。每次我使用 tf.train.Saver
保存变量时, .ckpt
文件是每个磁盘空间的半 GB(准确地说是 512 MB)。这是正常的吗?我有一个架构相同的 Caffe 网络,只需要 7MB .caffemodel
文件。 Tensorflow 保存这么大的文件有什么特别的原因吗?
非常感谢。
最佳答案
很难从您所描述的情况中判断您的网络有多大——两个完全连接层之间的连接数量与每层的大小成二次方扩大,因此根据您的完全连接的大小,您的网络可能非常大层。
如果你想在检查点文件中节省空间,你可以替换这一行:saver = tf.train.Saver()
具有以下内容:saver = tf.train.Saver(tf.trainable_variables())
默认情况下,tf.train.Saver()
保存图中的所有变量——包括优化器创建的用于累积梯度信息的变量。告诉它只保存可训练的变量意味着它将只保存网络的权重和偏差,并丢弃累积的优化器状态。您的检查点可能会小很多,权衡是您在恢复训练后的前几个训练批次可能会遇到较慢的训练,而优化器会重新累积梯度信息。根据我的经验,恢复速度并不需要很长时间,所以就我个人而言,我认为对于较小的检查点来说,这种权衡是值得的。
关于neural-network - Tensorflow tf.train.Saver 保存可疑的大 .ckpt 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35332495/