记录深度学习(八)----从0实现深度神经网络的正向传播

从0实现深度神经网络的正向传播


我们在前面几节已经学完了一个普通深度神经网络全部的基本元素——用来构筑神经网络的结构的层与
激活函数,输入神经网络的数据(特征、权重、截距),并且我们了解从左向右的过程是神经网络的正
向传播(也叫做前向传播,或者向前传播)。还记得我们的架构图吗?在过去的课程中我们所学习的内
容都是在torch.nn这个模块下,现在我们就使用封装好的torch.nn模块来实现一个完整、多层的神经网
络的正向传播。
假设我们有500条数据,20个特征,标签为3分类。我们现在要实现一个三层神经网络,这个神经网络的架构如下第一层有13个神经元,第二层有8个神经元,第三层是输出层。其中,第一层的激活函数是relu,第二层是sigmoid我们要如何实现它呢?来看代码:

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

#继承nn.Modules类来定义神经网路的架构
class Model(nn.Module):
    #init:定义类本身,__init__函数是在类被实例化的瞬间就会执行的函数
    def __init__(self,in_features=10,out_features=2):
        super(Model,self).__init__() #super(请查找这个类的父类,请使用找到的父类替换现在的类)
        self.linear1 = nn.Linear(in_features,13,bias=True) #输入层不用写,这里是隐藏层的第一层
        self.linear2 = nn.Linear(13,8,bias=True)
        self.output = nn.Linear(8,out_features,bias=True)
    
    #__init__之外的函数,是在__init__被执行完毕后,就可以被调用的函数
    def forward(self, x):
        z1 = self.linear1(x)
        sigma1 = torch.relu(z1)
        z2 = self.linear2(sigma1)
        sigma2 = torch.sigmoid(z2)
        z3 = self.output(sigma2)
        sigma3 = F.softmax(z3,dim=1)
        return sigma3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值