详解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实现的解析crontab配置文件代码
Jun 30 Python
Python Deque 模块使用详解
Jul 04 Python
Python脚本实现集群检测和管理功能
Mar 06 Python
Python实现提取文章摘要的方法
Apr 21 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
Python TestCase中的断言方法介绍
May 02 Python
Django框架封装外部函数示例
May 28 Python
解决pycharm同一目录下无法import其他文件
Feb 12 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
详解Django的MVT设计模式
Apr 29 Python
Python中for后接else的语法使用
May 18 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导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
vue脚手架及vue-router基本使用
2018/04/09 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
Python 实现选择排序的算法步骤
2018/04/22 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
Python面向对象之Web静态服务器
2019/09/03 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
小学音乐教学反思
2014/02/05 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
田径运动会通讯稿
2015/07/18 职场文书
教你怎么用python selenium实现自动化测试
2021/05/27 Python
Django Paginator分页器的使用示例
2021/06/23 Python