Pytorchを使って,ミニバッチ学習を用いたCNNモデルを構築しています.その際に,パラメータ更新をミニバッチごとのlossの平均値で行っているのですが,これは正しい実装なのでしょうか.
コードとしての実装は以下の通りになっています.
python
1for count, data in enumerate(self.train_loader): 2 inputs = Variable(data['inputs']) 3 labels = Variable(data['labels']) 4 batch_loss = [] 5 #batch_size = 32なので,32回ループしてlossの平均を取る 6 for i, l in zip(inputs, labels): 7 out = model(i) 8 loss = self.criterion(out, l) 9 batch_loss.append(loss) 10 batch_ave_loss = sum(batch_loss)/len(batch_loss) 11 self.optim.zero_grad() 12 batch_ave_loss.backward() 13 self.optim.step()
ミニバッチ学習が,バッチ毎のlossの平均でパラメータ変更を行うということは色々な記事でみたのですが,実際に上記のコードでのfor文のようなコードを書いている人はいませんでした.
これはネットワークの構造によるものなのでしょうか.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。