Я пытаюсь нанести линейный слой на 2D матрицу тензоров, соединяя его только по столбцу, как показано на рисунке ниже.
![1D linear layer applied to 2D layer](https://i.stack.imgur.com/IOiBE.png)
Форма ввода: (batch_size, 3, 50) . Сначала я попробовал с двумерной сверткой, добавив измерение в 1 канал, поэтому форма ввода (batch_size, 1, 3, 50)
import torch.nn as nn
import torch
class ColumnConv(nn.Module):
def __init__(self):
self.layers = nn.Sequential(
nn.Conv2d(
in_channels=1,
out_channels=1,
kernel_size=(3, 1),
stride=1,
), # shape is B, 1, 1, 50
nn.ReLU(),
nn.Flatten() #shape is B, 50
)
def forward(self, x):
return self.layers(x)
Но, похоже, это не работает. Я планирую использовать список из 50 nn.Linear
слоев и применить их к входным фрагментам столбцов, но это выглядит скорее как обходной путь, не оптимизированный для производительности.
Есть ли еще " pytorchi c " как это сделать?