详解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时区设置方法与pytz查询时区教程
Nov 27 Python
Python中input和raw_input的一点区别
Oct 21 Python
python实现TCP服务器端与客户端的方法详解
Apr 30 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
Apr 27 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
Python socket实现多对多全双工通信的方法
Feb 13 Python
Django框架自定义session处理操作示例
May 27 Python
python else语句在循环中的运用详解
Jul 06 Python
django rest framework使用django-filter用法
Jul 15 Python
Python中Yield的基本用法
Oct 18 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采集速度探究总结(原创)
2008/04/18 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
Lab.js初次使用笔记
2015/02/28 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
vue.js实现备忘录demo
2019/06/26 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
Python 如何调试程序崩溃错误
2020/08/03 Python
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
super()与this()的区别
2016/01/17 面试题
金融专业毕业生推荐信
2013/11/26 职场文书
村官工作鉴定评语
2014/01/27 职场文书
小学英语课后反思
2014/04/26 职场文书
团日活动总结
2014/04/28 职场文书
2014年市场部工作总结
2014/11/25 职场文书
2015年调度员工作总结
2015/04/30 职场文书
食品安全责任书范本
2015/05/09 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP