从 PyTorch 中提取有用的特征 - 高效的 net-3b 模型
Posted
技术标签:
【中文标题】从 PyTorch 中提取有用的特征 - 高效的 net-3b 模型【英文标题】:Extracting useful features from a PyTorch - efficient net-3b model 【发布时间】:2022-01-24 03:22:27 【问题描述】:我有一个基于 EfficientNet PyTorch (efficientnet-3b) 的 PyTorch CNN,它在相当复杂的胸部 X 光片的二元分类(99% 以上)方面做得非常好。我想提取特征并在相关模型中使用它们。 EfficientNet PyTorch 有一个非常方便的方法model.extract_features
与给定的例子
features = model.extract_features(img)
print(features.shape) # torch.Size([1, 1280, 7, 7])
效果很好,我得到了宣传的结果,但我需要更多 [1, 516] 或类似形状的功能。我需要足够多的功能才能具有相当的歧视性,但又不能太多以至于笨拙。 我熟悉添加一个层或一系列层的技术,最后是一个具有我需要大小的输出的全连接层。
如果这是我需要在这里做的事情,请有人指导我完成流程、架构等。此外,如果解决方案利用了上述方法,那就太好了。
【问题讨论】:
【参考方案1】:最简单的架构是用线性投影结束特征提取器:
class MyExtractor:
def __init__(self, extractor, features = 512):
self.extractor = extractor
self.projection = torch.nn.Sequential(torch.nn.Flatten(), torch.nn.LazyLinear(out_features))
def forward(self, x):
return self.projection(self.extractor(x))
你可以像这样实例化它:
m = MyExtractor(model, 512)
这适用于任何大小的输出特征。
您也可以提供更大的features
,但 L1 对最后一层进行正则化以仅获得最重要的特征
【讨论】:
以上是关于从 PyTorch 中提取有用的特征 - 高效的 net-3b 模型的主要内容,如果未能解决你的问题,请参考以下文章
高效提取 MultiPolygon 中自相交特征生成的所有子多边形
基于VGG19神经网络的提取特征 进行 可见光与红外光的 图像融合 基于pytorch 实现。。。