TensorFlow笔记(1)- TensorFlow框架


TensorFlow笔记系列是笔者将知识和心得总结得来,内容包括理论知识、体系框架、代码实现等,全系列内容概要如下,分4-5次更新完成,敬请期待。


1. 人工智能概述
    机器学习
    TensorFlow环境配置
2. Python语言
    Linux基本指令
    列表、元组、字典
    条件语句、循环语句
    类与对象、面向对象的编程
    文件操作
3. TensorFlow框架
    张量
    计算图、会话
    前向传播
    反向传播
4. 神经网络优化算法
    损失函数
    学习率
    滑动平均
    正则化
    神经网络八股
5. 全连接网络基础
    MNIST数据
    模块化搭建神经网络八股
    手写数字识别准确率输出
6. 全连接网络实践
    输入手写数字图片输出识别结果
    制作数据集
7. 卷积网络基础
    卷积神经网络
    代码解析


第一篇:人工智能概述

一、 基本概念

 

1、什么是人工智能

人工智能的概念:机器模拟人的意识和思维

重要人物:艾伦·麦席森·图灵(Alan Mathison Turing)

人物简介:1912 年 6 月 23 日-1954 年 6 月 7 日,英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。

相关事件:(1)1950 年在论文《机器能思考吗?》中提出了图灵测试,一种用于判定机器是否具有智能的试验方法:提问者和回答者隔开,提问者通过一些装置(如键盘)向机器随意提问。多次测试,如果有超过  30%的提问者认为回答问题的是人而不是机器,那么这台机器就通过测试,具有了人工智能。也就是工智能的概念:“用机器模拟人的意识和思维”。

  1. 图灵在论文中预测:在 2000 年,会出现通过图灵测试具备人工智能的机器。然而直到 2014 年 6 月,英国雷丁大学的聊天程序才成功冒充了 13 岁男孩,通过了图灵测试。这一事件比图灵的预测晚了 14 年。
  2. 在 2015 年 11 月 science 杂志封面新闻报道,机器人已经可以依据从未见过的文字中的一个字符,写出同样风格的字符,说明机器已经具备了迅速学习陌生文字的创造能力。

消费级人工智能产品:国外(1)谷歌 Assistant

                        (2)微软 Cortana

                        (3)苹果 Siri

                        (4)亚马逊 Alexa

                    国内(1)阿里的天猫精灵

                        (2)小米的小爱同学

人工智能先锋:(1)Geoffrey Hinton:多伦多大学的教授,谷歌大脑多伦多分布负责人,是人工智能领域的鼻祖,他发表了许多让神经网络得以应用的论文, 激活了整个人工智能领域。他还培养了许多人工智能的大家。比如 LeCun 就是他的博士后。

  1. Yann LeCun:纽约大学的教授,Facebook 人工智能研究室负责人,他改进了卷积神经网路算法,使卷积神经网络具有了工程应用价值,现在卷积神经网络依旧是计算机视觉领域最有效的模型之一。
  2. Yoshua  Bengio:蒙特利尔大学的教授,现任微软公司战略顾问,他推动了循环神经网路算法的发展,使循环神经网络得到工程应用,用循环神经网络解决了自然语言处理中的问题。

2、什么是机器学习

 


机器学习的概念:机器学习是一种统计学方法,计算机利用已有数据得出某种模型,再利用此模型预测结果。

特点:随经验的增加,效果会变好。

简单模型举例:决策树模型

预测班车到达时间问题描述: 每天早上七点半,班车从 A 地发往 B 地,到达 B 地的时间如何准确预测?

如果你第一次乘坐班车,你的预测通常不太准。一周之后,你大概能预测出班车8:00 左右到达 B 地;一个月之后,随着经验的增加,你还会知道,周一常堵车, 会晚 10 分钟,下雨常堵车,会晚 20 分钟。于是你画出了如下的一张树状图,如果是周一,还下了雨,班车会 8:30 到达;如果不是周一,也没有下雨,班车会8:00 到达。

 

机器学习和传统计算机运算的区别:传统计算机是基于冯诺依曼结构,指令预先存储。运行时,CPU  从存储器里逐行读取指令,按部就班逐行执行预先安排好的指令。其特点是,输出结果确定,因为先干什么,后干什么都已经提前写在指令里了。

 

机器学习三要素:数据、算法、算力

3、什么是深度学习

深度学习的概念:深层次神经网络,源于对生物脑神经元结构的研究。

人脑神经网络:随着人的成长,脑神经网络是在渐渐变粗变壮。

生物学中的神经元:下图左侧有许多支流汇总在一起,生物学中称这些支流叫做树突。树突具有接受刺激并将冲动传入细胞体的功能,是神经元的输入。这些树突汇总于细胞核又沿着一条轴突输出。轴突的主要功能是将神经冲动由胞体传至其他神经元,是神经元的输出。人脑便是由 860 亿个这样的神经元组成,所有的思维意识,都以它为基本单元,连接成网络实现的。

计算机中的神经元模型:1943 年,心理学家 McCulloch 和数学家 Pitts 参考了生物神经元的结构,发表了抽象的神经元模型  MP。神经元模型是一个包含输入, 输出与计算功能的模型。输入可以类比为神经元的树突,输出可以类比为神经元的轴突,计算可以类比为细胞核。

 

4、人工智能 Vs 机器学习 Vs 深度学习

人工智能,就是用机器模拟人的意识和思维。

机器学习,则是实现人工智能的一种方法,是人工智能的子集。

深度学习就是深层次神经网络,是机器学习的一种实现方法,是机器学习的子集。

 

二、 神经网络的发展历史(三起两落)

第一次兴起:1958 年,人们把两层神经元首尾相接,组成单层神经网络,称做感知机。感知机成了首个可以学习的人工神经网络。引发了神经网络研究的 第一次兴起。

第一次寒冬:1969 年,这个领域的权威学者 Minsky 用数学公式证明了只有单层神经网络的感知机无法对异或逻辑进行分类,Minsky 还指出要想解决异或可分问题,需要把单层神经网络扩展到两层或者以上。然而在那个年代计算机的运算能力,是无法支撑这种运算量的。只有一层计算单元的感知机,暴露出他的天然缺陷,使得神经网络研究进入了第一个寒冬。

第二次兴起:1986 年,Hinton 等人提出了反向传播方法,有效解决了两层神经网络的算力问题。引发了神经网络研究的第二次兴起。

第二次寒冬:1995 年,支持向量机诞生。支持向量机可以免去神经网络需要调节参数的不足,还避免了神经网络中局部最优的问题。一举击败神经网络,成为当时人工智能领域的主流算法,使得神经网络进入了他的第二个冬季。

第三次兴起:2006 年,深层次神经网络出现,2012 年,卷积神经网络在图像识别领域中的惊人表现,又引发了神经网络研究的再一次兴起。

三、 机器学习的典型应用

 

1应用领域

计算机视觉、语音识别、自然语言处理

2、主流应用:

  1. 预测(对连续数据进行预测)

如,预测某小区 100 平米的房价卖多少钱。

根据以往数据(红色),拟合出一条线,让它“穿过”所有的点,并且与各个点的距离尽可能的小。

我们可以把以前的数据,输入神经网络,让他训练出一个模型,比如这张图中红色点表示了以往的数据,虚线表示了预测出的模型 Y = ax + b ,大量历史数据也就是面积 x 和房价 y 作为输入,训练出了模型的参数 a = 3.5, b = 150,则你家 100 平米的房价应该是 3.5 * 100 + 150 = 500 万。

我们发现,模型不一定全是直线,也可以是曲线;我们还发现,随着数据的增多, 模型一般会更准确。

  1. 分类(对离散数据进行分类)

