【发布时间】:2021-11-09 00:50:40
【问题描述】:
我一直在尝试可视化 VGG-16 网络的输出。但是输出似乎是错误的。如您所知,卷积不会翻译图片的语义部分。就像下图一样,如果头部在图片的顶部,它应该在卷积完成后仍然在图片的顶部。但似乎并非如此。我使用下面的代码来提取中间层。
class vgg16(torch.nn.Module):
def __init__(self, pretrained=True):
super(vgg16, self).__init__()
vgg_pretrained_features = tv.vgg16(pretrained=pretrained).features
self.layerss = torch.nn.Sequential()
for x in range(30):
self.layerss.add_module(str(x), vgg_pretrained_features[x])
self.layerss.eval()
def forward(self, x):
output=[]
for i,layer in enumerate( self.layerss):
# print (i)
x=layer(x)
output.append(x)
return output
model=vgg16()
output=model.forward(img)
import matplotlib.pyplot as plt
plt.imshow(output[0][0][0].detach())
这里是原图和VGG网络第一层第一通道的输出:
如你所见,脸一直向下移动,脖子一直向上,图片的整体结构被打破了
【问题讨论】:
标签: neural-network pytorch conv-neural-network vgg-net