详解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之开始真正编程
Sep 12 Python
使用PDB简单调试Python程序简明指南
Apr 25 Python
八大排序算法的Python实现
Jan 28 Python
Python中super()函数简介及用法分享
Jul 11 Python
python daemon守护进程实现
Aug 27 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
Python求解正态分布置信区间教程
Nov 20 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
Eclipse配置python默认头过程图解
Apr 26 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
浅谈Python协程asyncio
Jun 20 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中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
初学CAKEPHP 基础教程
2009/11/02 PHP
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
python ip正则式
2009/05/07 Python
Python 对象中的数据类型
2017/05/13 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Django框架多表查询实例分析
2018/07/04 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
金融管理毕业生求职信
2014/03/03 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis