import json # 「変数」の値をjson形式の文字列に変換(sはstringの意味) # この文字列をファイルに書き込めばよい json_str = json.dumps( 変数 ) # もしくは直接ファイルに書き込む with open(ファイル名,"w") as f: json.dump(変数, f, ensure_ascii=False,indent=4) # ファイルからの取り出し with open(ファイル名,"r") as f: json_str = f.load(f) # 上のjson_strは文字列である。それを復元するには json.loadsを用いる 変数 = json.loads(json_str)
import pickle # メソッド:dumps, dump (変数の値のシリアライズ, sは文字列に変換) pickled = pickle.loads(変数) # 文字列に変換、これをファイルに書き込めば保存 # ファイルに変数の値を保存 with open(ファイル名, "wb") as f: f.dump(変数) # メソッド: loads, load (シリアライズされたオブジェクトの復元, sは文字列対象) 変数 = pickle.loads(pickled) # 文字列からの復元 # ファイルからの復元 with open(ファイル名, "rb") as f: 変数 = pickle.load(f) # 注意: インスタンスの復元では、loadする時に、そのクラス定義が行われていることが必要
from keras.models import Sequential # KerasモジュールのSequentialモデル from keras.layers import Dense, Activation model = Sequential() # あくまで例 model.Dense(1, input=784) model.add(Activation('sigmoid')) model.add(Dense(10)) model.add(Activation('softmax') model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.1), metrics=['accuracy']) model.fit(X, Y, epocs=200, batch_size=128) # 学習, (X,Y): 訓練データ ### ここまでで学習モデルができた(はずな)ので ### モデルの保存 model.save(ファイル名) # HDF5形式で保存 ##############復元################### ### モデルの読み込み from keras.models import load_model model=load_model(ファイル名)ColaboratoryやGPUサーバーでは、エポックごとにモデルを保存するのがおすすめ:
import os from keras.callbacks import ModelCheckpoint # コールバック関数の定義 checkpoint = ModelCheckpoint( filepath=os.path.join(ディレクトリ名, 'model_{epoch:02d}.hdf5'), save_best_only=True) model=model.fit(X_train, y_train, epochs=epochs, bath_size=batch_size, validation_data=(X_val, y_val), callbacks=['checkpoint']) # このように先に定義した関数を書く
# インストール sudo apt install sshpass # 使用方法 sshpass {-p PASSWORD|-f PASSWORD.TXT | -e} コマンド オプション # sshの実行 (PASSWORDは ACCOUNT@HOSTNAMEのパスワード) sshpass -p "PASSWORD" ssh HOSTNAME -l ACCOUNT # パスワードはファイルの先頭に書いておいても良い sshpass -f PASSWORD.TXT ssh HOSTNAME -l ACCOUNT # 環境変数SSHPASSにセットしてもよい sshpass -e ssh HOSTNAME -l ACCOUNT # scpの実行 (PASSWORDは ACCOUNT@HOSTNAMEのパスワード) # FILE_PATHはダウンロード先のファイルへのパス、DIRECTORYはlocalマシンのディレクトリ名 sshpass -p "PASSWORD" scp ACCOUNT@HOSTNAME:FILE_PATH DIRECTORY # パスワードはファイルの先頭やSSHPASS環境変数でもよいことはsshの場合と同じ
def os_system(cmd): import subprocess return subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).communicate()[0] # test lst=os_system("ls -l")
# 注意: これは雛形 # ファイルpasswd.txtの1行目にパスワードをセットしてあるとして def send_receive(img, id, host, dir, prog): import subprocess, os try: os.system("sshpass -f passwd.txt scp {} {}@{}:{}/".format(img,id,host,dir)) cmd="sshpass -f passwd.txt ssh {}@{} {} {}".format(id,host,prog,img), res=subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, shell=True).communicate()[0] except: res=None return res # 実行例 ans=send_receive("/tmp/test.png","pi","192.168.0.5","/tmp","classify")