详解Python使用tensorflow入门指南


Posted in Python onFebruary 09, 2018

TensorFlow是Google公司2015年11月开源的第二代深度学习框架,是第一代框架DistBelief的改进版本.

TensorFlow支持python和c/c++语言, 可以在cpu或gpu上进行运算, 支持使用virtualenv或docker打包发布.

定义变量

为了使用tensorflow,首先我们需要导入它

import tensorflow as tf

对于符号变量,我们新建一个

x = tf.placeholder(tf.float32, [None, 784])

这里x并不是一个特定的值,只是一个占位符,后面我们需要用tensorflow进行计算式,我们会把它作为输入

在模型中,我们需要weights权重和biases偏置,这里就用Variable来处理定义,Variable可以在整个计算过程中modified

w = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

在新建Variable的同时,我们也初始化了它,然后

y = tf.nn.softmax(tf.matmul(x, w) + b)

这样我们就成功的实现了我们的模型

训练

我们用cross-entropy作为我们的cost function

H_{y'}(y) = -\sum_i y'_i \log(y_i)

y就是我们预测的概率分布,y'是真实的概率分布

为了实现交叉熵,我们需要一个新的占位符来作为正确答案的输入

y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = -tf.reducen_sum(y_ * tf.log(y))

通过梯度下降来实现优化模型

train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)

我们使用这个模型之前,最后一件我们需要做的事是

init = tf.initialize_all_variables()
with tf.Session() as sess:
  sess.run(init)

现在,我能可以训练1000次这个模型了,☺️

for i in xrange(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict = {x: batch_xs, y_: batch_ys})

使用随机数据的小batch就称为随机训练

模型评分

首先,我们对比真实的y_和模型所得y之间正确的个数有多少

correct_prediction = tf.equal(tf.argmax(y, 1), tf.agrmax(y_, 1))

这个会返回一个boolean列表,比如[True, False, True, True]

accuracy = tf.reduce_mean(tf.cast(correc_prediction, tf.float32))
print (sess.run(accuracy, feed_dict = {x: mnist.test.images, y_: minst.test.labels}))

最后就通过以上计算得到准确率

开始使用

TensorFlow并不是一个纯粹的神经网络框架, 而是使用数据流图进行数值分析的框架.

TensorFlow使用有向图(graph)表示一个计算任务.图的节点称为ops(operations)表示对数据的处理,图的边flow 描述数据的流向.

该框架计算过程就是处理tensor组成的流. 这也是TensorFlow名称的来源.

TensorFlow使用tensor表示数据. tensor意为张量即高维数组,在python中使用numpy.ndarray表示.

TensorFlow使用Session执行图, 使用Variable维护状态.tf.constant是只能输出的ops, 常用作数据源.

下面我们构建一个只有两个constant做输入, 然后进行矩阵乘的简单图:

from tensorflow import Session, device, constant, matmul

'''构建一个只有两个constant做输入, 然后进行矩阵乘的简单图:'''

#如果不使用with session()语句, 需要手动执行session.close().
#with device设备指定了执行计算的设备:
#  "/cpu:0": 机器的 CPU.
#  "/gpu:0": 机器的第一个 GPU, 如果有的话.
#  "/gpu:1": 机器的第二个 GPU, 以此类推.

with Session() as session: # 创建执行图的上下文
  with device('/cpu:0'): # 指定运算设备
    mat1 = constant([[3, 3]]) # 创建源节点
    mat2 = constant([[2], [2]])
    product = matmul(mat1, mat2) # 指定节点的前置节点, 创建图
    result = session.run(product) # 执行计算
    print(result)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python输出一个杨辉三角的例子
Jun 13 Python
Python实现检测服务器是否可以ping通的2种方法
Jan 01 Python
Python中装饰器的一个妙用
Feb 08 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
Mar 30 Python
Python中用于计算对数的log()方法
May 15 Python
python中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
AI人工智能 Python实现人机对话
Nov 13 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
python进行TCP端口扫描的实现
Dec 21 Python
Python如何对XML 解析
Jun 28 Python
python 爬取京东指定商品评论并进行情感分析
May 27 Python
你需要掌握的20个Python常用技巧
Feb 28 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 #Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 #Python
Python+PIL实现支付宝AR红包
Feb 09 #Python
Python 实现12306登录功能实例代码
Feb 09 #Python
Python多层装饰器用法实例分析
Feb 09 #Python
理论讲解python多进程并发编程
Feb 09 #Python
Python装饰器(decorator)定义与用法详解
Feb 09 #Python
You might like
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
Python中关键字is与==的区别简述
2014/07/31 Python
Python功能键的读取方法
2015/05/28 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
python实现代码审查自动回复消息
2021/02/01 Python
Java的基础面试题附答案
2016/01/10 面试题
新媒传信软件测试面试题
2013/02/24 面试题
2014年党员创先争优承诺书
2014/05/29 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS