Tensorflow实现MLP

  多层感知机(MLP)作为最典型的神经网络,结构简单且规则,并且在隐层设计的足够完善时,可以拟合任意连续函数。本文将利用 MLP 实现手写数字分类的任务。

结构:
  784个输入层神经元 – 200个隐层神经元 – 10个输出层神经元。其中,设置 relu为隐层的激活函数,输出层用 SoftMax 进行处理
Dropout:
  将神经网络某一层的输出节点数据随机丢弃一部分,即令这部分被随机选中的节点输出值令为0,这样做等价于创造出很多新样本,通过增大样本量,减少特征数量来防止过拟合。
学习效率:
  因为神经网络的训练通常不是一个凸优化问题,它充满了很多局部最优,因此我们通常不会采用标准的梯度下降算法,而是采用一些有更大可能跳出局部最优的算法,常用的如SGD,而SGD本身也不稳定,其结果也会在最优解附近波动,且设置不同的学习效率可能会导致我们的网络落入截然不同的局部最优之中,对于SGD,我们希望开始训练时学习率大一些,以加速收敛的过程,而后期学习率低一些,以更稳定地落入局部最优解,因此常使用Adagrad、Adam等自适应的优化方法,可以在其默认参数上取得较好的效果。

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data'''导入MNIST手写数据'''
mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)'''自定义神经层添加函数'''
def add_layer(inputs, in_size, out_size, activation_function=None):Weights = tf.Variable(tf.truncated_normal([in_size, out_size], mean=0, stddev=0.2))  # 定义权重biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)  # 定义biasWx_plus_b = tf.matmul(inputs, Weights) + biasesif activation_function is None:  # 根据激活函数的设置来处理输出项outputs = Wx_plus_belse:outputs = activation_function(Wx_plus_b)return outputs'''创建样本数据'''
x = tf.placeholder(tf.float32, [None, 784])
y = tf.placeholder(tf.float32, [None, 10])
keep_prob = tf.placeholder(tf.float32)'''构建MLP'''
l1 = add_layer(x, 784, 300, activation_function=tf.nn.relu)  # 隐层l1
l1_dropout = tf.nn.dropout(l1, keep_prob)  # 对l1进行dropout处理
prediction = add_layer(l1_dropout, 300, 10, activation_function=tf.nn.softmax)  # 输出层'''损失函数'''
loss = tf.reduce_mean(tf.reduce_sum((prediction - y) ** 2, reduction_indices=[1]))'''优化器'''
train_step = tf.train.AdagradOptimizer(0.3).minimize(loss)'''创建会话并激活部件'''
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)'''训练'''
for i in range(10001):x_batch, y_batch = mnist.train.next_batch(200)  # 每次从训练集中抽出批量为200的训练批进行训练sess.run(train_step, feed_dict={x: x_batch, y: y_batch, keep_prob: 0.75})if i % 200 == 0:print('第', i, '轮迭代后:')whether_correct = tf.equal(tf.argmax(y, 1), tf.argmax(prediction, 1))accuracy = tf.reduce_mean(tf.cast(whether_correct, tf.float32))print(sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels, keep_prob: 1.0}))

参考:数据科学学习手札36–tensorflow实现MLP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里P8架构师谈:数据库、JVM、缓存、SQL等性能调优方法和原则

编辑 性能优化基本是BAT等一线互联网公司程序员必备的技能,以下为大家完整揭晓性能完整的优化方案和方法:包含web网站调优、数据库、JVM调优、架构调优等方案。 第一:Web网站调优 1、尽可能减少HTTP请求:图片合并 (cs…

知乎招聘搜索算法实习生!邀你共建知乎搜索引擎!

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术部门介绍搜索算法团队是知乎核心算法团队之一,负责知乎搜索框背后的各项算法工作。我们团队一直非常重视新技术在搜索场景的探索和落地,包括但不限于 NLP,排序,…

并行算法 Parallel Algorithm -- 提高执行效率

文章目录1. 并行排序2. 并行查找3. 并行字符串匹配4. 并行搜索5. 总结时间复杂度是衡量算法执行效率的一种标准。但是,时间复杂度 ! 性能。即便在不降低时间复杂度的情况下,也可以通过一些优化手段,提升代码的执行效率。即便是像10%、20%这样…

论文浅尝 | 主题感知的问答生成

Citation: XingC, Wu W, Wu Y, et al. Topic aware neural response generation[C]//Thirty-FirstAAAI Conference on Artificial Intelligence. 2017.动机人机对话在 AI 和 NLP 领域是一项具有挑战性的工作。现存的对话系统包括任务导向的对话系统和非任务导向的聊天机器人。在…

集成学习(西瓜书学习)

集成学习概述一、Boosting1、Boosting2、GBDT (Gradient Boosting Decision Tree)3、XGBoost(Extreme Gradient Boosting)二、Bagging 与 Random Forest1、Bagging2、RF(Random Forest)概述 集成学习&…

爬取词库,使用jieba分词库,自定义dict.txt文件+将搜狗词库.scel文件为.txt文件

一:爬取词库,使用jieba分词库,自定义dict.txt文件 import jiebafrom urllib.request import urlopen from bs4 import BeautifulSoup# 来源于地图搜索数据,按照网民输入习惯精心筛选使用较多的词条。包含城市地名、公交、购物、餐…

.halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

尊敬的读者: 网络安全是当今数字时代的一大挑战,各种勒索病毒如.halo病毒层出不穷,对用户和企业的数据安全构成了严重威胁。本文将介绍.halo勒索病毒,以及如何恢复被其加密的数据文件,同时提供预防措施。在面对被勒索…

阿里P8架构师谈:多线程、架构、异步消息、Redis等性能优化策略

常见性能优化策略分类 1.代码 之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视。很多技术人员拿到一个性能优化的需求以后,言必称缓存、异步、JVM等。实际上,第一步就应该是分析相关的代码,找出相应的瓶颈&#xf…

周志华教授专著《集成学习:基础与算法》上市,豆瓣满分森林书破解AI实践难题...

近年来,机器学习技术的快速发展推动了语音、自然语言处理、机器视觉等多个领域获得巨大进步,也带动了人工智能相关产业的蓬勃发展。回顾机器学习最近30 年的发展历程,各种学习方法推陈出新、不断演进。但是,在此历程中&#xff0c…

Redis常用数据类型的数据结构

文章目录1. Redis 数据库介绍2. 列表(list)3. 字典(hash)4. 集合(set)5. 有序集合(sortedset)6. 数据结构持久化7. 总结1. Redis 数据库介绍 Redis 是一种键值( Key-Val…

python 异常处理相关说明

Python异常及处理方法总结: https://blog.csdn.net/polyhedronx/article/details/81589196?depth_1- .tar(是打包操作,不是压缩) 解包:tar -xvf FileName.tar 打包:tar -cvf FileName.tar DirName —————————…

论文浅尝 | 使用循环神经网络的联合事件抽取

余博涛,南京大学计算机科学与技术系,硕士研究生论文连接:http://www.aclweb.org/anthology/N16-1034发表会议:NAACL-HLT 2016摘要事件抽取(event extraction)是信息抽取中一个特别具有挑战性的问题。针对该…

阿里P8架构师谈:Web前端、应用服务器、数据库SQL等性能优化总结

web前端性能优化 Web前端指网站业务逻辑之前的部分,包括: 1.浏览器加载 2.网站视图模型 3.图片服务 4.CDN服务等 主要优化手段有优化浏览器访问,使用反向代理,CDN等。 1.浏览器访问优化 (1)减少http…

决策树(西瓜书学习)

算法是死的,思想才是活的! 1. 基本流程 决策树(decision tree):一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应于一个…

动手做个DialoGPT:生成式多轮对话模型

文 | 苏剑林编 | 兔子酱前段时间刷Arixv的时候,发现清华大学开源了一个大规模的中文闲聊语料库LCCC,从开源的文件上来看,这可能是目前开源的数量最大、质量最好的闲聊语料库了,而且还包含了部分多轮对话聊天,总的来说可…

搜索引擎背后的数据结构和算法

文章目录1. 整体系统介绍2. 搜集2.1 待爬取网页链接文件:links.bin2.2 网页判重文件:bloom_filter.bin2.3 原始网页存储文件:doc_raw.bin2.4 网页链接及其编号的对应文件:doc_id.bin3. 分析3.1 抽取网页文本信息3.2 分词并创建临时…

mysql: order by, group by ,having, select, where 执行 顺序

where:数据库中常用的是where关键字,用于在初始表中筛选查询。它是一个约束声明,用于约束数据,在返回结果集之前起作用。 group by:对select查询出来的结果集按照某个字段或者表达式进行分组,获得一组组的集合&#x…

论文浅尝 | DKN: 面向新闻推荐的深度知识感知网络

笔记整理:仲亮靓,东南大学硕士研究生,研究方向是基于知识图谱的推荐系统动机新闻文本的语言非常凝练,其中包含了很多实体和常识知识。但目前的新闻个性化推荐方法都没有利用这些外部知识,也没有使用新闻之间潜在的知识…

聊聊工业界做机器学习的里程碑

文 | 吴海波编 | YY阅读说明,本文的机器学习领域限制于互联网搜索、推荐、广告场景,仅限于个人观点。2017年,我和团队的几个核心去了趟北京,找了各大互联网公司一线实战的同学,交流各自在机器学习上的经验。这次交流让…

直通BAT JVM必考题:Minor GC、Major GC、Full GC的区别

Java面试过程,JVM属于必考题系列: 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置 直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结 直通BAT必考题系列:7种JVM垃圾收集器特点,优…