详解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实现一个简单的银行转账操作
Mar 06 Python
Python的装饰器用法学习笔记
Jun 24 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Python初学时购物车程序练习实例(推荐)
Aug 08 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
python 实现PIL模块在图片画线写字
May 16 Python
Django封装交互接口代码
Jul 12 Python
python图片合成的示例
Nov 09 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/03/04 星际争霸
php关联数组快速排序的方法
2015/04/17 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
ios中视频的最后一桢问题解决
2019/05/14 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
python基本语法练习实例
2017/09/19 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
对python中的logger模块全面讲解
2018/04/28 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
Python面向对象进阶学习
2019/05/21 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
python3.7添加dlib模块的方法
2020/07/01 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
波兰家居和花园家具专家:4Home
2019/05/26 全球购物
大学毕业生通用求职信
2013/09/28 职场文书
年度考核自我鉴定
2013/11/09 职场文书
食品安全工作方案
2014/05/07 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
保管员岗位职责
2015/02/14 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python