详解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如何发布自已pip项目的方法步骤
Oct 09 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
对pytorch中的梯度更新方法详解
Aug 20 Python
python+mysql实现个人论文管理系统
Oct 25 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
详解python常用命令行选项与环境变量
Feb 20 Python
Python unittest框架操作实例解析
Apr 13 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
python 实现音频叠加的示例
Oct 29 Python
python实现发送邮件
Mar 02 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
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
总结Python中逻辑运算符的使用
2015/05/13 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
python实现日志按天分割
2019/07/22 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
手术室护士长竞聘书
2014/03/31 职场文书
《画》教学反思
2014/04/14 职场文书
健康证明
2015/06/19 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android