深度学习之TensorFlow安装与初体验

学习前

搞懂一些关系和概念

首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的神经网络结构是浅度学习的模型。

浅度学习:层数少于3层,使用全连接的一般被认为是浅度神经网络,也就是浅度学习的模型,全连接的可能性过于繁多,如果层数超过三层,计算量呈现指数级增长,计算机无法计算到结果,所以产生了深度学习概念

深度学习:层数可以有很多层,但是并不是全连接的传递参数,如上图中右边是一个7层的神经网络模型,其中隐藏层就是所谓的“学习”过程,我们所说的深度也是指隐藏层的深度。图中的有一处容易使人误解,右侧深度神经网络看上去是全连接的,但实际学习过程只采用部分的神经元,并非每一个神经元都互相连接的。如果深度+全连接的话,当前计算机还做不到那么庞大的计算量,模型是不切实际的。

最后,关于人工智能的一个经典评测标准:图灵测试,概括下来,在测试者不知道对面为机器还是人的情况下,向对方发问 ,如果机器的回答超过30%被误以为是人类回答的话,那么就说机器是智能的。

什么是人工神经网络,为什么要用他?

首先神经网络使用的是仿生学,人工神经网络的初衷和目的就是使得计算机像人脑一样“思考”,那硬件和软件的开发就应该仿照人类大脑来做,生物学,计算机学大佬们就想到了给机器按上一个神经元网络,但由于人类本身还没把自己的大脑搞个明白,所以人工智能尚处于一个半吊子状态,他只有人类一部分的智商而已。就目前而言,计算机远远赶不上人类思考的能力,而人类彻底研究明白大脑的那一天就是人工智能真正超越人类的一天(可怕哟)。

区别:

  • 人类的神经网络系统:从出生那一天,神经元就已经存在了,只是连接的方式及其简单,稀疏而已,当你睁开眼睛的那一刻,你看到的爸爸,妈妈的脸,视觉系统就会触发大脑的部分神经元开始连接,这个连接简而言之就是,脸->爸妈(当然实际情况传输层次更多更复杂),以后当你再看到爸妈的脸,就会顺着这条已存在的连接传递(中间也是多层的),一下就认出了爸爸妈妈。

  • 机器的神经网络系统:同样是人脸识别来看,机器先读取人脸,然后转换为二进制文件,将数据交给输入层,输入层传输到隐藏层,这时候会选择第一层部分的神经元,进行激活,神经元会根据给定的特征做一些参数调整,每一个神经元又选择下一层的几个神经元把自己处理好的数据传给他们,以此类推,直到输出层,给出一个“答案”,使用优化函数(如梯度下降算法)对比实际值的差距,比如把爸爸认成了妈妈,产生了这种差距后神经网络就要做一个重要的事情——反向传递,这是人类神经元所不需要的工作,将误差信息原路返回,修改刚刚路过的神经元,调整一些参数(权重),然后反反复复上述所有操作,最后得到接近正确答案的模型,算是学习结束,这时候再输入其他新数值一下就能得出结果了。这就是学习的过程!

结合上面两点来看,这就是为什么人只要看见一次就能记住的脸所对应的人,而机器只要发现脸变胖了,变黑了,就需要反向传递修改一些参数,记住胖脸和黑脸也是这个人,人识别人脸只需要部分特征数据即可,机器识别人脸则需要大量的特征数据。

最后需要知道一点是:机器学习的识别能力是来自大概率事件,只能做到某张图百分之多少是谁,这是指像素点落在某个范围的概率,那就确认是他本人,故而一些噪点(干扰项)落在别的范围,由于概率小,这些神经元在识别过程中会被直接忽略——dropout

安装TensorFlow

说道深度学习框架,第一反应就是Google的TensorFlow,就是围棋大神AlphaGo的前身。

ubuntu安装

安装python3

sudo apt-get install python3-pip python3-dev python-virtualenv

构建虚拟环境

virtualenv --system-site-packages -p python3 ~/tensorflow

source ~/tensorflow/bin/activate

source过后bash环境会有所变化,前方多个括号虚拟目录名,表示在虚拟环境下运行

安装TensorFlow 1.5

pip3 install tensorflow==1.5.0

注意:就安装1.5.0版本,默认的最新版(1.6)安装后,import tensorflow会报内存溢出错误,目前没有找到解决方案。

测试:

python3

import tensorflow

如果python3的解释器不报错就是安装成功了。

第一个案例

新建一个py文件:

import tensorflow as tf
import numpy as np x = np.random.rand(100).astype(np.float32)
y = x*311.3+2.2 w = tf.Variable(tf.random_uniform([1],0.0,4.0))
b = tf.Variable(tf.zeros([1])) y_pre = w*x+b loss = tf.reduce_mean(tf.square(y_pre-y))
opt = tf.train.GradientDescentOptimizer(0.1)
train = opt.minimize(loss) init = tf.initialize_all_variables() session = tf.Session() session.run(init) for step in range(10000):
session.run(train)
if step % 100==0:
print step,session.run(w),session.run(b)

以上python代码是对TensorFlow使用的一个简单例子,实现:求一次函数系数k和偏量b。

如果是人类实现的话,则是采用待定系数法。

机器学习如下:

首先使用numpy制造一些有关系的数字,产生随机的x,然后模拟一个y=kx+b,产生一些y变量,搞出一批(x,y)集合

tf.Variable的作用是给定两个变量并给出初始值,其实就是k与b的初始值,接下来就是让TensorFlow去“猜”k与b是多少,所谓的“猜”就是一个学习过程。

y_pre = w*x+b是给出了函数的基本类型:线性函数,事实上后面学习卷积神经网络之后都不需要给出这样的基本函数类型,而是让机器自己发现。

loss = tf.reduce_mean(tf.square(y_pre-y))
opt = tf.train.GradientDescentOptimizer(0.1)
train = opt.minimize(loss)

上面三段代码非常重要,是学习优化的规则,此处使用的是梯度下降优化算法:

loss = (真实值-输出值)^2,loss越小说明梯度越小,则当前机器学习的数值越接近预期值,即我们所给出的y = x*311.3+2.2

最后是要初始化所有提供给神经网络的输入值(变量),然后获取到session,这个session是指机器学习的一个状态,通过他可以获得当前机器学习已经算出的k,b是多少了。根据k,b值来判断是否需要继续学习。当k,b已经为想要的值时可以停止学习了。session.run放在for循环中,训练循环越多则越接近预期值。

深度学习之TensorFlow安装与初体验的更多相关文章

  1. 深度学习篇——Tensorflow配置(傻瓜安装模式)

    前言 如果你是一个完美主义者,那么请绕过此文,请参考<深度学习篇——Tensorflow配置(完美主义模式)> 安装 pip install tensorflow ok,只要不报错,安装就 ...

  2. 深度学习(TensorFlow)环境搭建:(三)Ubuntu16.04+CUDA8.0+cuDNN7+Anaconda4.4+Python3.6+TensorFlow1.3

    紧接着上一篇的文章<深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动>,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把N ...

  3. .net core安装及初体验

    .net core安装及初体验 .net core 作为微软的新一代技术,在开发跨平台.微服务等方面有很大的优势,也更贴近现代的编码习惯.在2.0版发布很久以后,近期终于决定进行学习和体验. 安装 作 ...

  4. 深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动

    前几天把刚拿到了2台GPU机器组装好了,也写了篇硬件配置清单的文章——<深度学习(TensorFlow)环境搭建:(一)硬件选购和主机组装>.这两台也在安装Ubuntu 16.04和108 ...

  5. 深度学习(TensorFlow)环境搭建:(一)硬件选购和主机组装

    一.硬件采购 近年来,人工智能AI越来越多被人们所了解,尤其是AlphaGo的人机围棋大战之后,机器学习的热潮也随之高涨.最近,公司采购了几批设备,通过深度学习(TensorFlow)来研究金融行业相 ...

  6. 截图:【炼数成金】深度学习框架Tensorflow学习与应用

    创建图.启动图 Shift+Tab Tab 变量介绍: F etch Feed 简单的模型构造 :线性回归 MNIST数据集 Softmax函数 非线性回归神经网络   MINIST数据集分类器简单版 ...

  7. 一 Hive安装及初体验

    一 .Hive安装及初体验 1 .hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.1直接使用hadoop面临的问题 ...

  8. Ubuntu16.04搭建深度学习框架——TensorFlow

    TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库,说白了,就是一个库. 小编自己在Ubuntu搭建了深度学习框架TensorFlow,感觉挺简单,现 ...

  9. 金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_189 笔者投入M1的怀抱已经有一段时间了,俗话说得好,但闻新人笑,不见旧人哭,Intel mac早已被束之高阁,而M1 mac已经 ...

随机推荐

  1. LIINQ TO JS

    记录一下,方便自己查找... 自己在开发前端时,对于处理JSON,觉得真是枯燥.处理数据,基本都要循环. 所以我想着前端也能跟后端一样,有Linq来处理我的JSON对象就好了.上网一搜,找到了JSLI ...

  2. 66)vector基础总结

    基本知识: 1)vector 样子  其实就是一个动态数组: 2)vector的基本操作: 3)vector对象的默认构造 对于类  添加到  容器中  要有  拷贝构造函数---> 这个注意 ...

  3. diverta 2019 Programming Contest 2自闭记

    A 签到(a-b problem不用贴了吧,以后atcoder小于300分题均不贴代码) B 发现选择的p,q一定是其中两点间的距离,于是可以O(n2)枚举两点,再O(n2)判断,其实可以做到O(n3 ...

  4. c++语法(1)

    #include<iostream> #include<windows.h> using namespace std; class Parents { public: ; // ...

  5. python 输入输出 条件判断 循环

    1.条件判断 score = int(input("请输入学生成绩:"))if score>100 and score <0: print("请输入正确的成绩 ...

  6. mint 18中安装最新的R

    mint 中默认的R版本有点老,升级最新版方法如下: 先卸载 sudo apt-get remove r-base-core 添加mint 18 识别的源 sudo echo "deb ht ...

  7. 吴裕雄--天生自然 JAVA开发学习:重写(Override)与重载(Overload)

    class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Anim ...

  8. G. Minimum Possible LCM

    https://codeforces.com/contest/1154/problem/G #include<bits/stdc++.h> using namespace std; typ ...

  9. c++ string 的注意事项

    string 的reserve 和 resize 区别 reserve 与capacity相关,如果reserve一个比当前capacity大的 reserve 只会找到一块合适大小的内存,并将原始内 ...

  10. Rikka with Prefix Sum

    Rikka with Prefix Sum 题目 https://www.nowcoder.com/acm/contest/148/D 题目有三个操作 l到r都添加一个数 取一次前缀和 查询区间和 这 ...