用pytorch lightning组织tensorboard graph
Organize tensorboard graph with pytorch lightning
我已经使用 log_graph=True
.
将默认的 tensorboard 记录器 (from pytorch_lightning.loggers import TensorBoardLogger
) 添加到我的 pytorch lightning Trainer
当我训练我的模型时,图表的第一个视图显示三个块:
输入 => MyNetworkClassName => 输出
到目前为止一切顺利。
但是,当我展开 MyNetworkClassName 时,它会为我提供网络中发生的一切。到处都是很多箭头。我想将此图组织成具有可扩展子图的更简单的块。所以在我的例子中,我的网络有一个典型的编码器 - 增强器 - 解码器结构,我想要更像这样的东西:
第一张图:
- 输入 => MyNetworkClassName => 输出
在 MyNetworkClassName 上放大:
- 编码器 => 增强器 -> 解码器
放大编码器:
- encoder_layer1 => encoder_layer2 => ...
放大 encoder_layer1:
- conv2d => batchnorm
我在这里有哪些选择?我应该把所有东西都放在单独的 类 中吗?是否有任何命令允许我将某些操作组合在一起?
将代码重构为 classes 也会影响张量板图(其中重构为方法不会)。将显示为可扩展块的典型示例 class:
class EncoderLayer(nn.Module):
"""Encoder layer class"""
def __init__(self, activation_function, kernel_num, kernel_size, idx):
super().__init__()
self.layer = nn.Sequential(
ComplexConv2d(
kernel_num[idx],
kernel_num[idx + 1],
kernel_size=(kernel_size, 2),
),
nn.BatchNorm2d(kernel_num[idx + 1])
activation_function,
)
def forward(self, x):
return self.layer(x)
我已经使用 log_graph=True
.
from pytorch_lightning.loggers import TensorBoardLogger
) 添加到我的 pytorch lightning Trainer
当我训练我的模型时,图表的第一个视图显示三个块:
输入 => MyNetworkClassName => 输出
到目前为止一切顺利。
但是,当我展开 MyNetworkClassName 时,它会为我提供网络中发生的一切。到处都是很多箭头。我想将此图组织成具有可扩展子图的更简单的块。所以在我的例子中,我的网络有一个典型的编码器 - 增强器 - 解码器结构,我想要更像这样的东西:
第一张图:
- 输入 => MyNetworkClassName => 输出
在 MyNetworkClassName 上放大:
- 编码器 => 增强器 -> 解码器
放大编码器:
- encoder_layer1 => encoder_layer2 => ...
放大 encoder_layer1:
- conv2d => batchnorm
我在这里有哪些选择?我应该把所有东西都放在单独的 类 中吗?是否有任何命令允许我将某些操作组合在一起?
将代码重构为 classes 也会影响张量板图(其中重构为方法不会)。将显示为可扩展块的典型示例 class:
class EncoderLayer(nn.Module):
"""Encoder layer class"""
def __init__(self, activation_function, kernel_num, kernel_size, idx):
super().__init__()
self.layer = nn.Sequential(
ComplexConv2d(
kernel_num[idx],
kernel_num[idx + 1],
kernel_size=(kernel_size, 2),
),
nn.BatchNorm2d(kernel_num[idx + 1])
activation_function,
)
def forward(self, x):
return self.layer(x)