PyTorch 的实现
以下步骤用于使用 PyTorch 创建卷积神经网络。
第1步
导入创建简单神经网络所需的包。
from torch.autograd import Variable
import torch.nn.functional as F
第2步
创建一个具有卷积神经网络批量表示的类。我们输入 x 的批次形状的维度为 (3, 32, 32)。
class SimpleCNN(torch.nn.Module):
def __init__(self):
super(SimpleCNN, self).__init__()
#Input channels = 3, output channels = 18
self.conv1 = torch.nn.Conv2d(3, 18, kernel_size = 3, stride = 1, padding = 1)
self.pool = torch.nn.MaxPool2d(kernel_size = 2, stride = 2, padding = 0)
#4608 input features, 64 output features (see sizing flow below)
self.fc1 = torch.nn.Linear(18 * 16 * 16, 64)
#64 input features, 10 output features for our 10 defined classes
self.fc2 = torch.nn.Linear(64, 10)
第 3 步
计算第一个卷积大小从 (3, 32, 32) 变为 (18, 32, 32) 的激活。
维度的大小从 (18, 32, 32) 变为 (18, 16, 16)。由于其大小从 (18, 16, 16) 变为 (1, 4608),因此重塑了神经网络输入层的数据维度。
回想一下,-1 从另一个给定的维度推断出这个维度。
def forward(self, x):
x = F.relu(self.conv1(x))
x = self.pool(x)
x = x.view(-1, 18 * 16 *16)
x = F.relu(self.fc1(x))
#Computes the second fully connected layer (activation applied later)
#Size changes from (1, 64) to (1, 10)
x = self.fc2(x)
return(x)