SummaryWriter函數
-
這個函數用于創建一個tensorboard文件,其中常用參數有
- log_dir:tensorboard文件的存放路徑。不設置log_dir默認會在當前程序所在的文件夾下創建個runs文件夾存儲
- flush_secs:表示寫入tensorboard文件的時間間隔
- comment:文件夾名稱的后綴
- filename_suffix:文件名字后綴
add_scalar函數
- 功能:記錄標量的變化常用于Loss和Accuarcy曲線的記錄
add_scalar(tag, scalar_value, global_step=None,walltime=None)
tag ( string ) – 數據標識符
scalar_value ( float或string/blobname ) – 要保存的值:相當于是x的值
global_step ( int ) – 要記錄的全局步長值:相當于是y的值
walltime ( float ) – 記錄訓練的時間,默認 walltime (time.time()) 秒
new_style ( boolean ) – 是使用新樣式(張量字段)還是舊樣式(simple_value 字段)。新樣式可能會導致更快的數據加載。
- 示例代碼
writer = SummaryWriter(comment='_scalars', filename_suffix="12345678")for x in range(100):writer.add_scalar('y=pow_2_x', 2 ** x, x)writer.close()
add_scalars函數
- 功能:記錄標量的變化,常用于對比
add_scalars(main_tag, tag_scalar_dict,global_step=None, walltime=None)
main_tag ( string ) – 標簽的父名稱
tag_scalar_dict ( dict ) – 存儲標簽和對應值的鍵值對:相當于y的值。
global_step ( int ) – 要記錄的全局步長值:相當于x的值
walltime ( float ) – 記錄訓練的時間,默認 walltime (time.time()) 秒
- 示例代碼
max_epoch = 100writer = SummaryWriter(comment='test_comment', filename_suffix="test_suffix")for x in range(max_epoch):writer.add_scalar('y=2x', x * 2, x)writer.add_scalar('y=pow_2_x', 2 ** x, x)writer.add_scalars('data/scalar_group', {"xsinx": x * np.sin(x),"xcosx": x * np.cos(x)}, x)writer.close()
add_histogram函數
- 功能:統計直方圖與多分位數折線圖
add_histogram(tag, values, global_step=None,bins='tensorflow', walltime=None)
? tag:圖像的標簽名,圖的唯一標識
? values:要統計的參數
? global_step:y軸
? bins:取直方圖的bins
- 示例代碼
writer = SummaryWriter("histogram_logs")for i in range(10):x = np.random.random(1000)writer.add_histogram('distribution centers', x + i, i)writer.close()
add_image函數
- 功能:記錄圖像
add_image(tag, img_tensor, global_step=None,walltime=None, dataformats='CHW')
? tag:圖像的標簽名,圖的唯一標識
? img_tensor:圖像數據,注意尺度
? global_step:x軸
? dataformats:數據形式,CHW,HWC,HW
- 示例代碼
writer = SummaryWriter(comment='test_your_comment', filename_suffix="_test_your_filename_suffix")fake_img = torch.randn(3, 512, 512)writer.add_image("fake_img", fake_img, 1)
torchvision.utils.make_grid函數
- 功能:制作網格圖像
make_grid(tensor, nrow=8, padding=2,normalize=False, range=None, scale_each=False,pad_value=0)
? tensor:圖像數據, B*C*H*W形式
? nrow:行數(列數自動計算)
? padding:圖像間距(像素單位)
? normalize:是否將像素值標準化
? range:標準化范圍
? scale_each:是否單張圖維度標準化
? pad_value:padding的像素值
- 示例代碼
writer = SummaryWriter(comment='test_your_comment', filename_suffix="_test_your_filename_suffix")split_dir = os.path.join("..", "..", "data", "rmb_split")train_dir = os.path.join(split_dir, "train")transform_compose = transforms.Compose([transforms.Resize((32, 64)), transforms.ToTensor()])train_data = RMBDataset(data_dir=train_dir, transform=transform_compose)train_loader = DataLoader(dataset=train_data, batch_size=16, shuffle=True)data_batch, label_batch = next(iter(train_loader))img_grid = vutils.make_grid(data_batch, nrow=4, normalize=True, scale_each=True)# img_grid = vutils.make_grid(data_batch, nrow=4, normalize=False, scale_each=False)writer.add_image("input img", img_grid, 0)
add_graph函數
- 功能:可視化模型計算圖
add_graph(model, input_to_model=None, verbose=False)
? model:模型,必須是 nn.Module
? input_to_model:輸出給模型的數據
? verbose:是否打印計算圖結構信息 model( torch.nn.Module ) – 要繪制的模型。
input_to_model ( torch.Tensor or list of torch.Tensor ) – 要輸入的變量或變量元組
verbose(bool)– 是否在控制臺中打印圖形結構。
use_strict_trace ( bool ) – 是否將關鍵字參數嚴格傳遞給 torch.jit.trace。當您希望跟蹤器記錄您的可變容器類型(列表、字典)時傳遞 False.
- 示例代碼
writer = SummaryWriter(comment='test_your_comment', filename_suffix="_test_your_filename_suffix")# 模型fake_img = torch.randn(1, 3, 32, 32)lenet = LeNet(classes=2)writer.add_graph(lenet, fake_img)
torch.summary函數
- 功能:查看模型信息,便于調試
summary(model, input_size, batch_size=-1,device="cuda")
? model:pytorch模型
? input_size:模型輸入size
? batch_size:batch size
? device:“cuda” or “cpu”
- 示例代碼
summary(lenet, (3, 32, 32), device="cpu")
參考鏈接