零基础学习人工智能—Python—Pytorch学习(六)

kiba518 2024-08-28 10:01:02 阅读 82

前言

本文主要讲神经网络的上半部分。

这篇文章开始有很多公式了,这些公式都很简单,但是如果是不经常在脑海里思考公式的人,那可能需要多花点时间做一下自我训练,个人感觉,也就几天时间,就能把自己感觉给调整出来。

习惯了公式看下面内容就会轻松很多,另外如果要深入学习人工智能,熟练的认知公式也是个必须的事情。

另外,我发现我前面文章写的有歧义的地方还是挺多,虽然,已经改了一部分,但,可能还有没发现的,大家看的时候尽量多理解着看吧。

本着目的是学会使用神经网络的开发,至于数学的部分,就能过就过吧。

神经网络

先学个例子

先结合以前的知识理解一个例子,理解了这个例子,后面理解神经网络就容易多了。

<code>class NeuralNet1(nn.Module):

def __init__(self, input_size, hidden_size):

super(NeuralNet1,self).__init__()

self,linear1 = nn.Linear(input_size, hidden_size) # x的列 转成 隐藏层的列

self.relu = nn.ReLU() #使用了ReLU(Rectified Linear Unit) 作为激活函数

self.linear2 = nn.Linear(hidden_size,1) #隐藏层的列转成1列

def forward(self, x):

out = self.linear1(x)

out = self.relu(out)

out = self.linear2(out)# sigmoid at the end

y_pred = torch.sigmoid(out)

return y_pred

model=NeuralNet1(input_size=28*28,hidden_size=5)

criterion =nn.BCELoss()

结合我们之前的知识,上面代码就是定义了一个类,该类继承了Module。

然后初始化函数接受了两参数,俩参数分别是x列,和隐藏层列,然后定义三个对象linear1,linear2,relu。

然后forward就是执行,中间的转换逻辑是x列转成hidden列,hidden列转1列,这中间再加一个激活函数,我们先不管激活函数是什么,反正,代码结构,大概就是这样的逻辑。

criterion =nn.BCELosS()是定义损失函数,BCELoss 的全称是 Binary Cross Entropy Loss(二元交叉熵损失)。

ps:大家有没有注意到,自从我们开始使用model后,就再也没使用 requires_grad来开启张量计算了,这是因为model在计算的时候自己就开了【torch.tensor(0.0, requires_grad=True)】

激活函数

激活函数其实也是函数,就是把x进行一下数据转换。

我们上篇文章已经使用过了Sigmoid把数据转换成百分比了。

下面看一下最受欢迎的激活函数都有什么,如下:</



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。