# nn.Linear(16,32,3) 3D returns RuntimeError: size mismatch at /opt/conda/conda-bld/pytorch_1518243271935/work/torch/lib/THC/generic/THCTensorMathBlas.cu:247

Hello,

l have the following input `x=dim(16,16,3)` that l would like to pass to`nn.Linear()`

``````
cl = nn.Linear(16,32,3)
``````

when l make `x=cl(x)` l get the following error :
***** RuntimeError: size mismatch at /opt/conda/conda-bld/pytorch_1518243271935/work/torch/lib/THC/generic/THCTensorMathBlas.cu:247**

But when it comes to 2D input such as

``````x=dim(16,16,3)
cl=nn.Linear(16,32)
x=cl(16,32)
``````

It works well.

How can l adapt nn.Linear to (16,32,3) ?

From the docs :
“Input: (N,∗,in_features) where * means any number of additional dimensions.
Output: (N,∗,out_features) where all but the last dimension are the same shape as the input.”

So with nn.Linear, you can apply a transformation on the last dimension of you input.

Thanks it works l did the following :

``````x=dim(16,3,32)
cl = nn.Linear(16, 32,3)
x = cl(x)
``````

but according to documentation Output: (N,∗,out_features) is equivalent to cl = nn.Linear(16, 3,32) (in this case it doesn’t work. l permuted dim 2 and dim 1 like this and it works cl = nn.Linear(16, 32,3)

`nn.Linear(in_features, out_features, bias=True)`… I don’t know what your `3` should do.

If your import is of size `(16,16,3)`
then your Linear layer should be `nn.Linear(3, output_features)`
and will return output of size `(16,16,output_features)`.

And if you feed it input of size `(16,32,3)`
then it will produce output of size `(16,32,output_features)`

1 Like