關於pytorch cnn輸出層。

  统计/机器学习 Python 人工神经网络    浏览次数:1759        分享
0

各位先進大家好:

最近在學pytorch,我在官網看tutorial發現一個問題

這是cnn的分類問題,想請教輸出的時候為何不需要指定activation function

照理說應該要用softmax輸出啊?

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        # 1 input image channel, 6 output channels, 3x3 square convolution
        # kernel
        self.conv1 = nn.Conv2d(1, 6, 3)
        self.conv2 = nn.Conv2d(6, 16, 3)
        # an affine operation: y = Wx + b
        self.fc1 = nn.Linear(16 * 6 * 6, 120) # 6*6 from image dimension
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)
    def forward(self, x):
        # Max pooling over a (2, 2) window
        x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))
        # If the size is a square you can only specify a single number
        x = F.max_pool2d(F.relu(self.conv2(x)), 2)
        x = x.view(-1, self.num_flat_features(x))
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x
    def num_flat_features(self, x):
        size = x.size()[1:] # all dimensions except the batch dimension
        num_features = 1
        for s in size:
            num_features *= s
        return num_features


 

Warren Wang   2019-12-05 11:18



   2个回答 
3

是的,多元分类是需要softmax激活函数的。

但是,pytorch中的CrossEntropyLoss已经包含了softmax这个过程了,所以在pytorch中不需要softmax,直接用linear的结果就可以了。可以看下官方文档https://pytorch.org/docs/stable/nn.html#crossentropyloss


SofaSofa数据科学社区DS面试题库 DS面经

sasa   2019-12-05 15:47

0

謝謝,又學了一樣

SofaSofa数据科学社区DS面试题库 DS面经

Warren Wang   2019-12-05 22:26



  相关讨论

pytorch里view(-1, 1)什么意思?

pytorch里ConvTranspose2d是什么意思?

pytorch里的new_ones有什么用?

什么叫成本函数?它的作用是什么?

深入了解神经网络

BP神经网络的疑问

为什么神经网络模型需要大量的样本?

反向传播(BP)神经网络和前馈神经网络是一回事吗

Feed-Forward Network(FFN)是什么网络结构?

为什么最大值池化比均值池化好(更常用)?

  随便看看

用户人群分层分析的RFM模型是什么?

numpy.array转换为图片并显示出来

pandas.DataFrame的index重新排列(从0开始)

单一变量下的异常检测该怎么做?

pip install opencv-python失败,难道非要编译安装?