GPU環境で深層学習の論文の実装を再現したいと考えております。
しかし,そこでエラーが起きてしまったため解決方法をご教授いただけると幸いです。
試したこと
論文のgithubはこちらです:
https://github.com/christina-aigner/exploring-generalization
こちらのコードにおいて,trainを実装するのは時間の関係上後回しにし,
まずは訓練済みのモデルを用いた評価をグラフ化させることを行いたいと考えました。
そのために,local環境にこちらのgitをcloneしてgoogle drive上にuploadしました。
google driveのfileの構造としてはこのような形です。
???? drive | |- ???? MyDrive | |-???? Ronbun | |-???? 該当git | |-該当git上のさまざまなファイル | |-再現用のipynbの場所
行ったこととしては,
RuntimeのHardware accelerlatorをGPUにして
以下のコードを実装しました:
python
1# ここでgoogle driveと連携 2from google.colab import drive 3drive.mount('/content/drive') 4 5paper_path="/content/drive/MyDrive/Ronbun/exploring-generalization" 6 7# 念の為 moduleのimport 8import sys 9import time 10sys.path.append(paper_path) 11from src import * 12 13# 該当gitにてsrcに移動しろとあるため移動 14#/content/drive/MyDrive/Ronbun/exploring-generalization/src 15# に移動 16%cd {paper_path} 17%cd src 18
そして以下のコードを実装したところ
python
1_s=time.time() 2!python evaluate.py --savedmodels=fc 3_g=time.time() 4print(_g-_s)
以下のようなエラーが出ました,
(evaluate.pyやplot_utils.pyの中身を見る限り
notebook上に論文のgithubのplotsの図が表示されることを期待しましたが):
Traceback (most recent call last): File "evaluate.py", line 129, in <module> model, device, margin, nchannels, img_dim) File "/content/drive/My Drive/Ronbun/exploring-generalization/src/utils/eval_utils.py", line 97, in calculate_norms input_size=[1, nchannels, img_dim, img_dim]) / margin File "/content/drive/My Drive/Ronbun/exploring-generalization/src/measures/measures.py", line 88, in path_norm return (tmp_model(data_ones).sum() ** (1 / p)).item() File "/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py", line 1051, in _call_impl return forward_call(*input, **kwargs) File "/content/drive/My Drive/Ronbun/exploring-generalization/src/models/fc.py", line 17, in forward x = self.classifier(x) File "/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py", line 1051, in _call_impl return forward_call(*input, **kwargs) File "/usr/local/lib/python3.7/dist-packages/torch/nn/modules/container.py", line 139, in forward input = module(input) File "/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py", line 1051, in _call_impl return forward_call(*input, **kwargs) File "/usr/local/lib/python3.7/dist-packages/torch/nn/modules/linear.py", line 96, in forward return F.linear(input, self.weight, self.bias) File "/usr/local/lib/python3.7/dist-packages/torch/nn/functional.py", line 1847, in linear return torch._C._nn.linear(input, weight, bias) RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking arugment for argument mat1 in method wrapper_addmm) 4.436869144439697
こちらのエラーを解消して,図を表示する方法を教えていただけると幸いです。
(あまり関係ないかもしれませんが,試したことであるため追記いたします。
試しにlocal(macOS)でこちらを実行したところ
$ python3 evaluate.py --savedmodels=fc Traceback (most recent call last): File "/Users/**/exploring-generalization/src/evaluate.py", line 142, in <module> plot_error(tr_error_list, val_error_list, x_error, xtitle, error_title) File "/Users/**/exploring-generalization/src/utils/plot_utils.py", line 23, in plot_error plt.legend([train, test]) File "/usr/local/lib/python3.9/site-packages/matplotlib/pyplot.py", line 2917, in legend return gca().legend(*args, **kwargs) File "/usr/local/lib/python3.9/site-packages/matplotlib/axes/_axes.py", line 284, in legend handles, labels, extra_args, kwargs = mlegend._parse_legend_args( File "/usr/local/lib/python3.9/site-packages/matplotlib/legend.py", line 1231, in _parse_legend_args raise TypeError("A single argument passed to legend() must be a " TypeError: A single argument passed to legend() must be a list of labels, but found an Artist in there.
とエラーが生じてしましました。)
回答1件
あなたの回答
tips
プレビュー