Sar*_*han 3 tensorflow pytorch
张量流或 keras 中的特征可视化很简单,可以在这里找到。https://machinelearningmastery.com/how-to-visualize-filters-and-feature-maps-in-convolutional-neural-networks/或卷积神经网络可视化 - 权重或激活?
如何在 pytorch 中做到这一点?
我正在使用 PyTorch 和预训练的 resnet18 模型。我需要输入图像并激活特定层(例如 Layer2.0.conv2)。Layer2.0.conv2 在预训练模型中指定。
简单来说;如何将链接一代码转换为 PyTorch?如何获取 resnet18 PyTorch 中的特定层以及如何获取输入图像的激活。我在tensorflow中尝试过,它有效,但PyTorch无效。
您必须在特定层上注册 PyTorch 的钩子。有关钩子的介绍,请参阅本教程。
基本上,它允许input/output捕获forward/backward进入torch.nn.Module. 整个事情可能有点复杂,存在一个与您的目标类似的库(免责声明,我是作者),称为torchfunc. 特别torchfunc.hooks.recorder是允许您做您想做的事情,请参阅下面的代码片段和注释:
import torchvision
import torchfunc
my_network = torchvision.resnet18(pretrained=True)
# Recorder saving inputs to all submodules
recorder = torchfunc.hooks.recorders.ForwardPre()
# Will register hook for all submodules of resnet18
# You could specify some submodules by index or by layer type, see docs
recorder.modules(my_networks)
# Push example image through network
my_network(torch.randn(1, 3, 224, 224))
Run Code Online (Sandbox Code Playgroud)
您可以register仅记录由或层类型指定的某些层(子模块)index,要获取必要的信息,请运行:
# Zero image before going into the third submodule of this network
recorder.data[3][0]
# You can see all submodules and their positions by running this:
for i, submodule in enumerate(my_network.modules()):
print(i, submodule)
# Or you can just print the network to get this info
print(my_network)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4494 次 |
| 最近记录: |