在 Google Colab 中保存 TensorFlow 检查点

Posted

技术标签:

【中文标题】在 Google Colab 中保存 TensorFlow 检查点【英文标题】:Save TensorFlow checkpoint in a Google Colab 【发布时间】:2019-11-15 15:48:42 【问题描述】:

我正在尝试使用 TF.train.Saver() 保存经过训练的模型

saver = tf.train.Saver()

with tf.Session() as sess:
  [...]
  save_path = saver.save(sess, "/final_model.ckpt")

我知道这可以在本地计算机上运行,​​但是当我尝试在 Google Colab 上运行它时,它无法运行,并出现以下错误:

ValueError: final_model.ckpt 的父目录不存在

我已经执行了here提出的答案,

from google.colab import drive
drive.mount('/content/gdrive/')

但我保存的模型不会放在当前目录中。它进入了我在我的云端硬盘中看不到的content 文件夹。

我的代码在My Drive/TF 01/some method/ 下,我想将检查点和日志保存在同一个文件夹中。

【问题讨论】:

【参考方案1】:

发生这种情况是因为以下行:

save_path = saver.save(sess, "/final_model.ckpt")

“/”符号指的是 Colab 的“家”。假设您的个人驱动器安装为:

from google.colab import drive
drive.mount('/content/gdrive/')

您可以通过这种方式保存在您的驱动器中:

save_path = saver.save(sess, "gdrive/My Drive/TF 01/some method/final_model.ckpt")

或者通过硬编码:

save_path = saver.save(sess, "/content/gdrive/My Drive/TF 01/some method/final_model.ckpt")

或者,如果您只想在运行时使用它,只需删除“/”符号:

save_path = saver.save(sess, "final_model.ckpt")

【讨论】:

您能否解释一下“如果您只想在运行时中,只需删除 / 符号”是什么意思。如果我删除“/”,它会保存在哪里?我不能在工作完成后找到它吗? 这意味着它将保存在你的运行时,在文件夹“/content/”中。基本上,当您打开协作页面时,它就是您在左侧看到的“文件资源管理器”。如果在 Colab 中以这种方式保存文件,则在重置运行时时会丢失它。这就是为什么我还建议您将其保存在 Google 驱动器文件夹中,这样您在重置运行时时不会丢失模型权重。 有没有办法获得当前目录而无需硬编码?我不喜欢在分享我的 colab 时分享我的文件结构(即"/content/gdrive/My Drive/TF 01/some method/final_model.ckpt")。 不幸的是这是不可能的。您唯一能做的就是使用语法 gdrive/My Drive/TF 01/some method/final_model.ckpt 而不是带有 /content/ 的语法,但您不能隐藏您的谷歌驱动器结构。 @mao95 我们是否只是为 /TF 01/ 编写自己的语法,还是这是标准的?我可以举个例子说明用什么代替“/some method/”。感谢 MatinKh Kh 提出这个问题。

以上是关于在 Google Colab 中保存 TensorFlow 检查点的主要内容,如果未能解决你的问题,请参考以下文章

将列表保存到文件中,将另一个列表添加到同一文件中,然后在 google colab 上加载

如果我断开连接,Google Colab 会继续运行单元以将文件保存在已安装的驱动器中吗?

colab pytorch张量操作

在 Python 中嵌入 Matplotlib 动画(google colab notebook)

如何在 Google Colab 中做内部链接

当我在 Google Colab 上运行深度学习训练代码时,生成的权重和偏差是不是会保存在某个地方?