如何解决关于使用 PyTorch 编程 cnn 的问题
我对 cnn 编程还很陌生,所以我有点迷茫。我正在尝试执行这部分代码,他们要求我实现一个完全连接的网络来对数字进行分类。它应该包含 1 个具有 20 个单元的隐藏层。我应该在隐藏层上使用 ReLU 激活函数。
class Network(nn.Module):
def __init__(self):
super(Network,self).__init__()
self.fc1 = ...
self.fc2 = nn.Sequential(
nn.Linear(500,10),nn.Softmax(dim = 1)
)
def forward(self,x):
x = x.view(x.size(0),-1)
x = self.fc1(x)
x = self.fc2(x)
return x
点是要填充的部分,我想到了这一行:
self.fc1 = nn.Linear(20,500)
但我不知道它是否正确。有人可以帮我吗?而且我完全不明白 Softmax 的功能是做什么的……所以如果有人知道的话。 非常感谢!!
钯。这是加载数据的代码:
batch_size = 64
trainset = datasets.MNIST('./data',train=True,download=True,transform=transforms.ToTensor())
train_loader = DataLoader(trainset,batch_size=batch_size,shuffle=True,num_workers=1)
testset = datasets.MNIST('./data',train=False,transform=transforms.ToTensor())
test_loader = DataLoader(testset,shuffle=False,num_workers=1)
解决方法
从模型给出的代码可以看出,隐藏层有500个单元。所以我假设你的意思是输入 20 个单位。有了这个假设,代码必须是:
self.fc1 = nn.Sequential(
nn.Linear(20,500),nn.ReLU()
)
进入问题的下一部分,鉴于您正在使用 MNIST 数据集并且您拥有 softmax 函数,我假设您正在尝试预测图像中存在的数量。 您的神经网络在每一层执行各种乘法和加法运算,最后,您在输出层得到 10 个数字。现在,您必须理解这 10 个数字才能决定图像中给出的 10 个数字中的哪一个。
一种方法是选择具有最大值的单位。例如,如果第 10 个单位在所有单位中具有最大值,则我们得出结论该数字为“9”。如果第 2 个单位具有最大值,则我们得出结论,该数字为“1”。
这很好,但更好的方法是将每个单位的值转换为图像中包含相应数字的概率,然后我们选择概率最高的数字。这具有一定的数学优势,有助于我们定义更好的损失函数。
Softmax 帮助我们将值转换为概率。在应用 softmax 时,所有值都在 (0,1) 范围内,并且它们总和为 1。
如果您对深度学习及其背后的数学感兴趣,我建议您查看 Andrew NG 的深度学习课程。
,您没有提及数据的形状,因此我将假设 datasets.MNIST
返回的预期形状。
数据形状:torch.Size([64,1,28,28])
class Network(nn.Module):
def __init__(self):
super(Network,self).__init__()
self.fc1 = nn.Sequential(
nn.Linear(1*28*28,20),nn.ReLU())
self.fc2 = nn.Sequential(
nn.Linear(500,10),nn.Softmax(dim = 1))
def forward(self,x):
x = x.view(x.size(0),-1)
x = self.fc1(x)
x = self.fc2(x)
return x
nn.Linear
的第一个参数是输入特征的大小,第二个参数是单位数。
对于 self.fc1
,输入特征的大小是除批量大小之外的数据形状的乘积,即 1 * 28 * 28
。根据您的帖子,第二个参数应该是 20
(20 个单位)。
self.fc1
的输出(也是 self.fc2
的输入)的形状将是 (batch size,20)
。
对于self.fc2
,输入特征的大小将为20
,而单位数(也是位数)为10
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。