问题描述
我正在查看图像嵌入,并且想知道为什么翻转图像会改变输出。考虑去掉resnet18的头部,例如:
do {
let decoder = JSONDecoder()
decoder.dataDecodingStrategy = .base64
// You should try to decode `NasaCollection`!!!
let videos = try decoder.decode(NasaCollection.self,from: data)
completed(.success(videos))
}
最后一层看起来像这样,最重要的是,在最后一层上,像素/要素合并为1个像素是import torch
import torch.nn as nn
import torchvision.models as models
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
model = models.resnet18(pretrained=True)
model.fc = nn.Identity()
model = model.to(device)
model.eval()
x = torch.randn(20,3,128,128).to(device)
with torch.no_grad():
y1 = model(x)
y2 = model(x.flip(-1))
y3 = model(x.flip(-2))
:
根据我的想法,由于在卷积之上只是卷积,因此在池化之前,将发生的一切就是特征图将根据图像的翻转方式翻转。平均池仅对最后一个特征图(沿每个通道)进行平均,并且对其方向不变。 AdaptiveAveragePooling
应该是相同的。
“常规”卷积网之间的关键区别在于我们将池平均化为一个像素宽度。
但是,当我查看AdaptiveMaxPool
,y1-y2
,y1-y3
时,这些值明显不同于零。我在想什么错?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)