详解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实现的使用telnet登陆聊天室实例
Jun 17 Python
python模拟Django框架实例
May 17 Python
详解python发送各类邮件的主要方法
Dec 22 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
Dec 24 Python
python银行系统实现源码
Oct 25 Python
Python常用模块logging——日志输出功能(示例代码)
Nov 20 Python
Keras之fit_generator与train_on_batch用法
Jun 17 Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
Jan 24 Python
matplotlib grid()设置网格线外观的实现
Feb 22 Python
Python Flask搭建yolov3目标检测系统详解流程
Nov 07 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php连接数据库代码应用分析
2011/05/29 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
PHP getName()函数讲解
2019/02/03 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
详解python3百度指数抓取实例
2016/12/12 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
python selenium循环登陆网站的实现
2019/11/04 Python
Python笔记之观察者模式
2019/11/20 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
运动会开幕式邀请函
2014/02/03 职场文书
中式结婚主持词
2014/03/14 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android
Python实现滑雪小游戏
2021/09/25 Python