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

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

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

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

Q&A

0回答

1431閲覧

'SummaryWriter' object has no attribute 'log_dir'を直したい

shimauma111

総合スコア6

PyTorch

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

0グッド

0クリップ

投稿2020/03/07 06:40

前提・実現したいこと

Pytorchを使ってSRCNNを実装し、超解像を趣味でやっています。SRCNNのプログラムを動かしたところエラーで「'SummaryWriter' object has no attribute 'log_dir'」と出てきました。いろいろと調べてみたのですが、いまいち解決できませんでした。Pytorchに触れるのは初めてに近いので、勉強しながらやっているのですが、わからないことが多いです。解決策がわかる方いましたら、教えていただけると助かります。

発生している問題・エラーメッセージ

'SummaryWriter' object has no attribute 'log_dir'

該当のソースコード

import torch from torch import nn from torch import optim from torch.utils.data import DataLoader from torch.autograd import Variable from torchvision.utils import save_image import tensorboardX as tbx from tensorboardX import SummaryWriter from pathlib import Path from math import log10 from model import SRCNN from dataset import DatasetFromFolder, DatasetFromFolderEval import argparse parser = argparse.ArgumentParser(description='predictionCNN Example') parser.add_argument('--cuda', action='store_true', default=False) opt = parser.parse_args() train_set = DatasetFromFolder(image_dir='./data/General-100/train', patch_size=96, scale_factor=4, data_augmentation=True) train_loader = DataLoader(dataset=train_set, batch_size=10, shuffle=True) val_set = DatasetFromFolderEval(image_dir='./data/General-100/val', scale_factor=4) val_loader = DataLoader(dataset=val_set, batch_size=1, shuffle=False) model = SRCNN() criterion = nn.MSELoss() if opt.cuda: model = model.cuda() criterion = criterion.cuda() optimizer = optim.Adam([{'params': model.conv1.parameters()}, {'params': model.conv2.parameters()}, {'params': model.conv3.parameters(), 'lr': 1e-5}], lr=1e-4) writer = tbx.SummaryWriter() log_dir = Path(writer.log_dir) sample_dir = log_dir / 'sample' sample_dir.mkdir(exist_ok=True) weight_dir = log_dir / 'weights' weight_dir.mkdir(exist_ok=True) for epoch in range(50000): model.train() epoch_loss, epoch_psnr = 0, 0 for batch in train_loader: inputs, targets = Variable(batch[0]), Variable(batch[1]) if opt.cuda: inputs = inputs.cuda() targets = targets.cuda() optimizer.zero_grad() prediction = model(inputs) loss = criterion(prediction, targets) epoch_loss += loss.data epoch_psnr += 10 * log10(1 / loss.data) loss.backward() optimizer.step() writer.add_scalar('train/loss', epoch_loss / len(train_loader), global_step=epoch) writer.add_scalar('train/psnr', epoch_psnr / len(train_loader), global_step=epoch) print('[Epoch {}] Loss: {:.4f}, PSNR: {:.4f} dB'.format(epoch + 1, epoch_loss / len(train_loader), epoch_psnr / len(train_loader))) if (epoch + 1) % 1000 != 0: continue model.eval() val_loss, val_psnr = 0, 0 with torch.no_grad(): for batch in val_loader: inputs, targets = batch[0], batch[1] if opt.cuda: inputs = inputs.cuda() targets = targets.cuda() prediction = model(inputs) loss = criterion(prediction, targets) val_loss += loss.data val_psnr += 10 * log10(1 / loss.data) save_image(prediction, sample_dir / '{}_epoch{:05}.png'.format(batch[2][0], epoch + 1), nrow=1) writer.add_scalar('val/loss', val_loss / len(val_loader), global_step=epoch) writer.add_scalar('val/psnr', val_psnr / len(val_loader), global_step=epoch) print("===> Avg. Loss: {:.4f}, PSNR: {:.4f} dB".format(val_loss / len(val_loader), val_psnr / len(val_loader))) torch.save(model.state_dict(), str(weight_dir / 'weight_epoch{:05}.pth'.format(epoch + 1)))

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問