详解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实现批量检测HTTP服务的状态
Oct 27 Python
利用python微信库itchat实现微信自动回复功能
May 18 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
pandas 对series和dataframe进行排序的实例
Jun 09 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
Python3 requests模块如何模仿浏览器及代理
Jun 15 Python
python实现数字炸弹游戏
Jul 17 Python
python正则表达式 匹配反斜杠的操作方法
Aug 07 Python
Python进阶学习之带你探寻Python类的鼻祖-元类
May 08 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
重置版游戏视频
2020/04/09 魔兽争霸
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
php获取参数的几种方法总结
2014/02/18 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
php中 $$str 中 "$$" 的详解
2015/07/06 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
用实例解释Python中的继承和多态的概念
2015/04/27 Python
详解Python如何生成词云的方法
2018/06/01 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
Python之Class&Object用法详解
2019/12/25 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
公证委托书大全
2014/04/04 职场文书
行政监察建议书
2014/05/19 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
Python中rapidjson参数校验实现
2021/07/25 Python
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL