详解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 pandas dataframe 按列或者按行合并的方法
Apr 12 Python
关于python2 csv写入空白行的问题
Jun 22 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
神经网络相关之基础概念的讲解
Dec 29 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 Python
python实现随机加减法生成器
Feb 24 Python
Numpy 理解ndarray对象的示例代码
Apr 03 Python
python 画图 图例自由定义方式
Apr 17 Python
python数据类型强制转换实例详解
Jun 22 Python
Python中os模块的简单使用及重命名操作
Apr 17 Python
python3 字符串str和bytes相互转换
Mar 23 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短域名转换为实际域名函数
2011/01/17 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
js控制frameSet示例
2013/09/10 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
javascript this详细介绍
2016/09/19 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
python中的代码编码格式转换问题
2015/06/10 Python
Python 正则表达式入门(中级篇)
2016/12/07 Python
用Python设计一个经典小游戏
2017/05/15 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
自荐书模板
2013/12/15 职场文书
《王二小》教学反思
2014/02/27 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
采购员岗位职责范本
2015/04/07 职场文书
教师节简报
2015/07/20 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
python实现简单的三子棋游戏
2022/04/28 Python