我正在建立一个玩具模型来拍摄一些图像并给我一个分类。我的模型如下:
conv2d -> pool -> conv2d -> linear -> linear
。
我的问题是,在创建模型时,我们必须根据输入图像的大小来计算第一线性层in_features
的大小。如果我们得到不同大小的新图像,则必须为线性图层重新计算in_features
。为什么我们必须这样做?不能只是推断吗?
答案 0 :(得分:1)
从 1.8 开始,PyTorch 现在有 LazyLinear
可以推断输入维度:
推断 in_features 的 torch.nn.Linear
模块。
答案 1 :(得分:0)
您为什么期望线性层推断其输入大小?如果您有意 想要更改此大小(即转换层输出通道或其他内容),该怎么办。我相信您的工作应该参数化(即,由定义明确的参数控制)。解决方法是始终将输入图像 转换为定义的形状。但是,我不建议这样做,因为这可能会严重影响模型的准确性,因为转换会丢失像素(即输入的特征)。