【零基础】使用Tensorflow实现神经网络

一、序言

  前面已经逐步从单神经元慢慢“爬”到了神经网络并把常见的优化都逐个解析了,再往前走就是一些实际应用问题,所以在开始实际应用之前还得把“框架”翻出来,因为后面要做的工作需要我们将精力集中在业务而不是网络本身,所以使用框架可以减少非常多的工作量,有了前面自己实现神经网络的经验,现在理解框架的一些设置也比较容易了。本篇我们就使用比较常见的Tensorflow来重置一下前面的工作。

  备注一下Tensorflow的安装:

  1)安装python3.6,高版本不支持

  2)pip install tensorflow即可

二、softmax

  在开始前需要先说下这里使用的一个新的技术“softmax”,前面我们解决的问题是“从一堆图片里识别出数字是否是9”,这里使用softmax我们可以搞定更加高深一点的问题,比如:

  “识别出图片中的数字是几”

  这就厉害了,前面我们只能识别是不是,即”二分类“,这里借助softmax我们可以识别图片是数字几的概率,即”多分类“。

  从技术上来说其实变化不大,神经网络整体结构不变,但是还记得我们之前神经网络中使用的”激活函数“不?一般最后一层使用sigmoid,意思是将输出转为0-1之间的区间值,表示为”是数字9“的概率是多少。这里使用softmax替代sigmoid,此外输出也不是一个数,而是10个数,比如:

  [0.1, 0.2, 0.3, 0.7, 0.3, 0.1, 0.2, 0.3, 0.1, 0.2]

  它的含义如下:

  0的概率:10%

  1的概率:20%

  3的概率:30%

  4的概率:70%

  ...

  相应的输入的label自然也是十个数,比如:

  [0, 0, 0, 0, 1, 0, 0, 0, 0, 0]

  它表示我们输入的图片是数字”4“,此种表示方式称为"one_hot_label"。此种输入与输出形式就是"多分类"的基础,此外我们使用的mnist数据集可以直接将label数据转为one hot形式,只需要"one_hot_label=True"。

  除了输入输出形式不一样,softmax的传播函数和反向传播肯定与sigmoid不一样了,不过借助Tensorflow强大的功能这些我们都不需要操心啦。下面我们就逐步来实现一个基于Tensorflow的神经网络。

三、创建占位符placeholder

  其实这里的输入x,y代表的分别是输入图片的向量大小784和label的向量大小10。tf是tensorflow的实体,这里tf.placeholder其实就是定义了两个空的数组:

  (784, None)和(10, None)

  placeholder得到的一维向量在后面的作用是"占位",占位的意思是在tensorflow构建神经网络时先把位置占好,真正运行时就按这个占位的样子往里面扔数据,比如X是784,输入的img也不管你啥形状了,反正就按784将输入截成一段一段的。

四、初始化参数w、b

  整体上来说与前面初始化参数差不多,变化的除了使用tf来产生随机数,还将wGroup和bGroup合并为parameters(tf框架只给输入一个参数名)。

五、传播函数

  这里tf.matmul()就是实现矩阵w与IN的乘积,再通过tf.add()实现加b。但这里的"传播函数"并没有真的做传播运算,它只是按神经网络的结构将各种运算”安排“好,运算到最后一层没有使用激活函数来计算结果,而是直接返回A。剩下的运算放到了”损失函数“中。

六、损失函数

  这里的tf.transpose()只是一个转置操作,之所以不用A.T这种方式,其实可以想到,此处的A并不是一个矩阵,它是一长串计算的结果,只有当神经网络运行起来了A才会是一个矩阵。所以这里的A其实是一系列“运算”的合集,使用tf.transpose()就是叠加了一个转置运算。

  tf.reduce_mean()在这里就是计算"损失"的,不过暂时也不是真的计算了,只是将这个运算"安排"好了,最终结果返回为costFun

七、完整实现

  等等,还没有说"反向传播"呢?不要慌,这里慢慢来。

  在model中,placeholder、initialize_parameters、forward、costCAL都是前面讲过的,只是"构建"神经网络计算的过程。

  optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(costFun)

  这一句就是构建反向传播,其中AdamOptimizer表明使用Adam优化算法,minimize指明使用的损失函数,其实总结起来就是我们的反向传播需要使用Adam优化算法来使costFun构建的损失函数趋向于最小。

  _ , cost = sess.run([optimizer, costFun], feed_dict={X: train_img, Y: train_label})

  这一句就是真的运行网络了,feed_dict就是按前面"占位符"的形状将train_img和train_label输入到网络中,[optimizer, costFun]是指明网络的“向前传播+反向传播”和损失计算。

  parameters = sess.run(parameters)

  只是将优化后的参数按原样输出回来。

 八、总结

  本节只是简单将之前实现过的神经网络用Tensorflow再实现了一次,其次还引入了softmax将二分类扩展为多分类。Tensorflow是后面研究的基础,可能再开一章单独讲一讲。

  本节完整实现代码请关注公众号“零基础爱学习”回复AI14获取。

