首页 > 解决方案 > 如何计算 CNN 第一线性层的输入?

问题描述

所以,我得到了这个用 PyTorch 构建的 CNN 代码:CNN 代码1的图片

到目前为止,我已经能够通过在 forward 函数中打印 f5.shape 的最后两个维度的乘积来计算最后一个 conv1d 块(在本例中为 b5)之后的线性层(self.fc)的输入大小,但我需要自动化实验,我不能只打印每个测试的值并更改代码。

我的输入张量的大小也是可变的(我有信号作为我的数据,并且我使用一个窗口来获取每个样本的 X 个点,因此例如 1020 的窗口大小将导致我猜的 1020x1x3 张量,是一个 1D CNN 和我有 3 个输入通道)。

那么,如何使用此代码自动获取 self.n_features 参数(线性层的输入)?

标签: pythonpytorchconv-neural-network

解决方案


一种方法是使用惰性版本nn.Linear,即nn.LazyLinear. 在你的情况下:

self.fc = nn.LazyLinear(n_class)

它将在第一层推理上初始化其权重。


推荐阅读