0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用TensorFlow2.0框架实现BP网络

汽车电子技术 来源:神经网络研究所 作者:NNResearcher 2023-03-01 11:02 次阅读

熬过了上一篇漫长的代码,稍微解开了一丢丢疑惑,使得抽象的BP有一点具体化了,可是还是有好多细节的东西没有讲清楚,比如,为什么要用激活函数?为什么随机梯度下降没有提到?下面我们来一一解开疑惑。

首先是为什么要使用激活函数?这要回顾一下我们在学习BP之前学习的感知器模型。它模仿的是人类体内的信号传导的过程,当信号达到一定的阈值时,就可以继续向后传播。

图片

那这个感知器模型和BP网络有什么关系呢?在我们所看到的BP网络的结构图中,其实是被简化了的,下面小编画了一个逻辑更清晰一点的图:

图片

这样我们就可以看出来,其实BP网络是由一个一个的感知器组成,也就构成了一个真正的神经网络,自然就能理解为什么要使用激活函数了。

图片

接下来我们来看一下TensorFlow实现BP神经网络到底有多简单!

#构建一个结构为[10,15,1]的BP神经网络
model = tf.keras.Sequential([tf.keras.layers.Dense(15,activation='relu',input_shape=(10,)),
                             tf.keras.layers.Dense(1)])
model.summary()  #显示网络结构
model.compile(optimizer='SGD',loss='mse')  #定义优化方法为随机梯度下降,损失函数为mse
#x->训练集,y——>bia标签,epochs=10000训练的次数,validation_data=(test_x,test_y)——>验证集
history = model.fit(x,y,epochs=10000,validation_data=(test_x,test_y))

上面就是一个最简单的BP网络的网络结构,小编还准备好了完整的通用框架代码,不用总是修改隐藏层,可以直接使用哦!公众号发送“BP源码”就可以获取!是不是非常惊讶!昨天的百行代码完全消失了,这短短几行代码就可实现一个BP网络。

这里解释一下validation_data,这是验证集,作用和测试集是一样的,只不过验证集是在训练过程中对模型进行测试,这样方便观察模型的准确性。loss函数的作用是计算模型的预测误差,也就是是衡量模型的准确度,常用的误差函数还有mse,mae,rmse,mape等等,模型中有很多误差函数不能直接调用,但是可以自己定义。

   SGD就是我们所说的随机梯度下降算法了,但是现在我们普遍认为“adam”是目前最好的优化算法,当然这也根据不同的神经网络做不同的选择。想要研究理论的读者可以去查一查资料,小编作为实战派就不对理论做过多的阐述了!

另外再列出来同样强大的pytorch框架的代码,大家可以自行选取。

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Sequential(
            nn.Linear(10, 15),
            nn.ReLU(),
            nn.Dropout(),  #防止过度拟合,TensorFlow也有
            nn.Linear(15, 2)
        )
    def forward(self, x):
        x = self.fc(x)
        return x

关于选择哪一个框架的问题,在TensorFlow2.0出现之前,小编会推荐pytorch,现在的TensorFlow2.0和pytorch代码风格已经越来越接近了,但是TensorFlow2.0可以支持的平台更多,所以这里推荐TensorFlow2.0。

有什么问题,欢迎大家留言讨论!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 信号
    +关注

    关注

    11

    文章

    2772

    浏览量

    76533
  • 阈值
    +关注

    关注

    0

    文章

    122

    浏览量

    18457
  • 函数
    +关注

    关注

    3

    文章

    4276

    浏览量

    62317
  • BP网络
    +关注

    关注

    0

    文章

    27

    浏览量

    22009
  • tensorflow
    +关注

    关注

    13

    文章

    328

    浏览量

    60463
收藏 人收藏

    评论

    相关推荐

    求利用LABVIEW 实现bp神经网络的程序

    谁有利用LABVIEW 实现bp神经网络的程序啊(我的版本是8.6的 )
    发表于 11-26 14:54

    labview BP神经网络实现

    请问:我在用labview做BP神经网络实现故障诊断,在NI官网找到了机器学习工具包(MLT),但是里面没有关于这部分VI的帮助文档,对于”BP神经
    发表于 02-22 16:08

    深度学习框架TensorFlow&TensorFlow-GPU详解

    TensorFlow&TensorFlow-GPU:深度学习框架TensorFlow&TensorFlow-GPU的简介、安装、使用方法详细
    发表于 12-25 17:21

    高阶API构建模型和数据集使用

    TensorFlow2.0Beta版本,同pytorch一样支持动态执行(TensorFlow2.0默认eager模式,无需启动会话执行计算图),同时删除了杂乱低阶API,使用高阶API简单地构建复杂神经网络模型,本文主要分享
    发表于 11-04 07:49

    TensorFlow的特点和基本的操作方式

    2015年11月在GitHub上开源,在2016年4月补充了分布式版本,最新版本为1.10,2018年下半年将发布Tensorflow 2.0预览版。Tensorflow目前仍处于快速开发迭代中,不断推出新功能和优化性能,现已成
    发表于 11-23 09:56

    TensorFlow实战之深度学习框架的对比

    Google近日发布了TensorFlow 1.0候选版,这第一个稳定版将是深度学习框架发展中的里程碑的一步。自TensorFlow于2015年底正式开源,距今已有一年多,这期间TensorF
    发表于 11-16 11:52 4545次阅读
    <b class='flag-5'>TensorFlow</b>实战之深度学习<b class='flag-5'>框架</b>的对比

    TensorFlow框架结构解析

    TensorFlow是谷歌的第二代开源的人工智能学习系统,是用来实现神经网络的内置框架学习软件库。目前,TensorFlow机器学习已经成为
    发表于 04-04 14:39 7090次阅读
    <b class='flag-5'>TensorFlow</b>的<b class='flag-5'>框架</b>结构解析

    TensorFlow2.0 版本将来临

    TensorFlow 2.0 的一部分,我们将停止分发 tf.contrib。我们将在未来几个月与 contrib 模块的所有者合作制定详细的迁移计划,包括如何在我们的社区页面和文档中宣传您的 TensorFlow 扩展。
    的头像 发表于 08-15 09:01 5466次阅读

    机器学习框架Tensorflow 2.0的这些新设计你了解多少

    总是无法被撼动。而就在即将到来的2019年,Tensorflow 2.0将正式入场,给暗流涌动的框架之争再燃一把火。
    的头像 发表于 11-17 11:33 3129次阅读

    TensorFlow2.0终于问世,Alpha版可以抢先体验

    之前开发者反馈,希望TensorFlow能够简化API、减少冗余并改进文档和示例。这次2.0发布,听取了开发者的建议,因此新版本有以下三大特点:简单、强大、可拓展。
    的头像 发表于 03-08 09:30 3604次阅读
    <b class='flag-5'>TensorFlow2.0</b>终于问世,Alpha版可以抢先体验

    基于TensorFlow框架搭建卷积神经网络的电池片缺陷识别研究

    基于TensorFlow框架搭建卷积神经网络对电池片电致发光图像进行缺陷识别。选取公开的数据集,其中包含了电池片的不同种类缺陷。
    的头像 发表于 08-28 18:46 7714次阅读
    基于<b class='flag-5'>TensorFlow</b><b class='flag-5'>框架</b>搭建卷积神经<b class='flag-5'>网络</b>的电池片缺陷识别研究

    IJCAI 2019上的一个TensorFlow2.0实操教程,117页PPT干货分享

    如果您有兴趣开始学习TensorFlow,或者学习新发布的2.0版本,那么本教程非常适合您。前提是您需要事先熟悉一些基本的机器学习知识。我们将介绍深度学习中的关键概念。我们的目标是帮助您高效地开始使用TensorFlow,这样您
    的头像 发表于 09-01 07:49 3346次阅读

    tensorflow能做什么_tensorflow2.0和1.0区别

    等多项机器学习和深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、 大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以
    的头像 发表于 12-04 14:45 7974次阅读

    神经网络原理简述—卷积Op求导

    目前主流的CNN训练框架,如pytorch、mxnet、tensorflow2.0中都已经集成了autograd的机制,自动求导的机制相较于传统训练框架如caffe、te...
    发表于 02-07 11:29 0次下载
    神经<b class='flag-5'>网络</b>原理简述—卷积Op求导

    深度学习框架tensorflow介绍

    深度学习框架tensorflow介绍 深度学习框架TensorFlow简介 深度学习框架TensorFl
    的头像 发表于 08-17 16:11 2401次阅读