はじめに
自宅では、Anacondaで環境構築して、統合開発環境(IDE)は「Spyder」を使用していますが、出先でもやりたくなってきたので、Google Colaboratoryを使用することにしました。
更新履歴
- 2022/9/10
- コマンドでのマウントからGUIでのマウントに変更
- Colaboratoryのtensorflowのバージョンが2に変わったので、tensorflow2向けのコードに修正
認証とディレクトリ移動
- Google Drive上で、Colaboratoryのファイルを作成して、Colaboratoryを起動します。
- サイドメニューから[ファイル] - [ドライブをマウント]を選択して、アクセス許可を与えます。
- 以下のコードを入力して、作業ディレクトリに移動します。マイドライブの下に「Colaboratory」というフォルダを作っている前提とします。
import os
os.chdir('/content/drive/My Drive/Colaboratory/')
確認として、以下を実行します。「Colaboratory」の下においているファイル一覧が表示されれば、OKです。
!ls- la
#「!」を先頭につけることで、Linuxのコマンドが使用できます。
Pythonファイルの実行
Pythonのファイルを作成して、「Colaboratory」フォルダに格納します。
今回はTensorFlowのテストも兼ねて、以下のようにします。
import tensorflow as tf
from tensorflow.keras.backend import eval
hello = tf.constant('Hello, TensorFlow!')
print(eval(hello))
ノートブックでファイル名を指定して、importします。それだけです。
import Test
以下のように実行結果が表示されます。
b'Hello, TensorFlow!'
気をつけないといけない点
事例1
「Test.py」をローカルで以下のように書き換えて、Google Drive上のファイルを上書きしたとします。
import tensorflow as tf
from tensorflow.keras.backend import eval
hello = tf.constant('Hello, TensorFlow!!!!!')
print(eval(hello))
出力がb'Hello, TensorFlow!!!!!!
のように変わっているはず!と思いきや、実行しても何も表示されません。
事例2
クラスをつかった場合
class Test:
def test():
print('Hello, Python!')
from Test3 import Test
Test.test()
Hello, Python!
このPythonファイルを以下のように変更して、Google Drive上のファイルを上書きして実行します。
class Test:
def test():
print('Hello, Python!!!')
Hello, Python!
出力内容が変わりません。。。
このせいで、1週間くらいはまりました
どうも、一度importすると、Colaboratoryでキャッシュのように覚えているらしく正常に動作しないことがありそうです。
今回は、ローカルで編集して、GoogleDrive上にコピーしましたが、GoogleDrive上で直接Anyfile NotePadなどを使用して編集した場合も同じでした。
対策
以下のどちらかで解決しました。
対策1
- ノートブックのツールバーの [ランタイム] - [ランタイムの再起動]
※ 再度ディレクトリの移動が必要になります。
対策2
読み込み側でreload()をすることで、解決できます。
import Test
import imp
imp.reload(Test)
まとめ
Google Colaboratory非常に便利ですが、ノートブック外でファイルの修正をした場合は、ランタイムを再起動する!というのを習慣づけた方がよさそうです。
Google ColaboratoryのGPUを使用時に、いかに早かったかは次回で!!!