详解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 相关文章推荐
简单的通用表达式求10乘阶示例
Mar 03 Python
Python实现破解12306图片验证码的方法分析
Dec 29 Python
详解Python logging调用Logger.info方法的处理过程
Feb 12 Python
详解Python用户登录接口的方法
Apr 17 Python
解决yum对python依赖版本问题
Jul 05 Python
Django框架HttpRequest对象用法实例分析
Nov 01 Python
python中for循环变量作用域及用法详解
Nov 05 Python
pandas实现将日期转换成timestamp
Dec 07 Python
Python通过Pillow实现图片对比
Apr 29 Python
Keras 使用 Lambda层详解
Jun 10 Python
python 实时调取摄像头的示例代码
Nov 25 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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 mysql索引问题
2008/06/07 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
简化Python的Django框架代码的一些示例
2015/04/20 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
opencv python如何实现图像二值化
2020/02/03 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
python exit出错原因整理
2020/08/31 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
超市总经理岗位职责
2014/02/02 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
2014年保管员工作总结
2014/11/18 职场文书
小学生优秀评语
2014/12/29 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python