【tensorflow:Google】三、tensorflow入门

【一】计算图模型

节点是计算,边是数据流,

a = tf.constant( [1., 2.] )定义的是节点,节点有属性 a.graph

取得默认计算图  g1 = tf.get_default_graph()

初始化计算图   g1 = tf.Graph()

设置default图   g1.as_default()

定义变量:    tf.get_variable(‘v‘)

读取变量也是上述函数

对图指定设备  g.device(‘/gpu:0‘)

可以定义集合来管理计算图中的资源,

加入集合  tf.add_to_collection

获取集合  tf.get_collection

自动管理一些集合

【二】数据模型——张量

所有的数据都用张量表示,n阶张量是n维数据,0维为标量(scalar)

张量中不保存数字,而是计算过程!得到的是对结果的一个引用。(如果还没run,那么一定是没结果的)

主要有三个属性:

1、名字

2、维度

3、数据类型

命名:节点的名称 + 是节点的第几个输出。节点本身没有这个数据类型,只有张量这个数据类型。

张量的使用

1、记录中间计算结果,提高代码可读性

2、计算图构造完成之后,获得计算结果(需要通过Session) tf.Session().run(result)

【三】运行模型——会话 Session

sess = tf.Session()

两种等价的表达:

  sess.run(result)

  result.eval(session = sess)

sess.close()

默认会话机制:

sess = tf.InteractiveSession()

之后.eval()不需要指定session参数

在生成session的过程中也可以使用config来管理,

config = tf.ConfigProto(并行的线程数,GPU分配策略,运算超时时间,)

allow_soft_placement的意思是不支持GPU的时候使用CPU。

log_device_placement是记录每个节点被安排在哪个设备上,方便测试。

【四】利用tensorflow实现神经网络

前向传播算法简介:就是一步一步传过来。。。完全没说参数是怎么训练的。。。

tf.Variable生成变量

tf.random_xxx是随机数生成函数

tf.matmul()矩阵乘法

前向传播过程:

1、定义变量、常量、矩阵乘法

2、初始化变量:  sess.run(w1.initializer)

  另外的方案:使用 init_op = tf.initialize_all_variables()      sess.run(init_op)来实现。

3、运行:  sess.run(y)

变量是张量的一个特殊形式,一般有 .assign和.read方法,分别实现写/读功能

变量一般分两种:

1、可训练的:神经网络权重

2、不可训练:迭代轮数

优化算法的默认优化对象是tf.GraphKeys.TRAINABLE_VARIABLES里面的变量。

变量类型不可改变,但是变量维度可以改变

改变方式为 assign的时候加入参数 validate_shape=False

训练流程:

placeholder机制:定义一个位置,需要在程序运行的时候填充数据,

计算前向传播结果的伪代码:

init 权重variable

init x placeholder

init a = tf.matmul(x, w1)

sess = Session()

init_op = init_all

sess.run(init_op)

sess.run(y, feed_dict={x: [0.1, 0.2]})

接下来定义损失函数、反向传播算法

实现一个简单的神经网络解决手写数字识别问题!

时间: 08-28

【tensorflow:Google】三、tensorflow入门的相关文章

TensorFlow和深度学习入门教程(TensorFlow and deep learning without a PhD)

前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络,并把其PPT的参考学习资料给了我们, 这是codelabs上的教程:<TensorFlow and deep learning,without a PhD> 当然登入需要翻墙,我也顺带巩固下,做个翻译,不好之处请包含指正. 当然需要安装python,教程推荐使用python3.如果是Mac,可以参考博主的另外两片博文,Mac下升级python2.7到python3.6, Mac安装tensorflow1.0 好多专业词

【tensorflow:Google】四、深层神经网络

一.深度学习与深层神经网络 1.线性模型局限性 线性模型无论多少层,表达能力是一致的.可以通过激活函数实现非线性. 2.多层网络可以解决异或运算 二.损失函数定义 1.经典损失函数: 分类问题: 二分类:取0.5作为阈值 多分类:设置n个输出节点,每个对应该类的可能性.神经网络输出向量 ->概率分布:softmax. 两个向量的距离:交叉熵 - sigma  p_x log(q_x),其中p代表y,q代表yHat softmax: 最后加一层 y' = normed(e^y) reduce_me

python 三分钟入门

1.Python环境配置(2.7版本): Python官网:https://www.python.org/ Pycharm官网 http://www.jetbrains.com/pycharm/download 注:个人学习下载安装community版本就足够啦~ 下载好之后安装(要记得将Python加入环境变量噢~) 2.Python文件类型: Python解释器执行Python代码时候,经历如下几个阶段: 1) 加载代码文件 2)翻译成AST(语法分析所获得的中间结果) 3)生成byteco

三个入门小程序

package com.judge;//1.编写程序,输入一个数判断其是偶数还是奇数 import java.util.Scanner;// 先导入Scanner包于程序public class Numjudge{ 之前public class Numjudge { public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.println("请输入一个数:"); int n

C++学习(三)入门篇——函数

C++函数分两种:有返回值的和没返回值的 1.有返回值的函数 调用函数流程 如图,sqrt(6.25)为函数调用,被调用的函数叫做被调用函数,包含函数调用的函数叫做调用函数. 参数是发送给函数的信息,返回值是从函数中发送回去的值. 在使用函数之前,C++编译器必须知道函数的参数类型和返回值类型.如果缺少,编译器将不知道如何解释返回值. C++程序应为程序中使用的每个函数提供原型 sqrt()的函数原型: double sqrt(double); 如果省略分号,那么这行代码将被解释为一个函数头,并

netty权威指南 ---------第三章 入门应用

要实现的功能: client端发送请求,server端接受请求,返回当前时间,client端将当前时间打印出来. A :server端服务器 package com.xiaobing.netty.third; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.cha

TensorFlow【机器学习】:如何正确的掌握Google深度学习框架TensorFlow(第二代分布式机器学习系统)?

本文标签:   机器学习 TensorFlow Google深度学习框架 分布式机器学习 唐源 VGG REST   服务器 自 2015 年底开源到如今更快.更灵活.更方便的 1.0 版本正式发布,由 Google 推出的第二代分布式机器学习系统 TensorFlow一直在为我们带来惊喜,一方面是技术层面持续的迭代演进,从分布式版本.服务框架 TensorFlow Serving.上层封装 TF.Learn 到 Windows 支持.JIT 编译器 XLA.动态计算图框架 Fold 等,以及

TensorFlowSharp入门使用C#编写TensorFlow人工智能应用

TensorFlowSharp入门使用C#编写TensorFlow人工智能应用学习. TensorFlow简单介绍 TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow的表现比第一代的DistBelief快了2倍. TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用TensorFlow.任何基于梯度的机器学习算法都能够受益于TensorFlow的自动分化(auto-differentiation).通过灵活

【深度解析】Google第二代深度学习引擎TensorFlow开源

作者:王嘉俊 王婉婷 TensorFlow 是 Google 第二代深度学习系统,今天宣布完全开源.TensorFlow 是一种编写机器学习算法的界面,也可以编译执行机器学习算法的代码.使用 TensorFlow 编写的运算可以几乎不用更改,就能被运行在多种异质系统上,从移动设备(例如手机和平板)到拥有几百台的机器和几千个 GPU 之类运算设备的大规模分布式系统. TensorFlow 降低了深度学习的使用门槛,让从业人员能够更简单和方便地开发新产品.作为Google 发布的“平台级产品”,很多