大学の研究でJupyter Notebookを使ってPythonプログラムを動かしているのですが,詳しい方に聞きたいことができたので質問させていただきます.
プログラムを動かすと一定時間後にPCが落ちてしまうという問題が起こりました.
調べてみるとある変数のメモリーが膨大になってしまい落ちてしまうということがわかりました.(参考サイト→ https://qiita.com/AnchorBlues/items/883790e43417640140aa)
しかしこの変数は後の処理で使うために必要なので,対処方法を知っている方おりましたらご教授お願いします.
ここからは憶測で,まだ試していないのですが,もしかして単純に変数に保管せず,外部のファイルに保存し,あとで呼び出せば良かったりしますか?
[追記]
リスト内の要素数が上の数式に従います.
例えば,n=13では8192となります.
n=23(要素数:8388608)ではリスト内の要素数が膨大となり,メモリエラーを吐いてしまいます.
Python3
1def ps_j(folder_path,target_layer): 2 # import文省略 3 g_pearson = {} 4 g_spearman = {} 5 6 for i in range(len(target_layer)): 7 for layers in list(itertools.combinations(target_layer,i+1)): 8 layers = list(layers) 9 double_calc(folder_path, "temp_layer", layers) 10 g_pearson["{}".format(','.join(layers))],g_spearman["{}".format(','.join(layers))] = all_calc(folder_path,"temp_layer",["./{}/experiment/幾何平均/{}.json".format(folder_path,"temp_layer")],["{}.json".format("temp_layer")]) 11 return g_pearson, g_spearman 12 13 14target_layer = ['conv_1','conv_2', ..., 'conv_n'] 15folder_path = "mobilenet/202010221843" 16ps, ss = ps_j(folder_path, target_layer) 17
【関数の概要】
double_calc:数値が羅列されたjsonファイルが作られる.戻り値はなし.
all_calc:戻り値はjsonファイルをもとにtarget_layerで指定された層の計算結果.
target_layer内のnが大きいほど,ps_j()内にあるg_pearson,g_spearmanの要素数が大きくなり,メモリエラーとなってしまいます.なにか解決方法がございましたらご教授お願いします.
あなたの回答
tips
プレビュー