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

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

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

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

PyTorch

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

0回答

1068閲覧

pytorchでクロスバリデーションを行いたいが評価の値が変わらない

ttt.k

総合スコア3

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

PyTorch

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2021/09/08 09:33

機械学習について最近勉強し始めたのですが、クロスバリデーションについて質問です。
トレーニングデータ60,000を48,000の訓練データ12,000のバリデーションデータに分けました。以下のコードで学習を進めてみたのですが、バリデーションのlossが変化しません。結果的にはトレーニングのlossを引き継いでいるようなlossが出ています。どのように変えればクロスバリデーションの学習が進むでしょうか?

pytorch

1def train(net, trainloader, NUM_EPOCHS): 2 train_loss = [] 3 for epoch in range(NUM_EPOCHS): 4 running_loss = 0.0 5 for data in trainloader: 6 img, _ = data # we do not need the image labels 7 # add noise to the image data 8 img_noisy = img + NOISE_FACTOR * torch.randn(img.shape) 9 # clip to make the values fall between 0 and 1 10 img_noisy = np.clip(img_noisy, 0., 1.) 11 img_noisy = img_noisy.to(device) 12 optimizer.zero_grad() 13 outputs = net(img_noisy) 14 loss = criterion(outputs, img_noisy) 15 # backpropagation 16 loss.backward() 17 # update the parameters 18 optimizer.step() 19 running_loss += loss.item() 20 21 loss = running_loss / len(trainloader) 22 train_loss.append(loss) 23 print('Epoch {} of {}, Train Loss: {:.3f}'.format( 24 epoch+1, NUM_EPOCHS, loss)) 25 return train_loss 26 27def val(net, valloader, NUM_EPOCHS): 28 val_loss = [] 29 for epoch in range(NUM_EPOCHS): 30 running_loss = 0.0 31 for data in valloader: 32 img, _ = data # we do not need the image labels 33 img_noisy = img + NOISE_FACTOR * torch.randn(img.shape) 34 # clip to make the values fall between 0 and 1 35 img_noisy = np.clip(img_noisy, 0., 1.) 36 img_noisy = img_noisy.to(device) 37 outputs = net(img_noisy) 38 loss = criterion(outputs, img_noisy) 39 # update the parameters 40 running_loss += loss.item() 41 loss = running_loss / len(valloader) 42 print('Epoch {} of {}, Val Loss: {:.3f}'.format( 43 epoch+1, NUM_EPOCHS, loss)) 44 return val_loss

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

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

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

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

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

lazykyama

2021/09/10 09:29

`train()` と `val()` それぞれの呼び出し側についても記載いただけますでしょうか? また「バリデーションのlossが変化しません。結果的にはトレーニングのlossを引き継いでいるようなlossが出ています。」とのことなのですが、具体的にどういう値になっているのか (e.g., 出力されたログメッセージ全体など) も追記いただけると、より具体的な回答ができるのではないかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問