train.pyを実行したときにloss値がマイナスとなります。
一部ですが、
0.9684 --- loss: -0.006312
Epoch finished ! Loss: -0.022088063708708985
これってありえないですよね?
epoch数が5(最後)にマイナスが多く出てきたので、過学習ですかね?
セットしたデータが同じ個体の真正面ばかりで過学習が起きたのか?
試したこと
・0,1以外の数値があると、マイナスになると聞いて、学習させたい物を1,背景が0に設定。
python
1 for epoch in range(epochs): 2 print('Starting epoch {}/{}.'.format(epoch + 1, epochs)) 3 net.train() 4 5 # reset the generators 6 train = get_imgs_and_masks(iddataset['train'], dir_img, dir_mask, img_scale) 7 val = get_imgs_and_masks(iddataset['val'], dir_img, dir_mask, img_scale) 8 9 epoch_loss = 0 10 11 for i, b in enumerate(batch(train, batch_size)): 12 imgs = np.array([i[0] for i in b]).astype(np.float32) 13 true_masks = np.array([i[1] for i in b]) 14 15 imgs = torch.from_numpy(imgs) 16 true_masks = torch.from_numpy(true_masks) 17 18 if gpu: 19 imgs = imgs.cuda() 20 true_masks = true_masks.cuda() 21 22 masks_pred = net(imgs) 23 masks_probs_flat = masks_pred.view(-1) 24 25 true_masks_flat = true_masks.view(-1) 26 27 loss = criterion(masks_probs_flat, true_masks_flat) 28 epoch_loss += loss.item() 29 30 print('{0:.4f} --- loss: {1:.6f}'.format(i * batch_size / N_train, loss.item())) 31 32 optimizer.zero_grad() 33 loss.backward() 34 optimizer.step() 35 36 print('Epoch finished ! Loss: {}'.format(epoch_loss / i))
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。