はじめに
GoogleのColaboratoryにて、無料でGPUが使えるという嬉しすぎる報告から簡易テスト用はこれを使うこと一択!と思っています。
しかも、TeslaのK80という太っ腹過ぎます!
いつも使っているディープラーニングフレームワークであるChainerでも対応しており、TensorFlow, Pytorchと基本はノートブック内で !pip install 〜
とするだけでOKです。
参考:【秒速で無料GPUを使う】TensorFlow/Keras/PyTorch/Chainer深層学習環境 on Colaboratory
簡単にMNISTを通すテストだけでは気づかなかったのですが、実務で使い始めると、画像やCSVファイルを読み込みたいケースがあり、その時に控えめに言っても結構めんどくさいし、全然リファレンスが見つかりませんでしたので、今回ざっくりとまとめておきます。
- もっと他にスマートな方法があれば教えてもらえるとありがたいです m(_ _)m
前提としては、Googleのアカウントを持っていることだけです。
1. ファイルをアップロード
それでは、今回は sample.csv
ファイルを読み込む練習をしてみましょう。
まずは、Google Driveのどこでも良いので、ドラッグドロップでアップロードしましょう。

2. 共有リンクを取得
ファイルを右クリックでメニューを開き、『共有可能なリンクを取得』しましょう。

リンクの共有がオフです
と出てくる場合は、右側のバーをスライドさせて共有をオンにしましょう。

そうすると、共有リンクが取得できるため、こちらをコピーしておきましょう。
大事なところは、id=
以下になります。
例えば、ここからは https://drive.google.com/open?id=kikagaku
だとして話を進めていきましょう。

3. Colaboratoryでノートブックを開く
Google Colabにアクセスして、新規もしくは既存のノートブックを開いてください。
ノートブックは自動的にGoogle DriveのColab Notebook
というフォルダに保存されています。
このフォルダに読み込みたいデータをアップロードしておけばOKかな?と思ったのですが、全然そういう訳ではありませんでした。

最初には datalab
という得体の知れないファイルのみあり、それ以外は何もありません。
4. Google Driveにアクセスするための準備
まず、PyDrive
というGoogle Driveと接続するためのモジュールをインストールしておく必要があります。
!pip install -U -q PyDrive
つぎに、インストールした中で必要なライブラリを読み込んでおきましょう。
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
もし、google
がありませんとエラーが出た場合は、同様に !pip install google
でインストール完了です。
そして、Google Cloud SDKの認証を行いましょう。
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
こちらを実行すると、下記のようにGoogle Cloud SDKの認証リンクが出てきます。

リンクへアクセスし、ユーザーIDを選択して、Google Cloud SDKでの使用を許可すると、下記の画面のように Verification Code が得られます。

こちらのコードをEnter verification code
の部分にコピペしてEnterです。
特にエラーが起きなければ認証完了です。
5. Google Drive上のファイルにアクセス
ここで、Step2で取得していた共有リンクの出番です。
id
という変数に、共有リンクで取得した id= より後の部分を貼り付けて、下記のコードを実行してください。
id = 'kikagaku' # 共有リンクで取得した id= より後の部分
downloaded = drive.CreateFile({'id': id})
downloaded.GetContentFile('sample.csv')
こちらを実行して特にエラーが出なければ、Google Drive上のファイルがダウンロードされています。
ディレクトリの中身を確認してみましょう。

これで後はローカルのファイルと同様に読み込むことができます。
6. (補足)ディレクトリ毎アップロードしたい場合
ディレクトリは id
とは異なる共有リンクであるため、zipファイルに圧縮してアップロードを行いダウンロードするのが無難そうです。
例えば、images.zip
というファイル名で圧縮した後にGoogle Driveへアップロードを行った場合、前述の手順と同様に共有リンクを元にダウンロードを行います。

こんな風に images.zip
をダウンロードしてくることができるのですが、解凍しないと使えないため、unzip
コマンドで解凍しましょう。
!unzip images.zip

非常に簡単に解凍できました。
解凍後にimages.zip
が必要なければ、!rm images.zip
で削除すればOKです。

こんな風にディレクトリのアップロードも完了しました。
おわりに
Dropbox等であれば、wget
で取ってくる方法もあるそうです。
参考:colaboratory をつかってみる CSVのファイルをアップロード
みなさん、ハッピーなディープラーニングライフを送りましょう!
著者紹介
TwitterでAI関連の情報をつぶやいていますので、フォローお待ちしています!