详解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多线程实例教程
Sep 06 Python
Python3 正在毁灭 Python的原因分析
Nov 28 Python
python如何在终端里面显示一张图片
Aug 17 Python
用Python写一段用户登录的程序代码
Apr 22 Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
使用python模拟高斯分布例子
Dec 09 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
Feb 25 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
php xml实例 留言本
2009/03/20 PHP
php include加载文件两种方式效率比较
2010/08/08 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
Python中运行并行任务技巧
2015/02/26 Python
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
Python+Redis实现布隆过滤器
2019/12/08 Python
Python原始套接字编程实例解析
2020/01/29 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
python解包用法详解
2021/02/17 Python
委托证明的格式
2014/01/10 职场文书
初中优秀学生评语
2014/12/29 职场文书
2015年幼儿园安全工作总结
2015/05/12 职场文书
初中语文教学反思范文
2016/03/03 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
nginx设置资源请求目录的方式详解
2022/05/30 Servers
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android