Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用PyTorch构建包含400个节点的CNN隐藏层?_Python_Deep Learning_Neural Network_Pytorch_Conv Neural Network - Fatal编程技术网

Python 如何使用PyTorch构建包含400个节点的CNN隐藏层?

Python 如何使用PyTorch构建包含400个节点的CNN隐藏层?,python,deep-learning,neural-network,pytorch,conv-neural-network,Python,Deep Learning,Neural Network,Pytorch,Conv Neural Network,我想使用Pytork创建包含400个节点的卷积层,如下所示,条件是具有400个隐藏神经元的完全连接线性层/输出为10,将图像展平为向量以进行输入,并使用ReLU函数 当我打印出x.shape时,它返回像torch.Size([1024300])和torch.Size([1024,10]),我的第一层是torch.Size([100,3,32,32])。我对如何构建这个简单的CNN以及我所缺少的东西感到困惑 class MyNet(nn.Module): def __init__(self):

我想使用Pytork创建包含400个节点的卷积层,如下所示,条件是具有400个隐藏神经元的完全连接线性层/输出为10,将图像展平为向量以进行输入,并使用ReLU函数

当我打印出
x.shape
时,它返回像
torch.Size([1024300])
torch.Size([1024,10])
,我的第一层是
torch.Size([100,3,32,32])
。我对如何构建这个简单的CNN以及我所缺少的东西感到困惑

class MyNet(nn.Module):
 def __init__(self):
  super(MyNet, self).__init__()
  self.relu = nn.ReLU()
  self.fc1 = torch.nn.Linear(400, 10)

  def forward(self, x):
   x = x.view(-1, 400)
   print(x.shape)
   x = self.relu(self.fc1(x))
   print(x.shape)

   return x




我想中间线性层需要400个单元,首先是1个conv层,最后是一个线性层,10个单元用于分类

您需要这样的网络:

import torch
import torch.nn as nn
import torch.nn.functional as F


class Net(nn.Module):
    def __init__(self, n_channel = 3, final_conv_feature_size = (8,8), conv_filters = 32):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(n_channel, conv_filters, 3, 1) # first layer with 32 filters
        self.adapt = nn.AdaptiveMaxPool2d(final_conv_feature_size)
        self.fc1 = nn.Linear(conv_filters * final_conv_feature_size[0] * final_conv_feature_size[1] , 400)
        self.fc2 = nn.Linear(400, 10)

    def forward(self, x):
        x = self.conv1(x)
        x = F.relu(x)
        x = self.adapt(x)
        x = torch.flatten(x, 1)
        x = self.fc1(x)
        x = F.relu(x)
        x = self.fc2(x)
        output = F.log_softmax(x, dim=1)
        return output

model = Net()
print(model)
Net(
  (conv1): Conv2d(3, 32, kernel_size=(3, 3), stride=(1, 1))
  (adapt): AdaptiveMaxPool2d(output_size=(8, 8))
  (fc1): Linear(in_features=2048, out_features=400, bias=True)
  (fc2): Linear(in_features=400, out_features=10, bias=True)
)