質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

7883閲覧

Pytorchでテスト中にクラッシュ/out of memoryになってしまう

n_thk72

総合スコア19

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2020/05/05 07:58

Pytorchでコードを回しているのですが、テスト中にクラッシュを起こすかCUDA:out of memoryを起こしてしまい動作を完了できません。

実行タスクはKagleの「Plant Pathology 2020 - FGVC7」です。
これは、約1800枚の葉っぱの画像を4種類にクラス分けするタスクです。

学習モデルのコード、検証のコードはそれぞれ下記の通りです。

Python

1class Net(nn.Module): 2 def __init__(self): 3 super(Net,self).__init__() 4 densenet = models.densenet121(pretrained=False) 5 self.Densenet = nn.Sequential(*list(densenet.children())[:-1]) 6 self.fc1 = nn.Linear(1024*7*7,4096) 7 self.fc2 = nn.Linear(4096, 1024) 8 self.fc3 = nn.Linear(1024, 128) 9 self.fc4 = nn.Linear(128, 4) 10 11 12 13 def forward(self, x): 14 x = self.Densenet(x) 15 x = x.view(-1,1024*7*7) 16 x = self.fc1(x) 17 x = self.fc2(x) 18 x = self.fc3(x) 19 x = self.fc4(x) 20 21 return x

Python

1device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') 2model = Net() 3model.to(device) 4optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9) 5criterion = nn.MSELoss() 6model.train() 7epochs = 3 8total_steps = 0 9# 学習ループ 10for i in range(epochs): 11 running_loss=0 12 for batch,labels in train_dl: 13 14 labels=labels.float() 15 optimizer.zero_grad() 16 17 batch = batch.to(device) 18 labels = labels.to(device) 19 20 preds = model(batch) 21 loss = criterion(preds, labels) 22 loss.backward() 23 optimizer.step() 24 total_steps +=1 25 running_loss += loss.detach() 26 27 print_training_loss_summary(running_loss, total_steps, i+1, epochs, len(train_dl))

python

1model.eval() 2x=torch.randn(1,4) 3x=x.to(device) 4for batch in test_dl: 5 optimizer.zero_grad() 6 7 batch = batch.to(device) 8 9 outputs = model(batch) 10 x=torch.cat((x,outputs),0) 11 print(x.size()) 12x = x[1:,:]

GPUの使用、不使用にかかわらずテスト中に問題が起こってしまうため、Google colabでもKaggle上でも自分のPCのローカル環境でも予測が行えていません。
メモリを使用しすぎな箇所がありましたらご指摘いただければ幸いです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

検証、テストのループを

Python

1with torch.no_grad():

で回すとメモリ超過にならずに水底までできました。

投稿2020/05/17 03:36

n_thk72

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問