最近因为做毕设,模型要来回跑,数据量也不小,在本地跑的话既耗时又耗资源,所以就移到了Colab上实验。Colab
(Colaboratory) 由Google提供,是一个可免费提供GPU等算力的平台,长得像 Jupyter Notebook
,在上面进行Python编码很方便。
由于是新手,免不了遇到很多问题,这里记录下来,以便以后查阅。
首先是数据导入导出问题。
Q1:我的实验数据在本地,如何加载到Colab?
A:两个步骤
步骤1:输入以下代码,需要选择要上传的数据文件
1 | from google.colab import files |
步骤2:将上传的数据文件导入到一个数据框中,但要确保 filename
与 步骤1
中上传的数据文件名一致
1 | import io |
除了从本地加载数据外,还可以从 Github
、Google Drive
导入,方法也简单,具体可参考这里。
Q2:对于训练结果,我想将其导出到 result.csv
文件并存储到与Colab关联的 Google Drive
中,应该怎么做?
A: 四个步骤
步骤1:将下列授权代码copy到cell中运行,允许登录Google账号并完成相关授权。一般是两次授权,一次允许登录,一次允许访问。
1 | !apt-get install -y -qq software-properties-common python-software-properties module-init-tools |
步骤2:指定存放 result.csv
文件的根目录
1 | # 查看默认文件目录 |
步骤3:指定存放 result.csv
文件的具体工作文件夹,例如
1 | # 指定当前的工作文件夹 |
步骤4:运行将数据写入 result.csv
文件的代码,该结果文件就存在之前指定的目录中了,可下载到本地。
1 | data = pd.DataFrame(data=cols,columns=columns) |
Q3:Matplotlib绘图显示中文,乱码,使用的字体在Colab找不到,如何解决?
A:四个步骤
注:Colab的虚拟机 Ubuntu
操作系统没有支持中文的字体,通过执行 !fc-list :lang=zh
命令,发现结果为空。
步骤1:获得要使用字体的压缩文件所在 url
,比如,我想使用 SimHei
,下载链接可以在这里找到。别的字体可以问度娘和Google,Google Noto Fonts 提供了多种语言字体。
步骤2:下载后确认该字体是即将要使用的,特别确认字体文件是否是 .otf
或者 .ttf
结尾,比如,我使用 SimHei.ttf
,同时把上一步中压缩文件的下载链接存起来,我的是 https://www.wfonts.com/download/data/2014/06/01/simhei/simhei.zip
步骤3:下载、解压、移动字体文件。在Colab中编辑以下代码,像使用 Ubuntu
终端一样,将用到诸如 wget
,mv
,unzip
之类的Ubuntu命令
。
下载的是一个压缩包,里面包含以.otf
或者 .ttf
结尾的字体文件,所以需要解压;如果已下载字体文件本身(即未压缩),则无需解压缩这一步。
然后,把字体文件移动到 Ubuntu环境
中的字体目录,一般都是 /usr/share/fonts/truetype
。
1 | # 下载--解压--移动字体文件 |
步骤4:测试是否能正常显示中文,需要用到上面的字体目录,比如
1 | import matplotlib.pyplot as plt |
Q4:在显示训练结果时,因为Colab上显示输出的内存有限,在达到限制后,缓存的数据就会被截断,无法展示后面轮的训练结果。但是,模型仍然在后台跑,并且处理了输出,只是由于缓存的限制,它不显出来。
A:三种可选择的方法。
- 最干脆的方式:清除输出,cell左上角点击
×
就可以了 - 通过设置参数不显示输出,将模型拟合中的
verbose
参数置为0 - 若就是想看完整的训练中间结果,那么可以增大内存的限制,让你的训练结果都展示出来。如果使用
Tensorflow
作为后端,可在Keras
中编写Tensorflow
回调来查看详细输出,具体操作可参考这里。
参考链接