こしあん
2018-10-21

Google Colaboratoryからファイルを簡単にGoogle Driveへ書き込む方法


Google ColaboratoryからGoogle Driveに保存する方法はいくつかあるのですが、最近改良が入って簡単に書き込めるようになっていました。その方法を見ていきます。

まずはGoogle Driveをマウント

Google Driveをマウントし、Colabの中で使えるようにします。

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

これはカレントディレクトリ以下の「gdrive」というフォルダに、Google Driveをマウントするよという意味です。このフォルダは何でもいいです。Google Driveのファイルはここで指定したフォルダ(gdrive)以下の、「gdrive/My Drive」フォルダに格納されます。

このコードを実行すると認証URLが出てくるので、その認証コードをコピーし認証させます。この認証はランタイムがリセットされるたびに必要なので注意が必要です

ちゃんとマウントされているか確認するには、Linuxコマンドの「ls」を使います。

!ls gdrive

ColabではビックリマークをつけるとLinuxコマンドを実行できます。マウントが成功するとこのように出てくるはずです。

‘My Drive’

ちなみに、My Drive以下の中身を見たいときは、パスにスペースが入っているため「!ls gdrive/My Drive」とやるとエラーになります。「!ls gdrive/My\ Drive」とスペースをエスケープするか、「!ls “gdrive/My Drive”」とパス全体をクォテーションで囲んでください

ちなみにこの「マウントする」とは一回読んで終わりではなくて、定期的にGoogle Driveと同期が取られるようです。これを活用すると、Drive上のファイルを簡単に読み書きできるようになります。

Google Driveにファイルを書き込んでみる

例として画像ファイルを書き込んでみましょう。

drive_root_dir="./gdrive/My Drive"

import numpy as np
from PIL import Image

noise = (np.random.rand(128,128,3)*255.0).astype(np.uint8)
with Image.fromarray(noise) as img:
  img.save(drive_root_dir+"/noise.png")

これは乱数を発生させて、ピクセルにノイズを作り出し、そのノイズ画像(128×128)をGoogle Driveに保存する例です。即Google Drive側に反映されないかもしれませんが、数秒待つとこのようにGoogle Driveに保存されているのが確認できます。

あとはGoogle Driveを普通に使うようにダウンロードすればいいだけなので簡単ですね。

読み込む場合

ちなみに読み込む場合はもっと簡単で、普通にファイルを読めばいいのです。

drive_root_dir="./gdrive/My Drive"

import numpy as np
from PIL import Image

with Image.open(drive_root_dir+"/noise.png") as img:
  img_array = np.asarray(img)
  print(img_array.shape)

(128, 128, 3)

ローカルにあるファイルと同じ要領で使えるので、とても簡単ですね。

以上です。ColabのVMのストレージは時間制限があり、長期的に使用することができませんが、Google Driveに適宜出力することでモデルやファイルの永続化をすることができます。

Related Posts

Google ColabのTPU環境でmodel.fitのhistoryが消える現象... Google ColabのTPU環境でmodel.fitしたときに、通常の環境で得られるhistory(誤差や精度のログ)が消えていることがあります。その対応法を示します。 原因はTPU用のモデルに変換したから まず結論からいうとこの現象はCPU/GPU環境では再発しません。TPU環境特有の現...
tensorflow.kerasでKeras方式のhdf5で重みを保存する方法... 従来のKerasで係数を保存すると「hdf5」形式で保存されたのですが、TPU環境などでTensorFlowのKerasAPIを使うと、TensorFlow形式のチェックポイントまるごと保存で互換性の面で困ったことがおきます。従来のKerasのhdf5形式で保存する方法を紹介します。 サンプル...
Google ColabのTPUでResNetのベンチマークを取ってみた... Google ColaboratoryでTPUが使えるようになりましたが、さっそくどのぐらい速いのかベンチマークを取ってみました。以前やったResNetのベンチマークを使います。 環境:Google Colab(TPU)、TensorFlow:1.11.0-rc2、Keras:2.1.6 コ...
Google ColabのTPUでメッセージがうるさいときにやること... Google ColabのTPUを使っているとえらいメッセージが表示されて、うるさいときがあります。そんなときにメッセージを消す裏技を発見したので書いていきたいと思います。 こんなメッセージ おそらくTPUがまだ実験段階だからかと思われますが、デフォルトだとこんな感じにずらずらとログが流れます...
ColabのTPUでNASNet Largeを訓練しようとして失敗した話... ColabのTPUはとてもメモリ容量が大きく、計算が速いのでモデルのパラメーターを多くしてもそこまでメモリオーバーor遅くなりません。ただし、あまりにモデルが深すぎると訓練の初期設定で失敗することがあります。NASNet Largeを訓練しようとして発生しました。これを見ていきます。 CIFAR...

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です