详解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调用C语言开发的共享库方法实例
Mar 18 Python
python字符串连接方法分析
Apr 12 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
Python GUI编程完整示例
Apr 04 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 Python
flask开启多线程的具体方法
Aug 02 Python
Python中itertools库的四个函数介绍
Apr 06 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
PHP中常用的转义函数
2014/02/28 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
JS request函数 用来获取url参数
2010/05/17 Javascript
jquery 笔记 事件
2011/11/02 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
python SVM 线性分类模型的实现
2019/07/19 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
人事主管岗位职责
2014/01/30 职场文书
班级活动总结格式
2014/08/30 职场文书
大学生自荐书范文
2015/03/05 职场文书
会议通知格式范文
2015/04/15 职场文书
宾馆卫生管理制度
2015/08/06 职场文书