Tensorflow实战学习(二十六)【多层感知机】

学习笔记TF026:多层感知机 隐含层,指除输入、输出层外,的中间层。输入、输出层对外可见。隐含层对外不可见。理论上,只要隐含层节点足够多,只有一个隐含层,神经网络可以拟合任意函数。隐含层越多,越容易拟合复杂函数。拟合复杂函数,所需隐含节点数,随隐含层数量增多指数下降。过拟合,模型预测准确率在训练集上升,在测试集下降。泛化性不好,模型记忆当前数据特征,不具备推广能力。参数太多。Hinton教授团队,Dropout。随便丢弃部分输出 阅读详情

隐含层,指除输入、输出层外,的中间层。输入、输出层对外可见。隐含层对外不可见。理论上,只要隐含层节点足够多,只有一个隐含层,神经网络可以拟合任意函数。隐含层越多,越容易拟合复杂函数。拟合复杂函数,所需隐含节点数,随隐含层数量增多指数下降。

过拟合,模型预测准确率在训练集上升,在测试集下降。泛化性不好,模型记忆当前数据特征,不具备推广能力。参数太多。Hinton教授团队,Dropout。随便丢弃部分输出数据节点。创造新随机样本,增大样本量,减少特征数量,防止过拟合。bagging方法,对特征新种采样。

SGD参数难调试,SGD设置不同学习速率,结果可能差异巨大。神经网络很多局部最优解可以达到比较好分类效果,全局最优反而容易过拟合。Adagrad、Adam、Adadelta自适应方法,减轻调试参数负担。SGD需要调试学习速率、Momentum、Nesterov参数。

梯度弥散(Gradient Vanishment)。Sigmoid函数具有限制性,输出数值在0〜1,最符合概率输出定义。非线性Sigmoid函数,信号特征空间映射,中央区信号增益大,两侧区信息增益小。中央区像神经元兴奋态,两侧区像神经元抑制态。训练时,重要特征放中央区,非重要特征放两侧区。Sigmoid比最初期线性激活函数y=x,阶梯激活函数y=-1(x<0)|y=1(x>=0)、y=0(x<0)|y=1(x>=0)好。Sigmoid函数反向传播梯度值在多层传递指级急剧减小,根据训练数据反馈更新神经网络参数非常缓慢,不起训练作用。

ReLU,非线性函数y=max(0,x),坐标轴上折线,当x<=0,y=0,x>0,y=x。人脑阈值响应机制,信号超过某个阈值,神经元兴奋激活状态,平时抑制状态。ReLU很好传递梯度,多层反向传播,梯度不会大幅缩小,适合很深神经网络,不需要无监督逐层初始化权重。ReLU变化,单侧抑制,相对宽阁兴奋边界,稀疏激活性。神经元同时激活1~4%,选择性响应很少部分输入信号,屏蔽大量不相关信号,更高效提取重要特征。传统Sigmoid函数接近一半神经元被激活。Softplus,单侧抑制,没有稀疏激活性。ReLU及变种(EIU,PReLU,RReLU)为最注流激活函数。输出层一般用Sigmoid函数,最接近概率输出分布。

隐含层可以解决XOR问题,用曲线划分两类样本。隐含层越多,原有特征越抽象变换。是多层神经网络(多层感知机 MLP)功能。

网络神经加上隐含层,使用Dropout、自适应学习速率Adagrad,解决梯度弥散激活函数ReLU。

载入TensorFlow,加载MNIST数据集,创建Interactive Session。

隐含层参数设置Variable初始化。in_units输入节点数,h1_units隐含层输出节点数设300(200〜1000区别不大)。W1隐含层权重初始化截断正态分布标准差0.1,b1偏置设0。模型激活函数ReLU,正态分布给参数加噪声,打破完全对称避免0梯度。偏置赋小非零值避免dead neuron(死亡神经元)。最后输出层Softmax,权重W2偏置b2初始化0。Sigmoid,0附近最敏感,梯度最大。

训练和预测,Dropout比率keep_prob(保留节点概率)不同。训练小于1。预测等于1。Dropout比率为计算图输入,定义placeholder。

定义模型结构。tf.nn.relu(tf.matmul(x,W1+b1)),实现激活函数为ReLU的hidden1隐含层,y=relu(W1x+b1)。tf.nn.dropout实现Dropout,随机置0分部节点。keep_prob参数,保留数据不置为0比例,训练应小于1,制造随机性,防止过拟合,预测等于1,用全部特征预测样本类别。输出层Softmax。

