我已经创建了不同输入形状的深度学习模型。对于测试,我根据模型的输入形状手动调整图像大小我需要调整图像的深度模型的输入形状任何命令都可以在PYTORCH中找到模型的输入形状
model = torch.load(config.MODEL_PATH).to(config.DEVICE) im = cv2.resize(im, (INPUT_IMAGE_HEIGHT,INPUT_IMAGE_HEIGHT))
如何从模型中找到INPUT_IMAGE_HEIGHT?
INPUT_IMAGE_HEIGHT
fnvucqvd1#
这是一个棘手的问题,因为输入大小可能取决于模型的多个组件。简单的回答是你不能。关于输入Tensor中的通道数量,您可以仅基于第一个卷积层来推断这一点。* 假设 * 你的模型是一个二维卷积网络,那么你可以根据以下公式得到输入通道数:
for child in model.modules(): if type(child).__name__ == 'Conv2d': print(child.weight.size(1)) break
现在对于输入大小,正如我所说的,您可能根本无法推断出此信息。实际上,一些卷积网络(诸如分类网络)可能需要特定的维度,使得瓶颈可以被平坦化并馈送到完全连接的网络中。但这并不总是正确的,使用某种拉取操作(平均或最大拉取)的网络将减轻提供固定输入形状的需求。其他网络,如密集预测网络,可能不需要获得特定的形状作为输入,因为输入和输出之间是对称的。这一切都取决于网络的设计,因此,我恐怕没有明确的答案,你的问题。
1条答案
按热度按时间fnvucqvd1#
这是一个棘手的问题,因为输入大小可能取决于模型的多个组件。简单的回答是你不能。
关于输入Tensor中的通道数量,您可以仅基于第一个卷积层来推断这一点。* 假设 * 你的模型是一个二维卷积网络,那么你可以根据以下公式得到输入通道数:
现在对于输入大小,正如我所说的,您可能根本无法推断出此信息。实际上,一些卷积网络(诸如分类网络)可能需要特定的维度,使得瓶颈可以被平坦化并馈送到完全连接的网络中。但这并不总是正确的,使用某种拉取操作(平均或最大拉取)的网络将减轻提供固定输入形状的需求。其他网络,如密集预测网络,可能不需要获得特定的形状作为输入,因为输入和输出之间是对称的。
这一切都取决于网络的设计,因此,我恐怕没有明确的答案,你的问题。