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")