原文地址:https://www.cnblogs.com/cation/p/11791990.html

时间: 2024-10-30 20:34:57

【零基础】使用Tensorflow实现神经网络的相关文章

大数据系统学习零基础入门到精通加项目实战2017最新全套视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

(转)一文学会用 Tensorflow 搭建神经网络

一文学会用 Tensorflow 搭建神经网络 本文转自:http://www.jianshu.com/p/e112012a4b2d 字数2259 阅读3168 评论8 喜欢11 cs224d-Day 6: 快速入门 Tensorflow 本文是学习这个视频课程系列的笔记,课程链接是 youtube 上的,讲的很好,浅显易懂,入门首选, 而且在github有代码,想看视频的也可以去他的优酷里的频道找. Tensorflow 官网 神经网络是一种数学模型,是存在于计算机的神经系统,由大量的神经元相

编程零基础应当如何开始学习 Python?

提前说一下,这篇福利多多,别的不说,直接让你玩回最有手感的怀旧游戏,参数贴图很方便自己可以根据喜好修改哦. 本篇通过以下四块展开,提供大量资源对应. 选一个好版本 有没有看过<在下坂本,有何贵干?>那个坂本可以装B,Python的版本则是你的工作环境. 首先,在学习之前一定会考虑一个问题--Python版本选择对于编程零基础的人来说,选择Python3. 1.学习基础知识 首先,Python 是一个有条理的.强大的面向对象的程序设计语言.建议从下面课程开始: Python 教程 Python

(转)零基础入门深度学习(6) - 长短时记忆网络(LSTM)

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了?现在救命稻草来了,<零基础入门深度学习>系列文章旨在讲帮助爱编程的你从零基础达到入门级水平.零基础意味着你不需要太多的数学知识,只要会写程序就行了,没错,这是专门为程序员写的文章.虽然文中会有很多公式你也许看不懂,但同时也会有更多的代码,程序员的你一定能看懂的(我周围是一群狂热的Clean

北风网 零基础到数据(大数据)分析专家-首席分析师

详情请交流  QQ  709639943 00.北风网 零基础到数据(大数据)分析专家-首席分析师 00.快速上手JMeter 00.Jmeter 00.2017年Java web开发工程师成长之路 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务原理改造房产销售平台 00.Python3入门机器学习 经典算法与应用 00.老司机学python篇:第一季(基础速过.机器学习入门) 00.

作为比湖南还火的python网红,零基础要如何系统的开始学习呢?

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句. Python支持命令式程序设计.面向对象程序设计.函数式编程.面向切面编程.泛型编程多种编程范式.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收

零基础小白,如何入门计算机视觉?

计算机视觉是人工智能技术的一个重要领域,打个比方(不一定恰当),我认为计算机视觉是人工智能时代的眼睛,可见其重要程度.计算机视觉其实是一个很宏大的概念,下图是有人总结的计算机视觉所需要的技能树. 如果你是一个对计算机视觉一无所知的小白,千万不要被这棵技能树吓到.没有哪个人能够同时掌握以上所有的技能,这棵树只是让你对计算机视觉有个粗浅的认识. 先来打点鸡血,看看计算机视觉有什么用吧.下面的视频是计算机视觉在自动驾驶上的实际应用,其中涉及立体视觉.光流估计.视觉里程计.三维物体检测与识别.三维物体跟

0基础怎么学习大数据?给零基础学习者支几招

小白如何学习大数据技术?大数据怎么入门?怎么做大数据分析?数据科学需要学习那些技术?大数据的应用前景等等问题,已成为热门大数据领域热门问题,以下是对新手如何学习大数据技术问题的解答~ 大数据开发学习可以按照以下内容进行学习 第一阶段:JavaSE+MySql+Linux 学习内容:Java 语言入门 → OOP 编程 → Java 常用Api.集合 → IO/NIO → Java 实 用技术 → Mysql 数据库 → 阶段项目实战 → Linux 基础 → shell 编程 学习目标:学习ja

三分钟解读零基础如何高效学习大数据?

在我们的生活中,你用微信的时候,你用高德地图的时候,你用电脑的时候,你用某宝网购的时候......无时无刻不在制造数据,而这些数据在"有心人"的利用下,将会给我们的生活带来巨大变化.如今90%的企业都在运用或者都想要利用大数据为其带来更便利的服务,从而大数据高端软件类人才可谓供不应求. 数据分析师已成为当下中国互联网行业需求最高的六类人才职位之一.报告表明数据分析人才供给指数仅为5%,属于高度稀缺.此外,数据分析人才的跳槽速度也最快,平均跳槽速度为19.8个月.根据中国商业联合会数据分