定义算法公式,神经网络forward计算。定义损失函数(交叉信息熵)和选择优化器(自适应优化器Adagrad),优化loss,学习速率0.3,使用tf.train.AdagradOptimizer 。Adadelta、Adam优化器。

训练,keep_prob计算图输入,训练时设0.75,保留75%节点,其余25%置0。越复杂越大规模神经网络,Dropout效果越显著。隐含层,需要更多训练迭代优化模型参数。3000个bacth,每个bacth100条样本,30万样本。相当全数据集5轮epoch迭代。增大循环次数,准确率略有提高。

准确率评测,加入keep_prob输入,等于1。

没有隐含层Softmax Regression,直接从图像像素推断是哪个数字,没有特征抽象过程。多层神经网络隐含层,组合高阶特征或组件,再组合成数字,实现精准匹配分类。隐含层输出高阶特征组件可以复用,每一类判别、概率输出共享。

全连接神经网络(Fully Connected Network,FCN,MLP的另一种说法)局限,很深网络,很多隐藏节点,很大迭代轮数,也难达到99%以上准确率。

    # Create the model
    from tensorflow.examples.tutorials.mnist import input_data
    import tensorflow as tf
    mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
    sess = tf.InteractiveSession()
    in_units = 784
    h1_units = 300
    W1 = tf.Variable(tf.truncated_normal([in_units, h1_units], stddev=0.1))
    b1 = tf.Variable(tf.zeros([h1_units]))
    W2 = tf.Variable(tf.zeros([h1_units, 10]))
    b2 = tf.Variable(tf.zeros([10]))
    x = tf.placeholder(tf.float32, [None, in_units])
    keep_prob = tf.placeholder(tf.float32)
    hidden1 = tf.nn.relu(tf.matmul(x, W1) + b1)
    hidden1_drop = tf.nn.dropout(hidden1, keep_prob)
    y = tf.nn.softmax(tf.matmul(hidden1_drop, W2) + b2)
    # Define loss and optimizer
    y_ = tf.placeholder(tf.float32, [None, 10])
    cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
    train_step = tf.train.AdagradOptimizer(0.3).minimize(cross_entropy)
    # Train
    tf.global_variables_initializer().run()
    for i in range(3000):
      batch_xs, batch_ys = mnist.train.next_batch(100)
      train_step.run({x: batch_xs, y_: batch_ys, keep_prob: 0.75})
    # Test trained model
    correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    print(accuracy.eval({x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))

参考资料:
《TensorFlow实战》

多层感知机+代码实现 感知机 给定输入X,权重w,偏移b,感知机输出 训练感知机 initialize w=0 and b=0 #此处的w直接取0 reprat if yi[<wi,xi>+b]≤0 then #此处表示预测错误,要使得≤0,若[<wi,xi>+b]≤0,对应如上公式,yi=-1,如此yi[<wi,xi>+b]必定不会≤0。反之同理 w<-w+yixi and b<-b+yi#对w和b进行更新 end if until all clas 阅读详情

相关推荐

多层感知机、激活函数(pointnet算法基础知识)

学习pointnet算法时引出的相关知识

hm_uin的博客 1252

《动手学深度学习》(3)多层感知机

《动手学深度学习(PyTorch版)》的学习笔记(3)

weixin_41794514的博客 2200

深度学习之多层感知器及激活函数

一、多层感知机MLP 1.1定义 人工神经网络(Artificial Neural Networks,简写维ANN):一种类似于大脑神经突触联接的结构进行信息处理的数学模型 二、MLP实现非线性分类 2.1MLP实现与门 2.2MLP实现非与门 2.3MLP实现或门 2.4MLP实现同或门 三、MLP实现多分类 四、激活函数 4.1定义 激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端 4.2阶跃函

Palpitate的博客 2921

2020-09-26

文章目录基于python的手写数字识别底层实现一、二、代码实验结果 基于python的手写数字识别底层实现 (1)加深对多层感知神经网络基本原理的理解; (2)掌握多层感知神经网络中反向传播算法数学推导和随机梯度下降法进行训练的原理; (3)熟练使用python语言,学会利用python从底层实现多层感知机; (4)分析影响多层感知机准确率的因素; (5)结合实际问题与理论相结合,为进一步学习人工智能相关课程和从事相关领域的理论研究工作奠定基础。 一、 现在我们来实际设计一个用于手写数字识别的多

by1jing的博客 450

【信息科学与工程学】【审计学】第一篇 招投标领域审计算法01

在每个关键流程节点(如文件上传、开标唱标、评标结束), 计算该环节所有电子文件的数字指纹(如SHA-256哈希值), 并将指纹和元数据(时间、操作人)上链存证。:从发票、合同中提取材料品名、规格、采购价、时间、地点。:对每个供应商, 提取其在历史投标中的行为序列特征, 如:中标率、与特定伙伴同时投标率、自身高报价次数、在伙伴中标项目中的“弃标”或“无效标”次数。:监控开标、评标现场音视频, 识别异常情绪(激烈争吵)、敏感关键词(“打点”、“关照”)、异常物品传递、私下交流等违规行为。

weixin_49199313的博客 810

动手深度学习笔记(十五)4.1. 多层感知机

动手深度学习笔记(十五)4.1. 多层感知机4. 多层感知机4.1. 多层感知机4.1.1. 隐藏层4.1.1.1. 线性模型可能会出错4.1.1.2. 在网络中加入隐藏层4.1.1.3. 从线性到非线性4.1.1.4. 通用近似定理4.1.2. 激活函数4.1.2.1. ReLU函数4.1.2.2. sigmoid函数4.1.2.3. tanh函数4.1.3. 小结4.1.4. 练习 4. 多层感知机 4.1. 多层感知机 在 3节中, 我们介绍了softmax回归( 3.4节), 然后我们从零开始实现了

juluwangriyue的博客 651

TensorFlow实战 2 多层感知机(Multi-Layer Precepton MLP)

机器学习的常见基本问题及解决办法:         1、过拟合:模型预测准确率在训练集上提高,但在测试集上反而下降。即模型泛化能力不强,只是记忆了当前数据特征,不具备推广能力;       【解决办法】通过使用dropout方法,随机丟除某一层或多层的输出节点,通过创建新的随机样本,增大样本数量,减少特征数量防止过拟合;         2、参数调试:神经网络通常不是凸优化问题,处处充满局部...

qq_37172182的博客 362

步进电机原理及梯形加速算法

步进电机重理解与梯形加速算法

weixin_39912966的博客 1320

Maxout & Network in Network

Network in Network -- 论文笔记

Marshall的专栏 1195

LAMMPS in文件详解:从零开始手把手教你配置金属分子动力学模拟

本文详细解析了LAMMPS in文件的配置方法,手把手教你完成金属分子动力学模拟的全流程。从软件环境准备、势函数选择,到使用Materials Studio构建模型、编写in文件进行能量最小化与系统弛豫,再到实施单轴拉伸生产模拟并提取应力应变数据,最后通过Python和OVITO进行结果分析与可视化,提供了完整的实战指南和常见问题排查技巧。

weixin_28475533的博客 526

AWR1642+DCA1000EVM 不使用mmWave Studio软件采集原始ADC数据 Timeout问题汇总

DCA1000 EVM Timeout问题汇总

Jesy_Hsu的博客 1474

多层感知机和神经网络的区别_从0到1,实现你的第一个多层神经网络

好书分享:机器学习入门书籍​mp.weixin.qq.com0.识别结果 如果有想亲自试一试的小伙伴,可以私信我要程序~下载Fashion-MNIST数据集出问题的朋友可以看我之前的文章三分钟解决Fashion-MNIST无法下载的问题​mp.weixin.qq.com1. 多层感知机(MLP)本节将以多层感知机为例,介绍多层神经网络的概念。1.1 隐藏层下图为一个多层感知机的神经网络图。多层感知...

weixin_39776239的博客 1355

【科研建模】Pycaret自动机器学习框架使用流程及多分类项目实战案例详解

对pycaret的使用流程进行梳理,并详细介绍了基于多分类预测的案例

lys_828的博客 780

由隐藏层节点数引起的网络准确率的不规则变化02

(0,2)-81*n*2-(1,0)(0,1) 做一个分类mnist 0,2的二分类三层网络,隐藏层节点数由3-1000共实验了59组值。固定收敛标准δ=1e-6,每组值迭代1999次,统计平均分类准确率pave和迭代次数的分布。 统计得到的表格 隐藏层节点数 迭代次数的均值 平均分类准确率 δ ...

staple 732

科研绘图系列:R语言折线图(linechart plots)

科研绘图系列:R语言折线图(linechart plots)

专注生信领域 1268

多思计组实验实验三、存储器读写实验

实验三、存储器读写实验

qq_53089329的博客 3650

三、多层感知机及模型优化

前面我们讲解了单层的神经网络,这章我们将开始探索深度神经网络。在输入层与输出层之间的层被称为隐藏层,结构图如下: 其中有4个输入,3个输出,隐藏层有5个隐藏单元。主要由以下原因:学习非线性关系:隐藏层可以通过学习非线性一般性函数来学习数据的复杂关系。如果没有隐藏层,模型将只能学习到数据的线性关系。(通常要加激活函数)增强模型健壮性: 如果没有隐藏层,模型可能过于简单,容易出现过度拟合的情况。隐藏层的存在可以帮助模型更好地适应数据,也能提高模型的健壮性。提高精度: 隐藏层可以提高模型对输入特征的提取和抽象,

zhanghongbin159的博客 2980

【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述

种工具:导弹设计工具(Missile Design Tool,MDT )、导弹飞行工具(Missile Flight Tool,截弹,或者用内置拦截弹编辑器创建的个性化的拦截弹, IFT 能够对 ―一对一 ‖动能拦截。导设置系统参数, 并对其有效性进行验证, 画性能图,保证该设计是可行的。(SAIC)公司联合开发研制,极大扩展了 STK 原有的导弹对象的功能,能够精确仿真。IFT 能够对拦截飞机、 导弹、卫星等目标进行仿真和分析。(2)推进系统参数,包括推力,比冲,秒流量,推力持续时间,喷嘴出口面积,

weixin_44184852的博客 1876

PRN(20200908):Frosting Weights for Better Continual Training

Zhu, Xiaofeng, et al. “Frosting Weights for Better Continual Training.” 2019 18th IEEE International Conference On Machine Learning And Applications (ICMLA). IEEE, 2019. 1. 问题背景 问题依旧是解决深度学习灾难性遗忘问题,详见深度学习之灾难性遗忘问题与PRN(20200816):A Hierarchical Deep Convolutio

昔风不起,唯有努力生存! 1065

【Unity实战100例】Unity循环UI界面切换卡片功能

功能包括:可以设置半径,高度,速度,元素数量用户可以根据自己的实际需求接入 制作思路:创建每个元素对应的虚拟点,通过旋转管理这些虚拟点,然后把旋转信息和位置信息同步给实际的元素

纯技术流日常开发商业开发记录总结等 7716

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

动手学深度学习——多层感知机的激活函数及代码实现

感知机 给定输入x(向量),权重w(向量),和偏移b(标量),感知机输出: 感知机不能拟合XOR函数,他只能产生线性分割面。 感知机是一个二分类的模型,是最早的AI模型之一。 感知机的求解算法等价于使用批量大小为1 的梯度下降。 多层感知机 1、学习XOR 2、单隐藏层-单分类 为什么需要非线性的激活函数? 如果不加激活函数,就是n个全连接层叠加在一起,输出还是一个最简单的线性模型。 3、激活函数 3.1 sigmoid 函数 他就是说对于x来讲,将他投影到(0,1)..

橙子的博客 2261

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【多层感知机 + 常见的激活函数】

多层感知机简单介绍以及代码实现

chenjunheaixuexi的博客 680

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

深度学习 —— 个人学习笔记4(多层感知机)

本文章为个人学习使用,版面观感若有不适请谅解,文中知识仅代表个人观点,若出现错误,欢迎各位批评指正。文中部分知识参考:B 站 —— 跟李沐学AI;

Springer的博客 562

【动手学深度学习】--03.多层感知机MLP

动手学深度学习笔记

qq_46656857的博客 468

第3章(3.8~3.10节)多层感知机实现【深度学习基础】--动手学深度学习【Tensorflow2.0版本】

项目地址:https://github.com/TrickyGo/Dive-into-DL-TensorFlow2.0 UC 伯克利李沐的《动手学深度学习》开源书一经推出便广受好评。很多开发者使用了书的内容,并采用各种各样的深度学习框架将其复现。 现在,《动手学深度学习》书又有了一个新的复现代码版本——TensorFlow2.0 版,短时间内成为了github上千star项目,欢迎关注。 文章...

土豆洋芋山药蛋的博客 2796

多层感知机(MLP)

多层感知器(MLP,Multilayer Perceptron)是一种前馈模型,其将输入的多个数据集映射到单一的输出的数据集上。,因此也叫深度感知机是单个神经元模型,是较大神经网络的前身。神经网络的强大之处在于它们能够学习训练数据中的表示,以及如何将其与想要预测的输出变量联系起来。从数学上讲,它们能够学习任何映射函数,并且已经被证明是一种通用的近似算法。神经网络的预测能力来自网络的分层或多层结构。而多层感知机是指具有至少三层节点,输入层,一些中间层和输出层的神经网络。

qq_46703208的博客 4431
上一篇: Tensorflow实战学习(二十五)【自编码器】
下一篇: Tensorflow实战学习(二十七)【卷积神经网络】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值