【发布时间】:2020-07-30 07:07:49
【问题描述】:
我正在尝试使用 PyTorch 对 CNN 中的猫和狗进行分类。 虽然我做了一些图层和处理图像,但我发现最终处理的特征图大小与计算的大小不匹配。 因此,我尝试在 CNN 过程中使用打印形状逐步检查特征图大小,但它不起作用。 我听说 tensorflow 可以分步检查张量大小,但我该怎么做呢?
我想要的是:
def __init__(self):
super(CNN, self).__init__()
conv1 = nn.Conv2d(1, 16, 3, 1, 1)
conv1_1 = nn.Conv2d(16, 16, 3, 1, 1)
pool1 = nn.MaxPool2d(2)
conv2 = nn.Conv2d(16, 32, 3, 1, 1)
conv2_1 = nn.Conv2d(32, 32, 3, 1, 1)
pool2 = nn.MaxPool2d(2)
conv3 = nn.Conv2d(32, 64, 3, 1, 1)
conv3_1 = nn.Conv2d(64, 64, 3, 1, 1)
conv3_2 = nn.Conv2d(64, 64, 3, 1, 1)
pool3 = nn.MaxPool2d(2)
self.conv_module = nn.Sequential(
conv1,
nn.ReLU(),
conv1_1,
nn.ReLU(),
pool1,
# check first result size
conv2,
nn.ReLU(),
conv2_1,
nn.ReLU(),
pool2,
# check second result size
conv3,
nn.ReLU(),
conv3_1,
nn.ReLU(),
conv3_2,
nn.ReLU(),
pool3,
# check third result size
pool4,
# check fourth result size
pool5
# check fifth result size
)
如果有任何其他方法可以在每一步检查特征大小,请提供一些建议。 提前致谢。
【问题讨论】:
-
model.summary() 是否可以帮助您可视化模型的层?
-
@RandomGuy 感谢您的帮助,但它不适用于自定义网络也许我应该做一些功能?
-
您的模型似乎并不难,您可以尝试创建具有相同层和参数的通用 Keras 模型并应用 model.summary()。它实际上可能比自定义函数更快、更容易阅读
-
@RandomGuy 你明白了。我应该改用 Tensorflow。
标签: python pytorch conv-neural-network