Pytorch - 推断线性层 in_features
Posted
技术标签:
【中文标题】Pytorch - 推断线性层 in_features【英文标题】:Pytorch - Inferring linear layer in_features 【发布时间】:2019-10-09 06:57:19 【问题描述】:我正在构建一个玩具模型来获取一些图像并给我一个分类。我的模型看起来像:
conv2d -> pool -> conv2d -> linear -> linear
.
我的问题是,当我们创建模型时,我们必须根据输入图像的大小来计算第一个线性层的大小in_features
。如果我们得到不同大小的新图像,我们必须为我们的线性层重新计算in_features
。为什么我们必须这样做?就不能推断吗?
【问题讨论】:
【参考方案1】:从 1.8 开始,PyTorch 现在有 LazyLinear
来推断输入维度:
推断出 in_features 的
torch.nn.Linear
模块。
【讨论】:
谢谢,我已经习惯了计算它,但是他们把这个包括在内真是太好了。【参考方案2】:您为什么希望线性层推断其输入大小?如果您有意想要更改此大小(即,conv 层输出通道或其他)怎么办。我相信你的工作应该是参数化的(即,由明确定义的参数控制)。一种解决方法是始终将输入图像转换为定义的形状。但是,我不建议这样做,因为这可能会严重影响模型的准确性,因为转换包括丢失像素(即输入的特征)。
【讨论】:
以上是关于Pytorch - 推断线性层 in_features的主要内容,如果未能解决你的问题,请参考以下文章
关于对PyTorch中nn.Linear的官方API文档解读
如何在简单的pytorch模型中重构cnn层的输出张量以供线性层使用