python - 如何指定pytorch nn.Linear的输入维度?
问题描述
例如,我定义了如下所示的模型:
class Net(nn.module):
def __init__():
self.conv11 = nn.Conv2d(in_channel,out1_channel,3)
self.conv12 = nn.Conv2d(...)
self.conv13 = nn.Conv2d(...)
self.conv14 = nn.Conv2d(...)
...
#Here is the point
flat = nn.Flatten()
#I don't want to compute the size of data after flatten, but I need a linear layer.
fc_out = nn.Linear(???,out_dim)
问题是线性层,我不想计算线性层输入的大小,但定义模型需要指定它。我怎么解决这个问题?
解决方案
我这样做的方法是输入一些任意值并让模型抛出错误。您将能够在错误描述中看到输入特征的数量。
还有其他方法可以做到这一点。您可以手动计算大小,并在每层旁边写下nn.Conv2d
描述层输出的注释。在使用 之前nn.Flatten()
,您将获得输出,只需将除 bacthsize 之外的所有维度相乘即可。结果值是nn.Linear()
图层的输入特征数。
如果您不想这样做,可以尝试torchlayers。一个方便的包,可让您定义像 Keras 这样的 pytorch 模型。
推荐阅读
- python - Python 等待条件满足
- python - ubuntu容器中python subprocess.check_output() json参数解析
- php - php使用包含名称的js文件重命名文件
- powerbi - 在带有 Power Bi Desktop 图表的 DAX 中使用 IN 运算符?
- r - r : 从原始数据中获取值
- docker - ECONNREFUSED api 调用从 nextjs 使用 nginx dockerdocker 到 Strapi
- botframework - 未从 TeamsActivityHandler.onInvokeActivity 调用 onTurnError
- python - 将“axvspan”扩展到绘图的边界
- git - 'github.com/....' jenkins 的身份验证失败
- javascript - 如何从 iframe 获取当前页面 url 并显示在浏览器上