详解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学习资料
Feb 08 Python
python入门之语句(if语句、while语句、for语句)
Jan 19 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
Jun 14 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
python基础梳理(一)(推荐)
Apr 06 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
pandas中的series数据类型详解
Jul 06 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
Softmax函数原理及Python实现过程解析
May 22 Python
用Python 爬取猫眼电影数据分析《无名之辈》
Jul 24 Python
详解Python flask的前后端交互
Mar 31 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 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后台程序与Javascript的两种交互方式
2009/10/25 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
JS实现放烟花效果
2020/03/10 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
python分割文件的常用方法
2014/11/01 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
智能旅行箱:Horizn Studios
2018/04/30 全球购物
精伦电子Java笔试题
2013/01/16 面试题
优秀学生干部个人的自我评价
2013/10/04 职场文书
婚假请假条怎么写
2014/04/10 职场文书
高一学生评语大全
2014/04/25 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL