详解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中with语句的用法
Apr 15 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
Python 模拟购物车的实例讲解
Sep 11 Python
Python读取系统文件夹内所有文件并统计数量的方法
Oct 23 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
python调用其他文件函数或类的示例
Jul 16 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
Oct 12 Python
从pandas一个单元格的字符串中提取字符串方式
Dec 17 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
Python 如何反方向迭代一个序列
Jul 28 Python
详解anaconda安装步骤
Nov 23 Python
python 爬取华为应用市场评论
May 29 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
用缓存实现静态页面的测试
2006/12/06 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
javascript的事件描述
2006/09/08 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
详解利用jsx写vue组件的方法示例
2017/07/17 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
Python微信库:itchat的用法详解
2017/08/14 Python
Django中的Model操作表的实现
2018/07/24 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
python获取引用对象的个数方式
2019/12/20 Python
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
类的核心特性有哪些
2014/01/01 面试题
写给女朋友的道歉信
2014/01/12 职场文书
简历上的自我评价
2014/02/03 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP