这是我第一次遇到矩阵输入和向量输出的情况,这里有些混乱。
我需要的 CNN 结构如下所示:
层描述在这里:
batch size为200,因此输入为tensor(200*[2*list[]]
表示的2 * 24矩阵,预期输出为tensor(200*[4*list[]])
表示的4 * 1矩阵,我目前拥有的模型代码:< /p>
class BNN_P1(nn.Module):
def __init__(self):
super(BNN_P1,self).__init__()
self.conv1=nn.Conv2d(1,8,kernel_size=3,stride=1,padding=1,bias=True) #layer 2, convolutional
self.bn1=nn.BatchNorm2d(8,eps=1e-03, momentum=0.99) #layer 3,batch normalization
self.conv2=nn.Conv2d(8,8,kernel_size=3,stride=1,padding=1,bias=True) #layer 5,convolutional
self.bn2=nn.BatchNorm2d(8,eps=1e-03, momentum=0.99) #layer 7,batch normalization
self.fc=nn.Linear(?,?) #layer 9,fully connected
self.sigmoid=nn.Sigmoid() #layer 10,sigmoid
def forward(self,x):
batch_size=x.size(0)
x=F.relu(self.bn1(self.conv1(x))) #layer 4,ReLU
x=F.relu(self.bn2(self.conv2(x))) #layer 6,ReLU
x=x.view(batch_size,-1) #layer 8,flatten
x=self.fc(x)
x=self.sigmoid(x)
return x
我的问题是我应该如何确定线性输入和输出设置以获得正确答案?如果可能的话,有人能解释一下在这个过程中形状的变化吗?