neural-network - Tensorflow tf.train.Saver 保存可疑的大 .ckpt 文件?

标签 neural-network tensorflow conv-neural-network

我正在使用一个合理大小的网络(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/

相关文章:

tensorflow - 神经网络中的分类特征值

python - 如何更改 Keras 优化器代码

python - 根据条件从另一个张量创建一个张量

python - TensorFlow 是否允许定义未定义大小的变量?

machine-learning - ECG 信号上的 Keras Conv1D

machine-learning - 机器学习: Unsupervised Backpropagation

machine-learning - 用于回归问题的神经网络(或类似网络)

在Android中运行TensorFlow模型时出现java.nio.BufferOverflowException运行时错误?

python - 更改 CNN 以使用 3D 卷积

python - 为什么 Keras Conv1D 层的输出张量没有输入维度?