如,根据肿瘤患者的年龄和肿瘤大小判断良性、恶性。红色样本为恶性,蓝色样本为良性,绿色分为哪类?

假如让计算机判断肿瘤是良性还是恶性,先要把历史数据输入到神经网络进行建模,调节模型的参数,得到一条线把良性肿瘤和恶性肿瘤分开。比如输入患者的年龄、肿瘤的大小 还有对应的良性肿瘤还是恶性肿瘤,使用神经网络训练模型调整参数,再输入新的患者年龄和肿瘤大小时,计算机会直接告诉你肿瘤是良性还是恶性。比如上图的绿色三角就属于良性肿瘤。

四、课程小结

1、机器学习,就是在任务T上,随经验E的增加,效果P随之增加。

2、机器学习的过程是通过大量数据的输入,生成一个模型,再利用这个生成的模型,实现对结果的预测。

3、庞大的神经网络是基于神经元结构的,是输入乘以权重,再求和,再过非线性函数的过程。


第二篇:linux Python

一、常用linux指令

  • Mac OS Terminal终端
  • pwd     打印当前在哪个目录
  • ls         列出当前路径下的文件和目录
  • mkdir  name   新建目录
  • cd     name     进到指定目录
  • python    运行python解释器
  • print(”hello world“)

代码验证:

userde-MacBook-Pro-5:~ haowang$ cd python_lib
userde-MacBook-Pro-5:python_lib haowang$ mkdir tensorflow
userde-MacBook-Pro-5:python_lib haowang$ cd tensorflow
userde-MacBook-Pro-5:tensorflow haowang$ python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 26 2018, 08:42:37) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello world")
hello world
>>> exit()

补充:

使用 pwd 命令打印当前在哪个目录,打印的是绝对路径。

绝对路径:是以根目录(" / ")为起点的完整路径,以你所要到的目录为终点。

相对路径:是你当前的目录(" . ")为起点的路径,以你所要到的目录为终点。

使用 cd 目录名 进到指定目录,如果指定的“目录名”是

.    表示当前目录

..    表示当前目录的上一级目录

-     表示上一次所在目录

~   表示当前用户的 home 目录(即刚 login 时所在的目录)

 

比如:

cd ..      返回上级目录cd ../.. 返回上两级目录

cd ~     进 入 用 户 主 目 录 home 目 录

 

二、常用基础语法点

1. 基本运算符

  • 运算符: + - * / %
  • 运算顺序:先乘除 再加减 括号最优先

√变量,就是一个标签,由非数字开头的字母、数字、下划线组成,它的内容可以是数值、字符串、列表、元组和字典。

√数值,就是数字。 a = 100

√字符串,就是用一对儿双引号、或单引号引起来的内容,只要被引号引起来, 就是字符串了。      b = ”Hello World”

100 是数值   Vs   ”100”是字符串。      

√转义字符: \t 表示 tab     

                    \n 表 示 换 行 

                    \ 表 示  

√%s 占位,用%后的变量替换

2. 列表

3. 元组

  • 元组() 一旦定义不能改变

如:f=(1,2,3)

4.字典

5. vim编辑器

  • vim 文件名  打开或新建文本文档
  • 在vim中 点击i 进入插入模式, 可向文本里写内容
  • ESC: q   退出 vim
  • ESC:wq  保存更改并退出vim
  • ESC: q!  不保存更改退出vim

6.条件语句

if conditions:
    task
else:
    task2

if condition1:
    task1
elif condition2:
    task2
..

elif  condition n:
    task n

7. python代码层次

Python代码是使用四个空格的缩进表示层次关系的,从缩进我们可以看出这段条件语句分了三个层次,第一个层次是黄色的block1,然后是红色的block2,最后是蓝色的block3。

8.逻辑关系

9.循环语句

10.模块

11.函数


类、对象和面向对象的编程


文件操作

一、文件写操作

二、文件读操作

猜你喜欢

转载自blog.csdn.net/hhaowang/article/details/86416664