关于Tensorflow的基本介绍

Tensorflow是一个基于图的计算系统,其主要应用于机器学习。

从Tensorflow名字的字面意思可以拆分成两部分来理解:Tensor+flow。

  • Tensor:中文名可以称为“张量”,其本质就是任意维度的数组。一个向量就是一个1维的Tensor,一个矩阵就是2维的Tensor。
  • Flow:指的就是图计算中的数据流。

当我们想要使用Tensorflow做什么事情的时候,一般需要三个操作步骤:

  1. 创建Tensor;
  2. 添加Operations(Operations输入Tensor,然后输出另一个Tensor);
  3. 执行计算(也就是运行一个可计算的图)。

Tensorflow有个图的概念,Operations会添加到图中,作为图的节点。在添加某Operation的时候,不会立即执行该Operation。Tensorflow会等待所有Operation添加完毕,然后Tensorflow会优化该计算图,以便决定如何执行计算。

快速使用

如果想开始实验一下Tensorflow,可以通过Docker启动官方的镜像tensorflow/tensorflow

如下所示,

lienhuadeMacBook-Pro:tensorflow lienhua34$ docker run -d -p : --name tensorflow tensorflow/tensorflow
0fc7849b3ef5ac56e8ad372cc201874338c586ed5f47a4205997712efcd35646
lienhuadeMacBook-Pro:tensorflow lienhua34$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fc7849b3ef5 tensorflow/tensorflow "/run_jupyter.sh" minutes ago Up seconds /tcp, 0.0.0.0:->/tcp tensorflow

该镜像启动一个jupyter,然后我们在浏览器中输入http://localhost:8888/来访问,如下图所示,

然后点击右上角的New -> Python 2,新建的一个Python交互页面,便可以开始实验Tensorflow的功能,

简单实例:向量相加

下面我们通过两个向量相加的简单例子来看一下Tensorflow的基本用法。

[1. 1. 1. 1.] + [2. 2. 2. 2.] = [3. 3. 3. 3.]
import tensorflow as tf
with tf.Session():
input1 = tf.constant([1.0 1.0 1.0 1.0])
input2 = tf.constant([2.0 2.0 2.0 2.0])
output = tf.add(input1, input2)
result = output.eval()
print result

Tensorflow的计算必须要在一个Session的上下文中。Session会包含一个计算图,而这个图你添加的Tensors和Operations。当然,你在添加Tensor和Operation的时候,它们都不会立即进行计算,而是等到最后需要计算Session的结果的时候。当Tensorflow之后了计算图中的所有Tensor和Operation之后,其会知道如何去优化和执行图的计算。

两个tf.constant() 语句向计算图中创建了两个Tensor。调用tf.constant()的动作大致可以说为,创建两个指定维度的Tensor,以及两个constant操作符用于初始化相对应的Tensor(不会立即执行)。

tf.add()语句向计算图中添加了一个add操作,当不会立即执行,这时候add操作的结果还无法获取。此时,计算图大致如下所示, 

result = output.eval() print result

当我们最后调用output.eval()时,会触发Tensorflow执行计算图,从而获取output计算结点的结果。

Variable的使用

我们上面的例子使用的Tensor是常量(constant),而在我们实际的机器学习任务中,我们往往需要变量(variable)来记录一下可变的状态(例如神经网络节点的权重参数等)。下面我们来看一个简单的variable例子。

import tensorflow as tf
import numpy as np with tf.Session() as sess:
# Set up two variables, total and weights, that we'll change repeatedly.
total = tf.Variable(tf.zeros([1, 2]))
weights = tf.Variable(tf.random_uniform([1,2])) # Initialize the variables we defined above.
tf.initialize_all_variables().run() # This only adds the operators to the graph right now. The assignment
# and addition operations are not performed yet.
update_weights = tf.assign(weights, tf.random_uniform([1, 2], -1.0, 1.0))
update_total = tf.assign(total, tf.add(total, weights)) for _ in range(5):
# Actually run the operation graph, so randomly generate weights and then
# add them into the total. Order does matter here. We need to update
# the weights before updating the total.
sess.run(update_weights)
sess.run(update_total) print weights.eval(), total.eval()

概括了说,上面的代码就是创建了两个变量total和weights(都是1维的tensor),total所有元素初始化为0,而weights的元素则用-1到1之间的随机数进行初始化。然后在某个迭代中,使用-1到1之间的随机数来更新变量weights的元素,然后添加到变量total中。

在调用tf.Variable()的时候,只是定了变量以及变量的初始化操作(实际上并未执行)。所有变量都需要在开始执行图计算之前进行初始化。调用tf.initialize_all_variables().run()来对所有变量进行初始化。

在for循环中,

sess.run(update_weights)

触发执行更新weights变量的计算。

sess.run(update_total)

则处理了将变量total和变量weights进行相加,并将结果赋值到变量total。

Tensorflow学习笔记1:Get Started的更多相关文章

  1. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor

    简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...

  2. Tensorflow学习笔记2019.01.22

    tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...

  3. Tensorflow学习笔记2019.01.03

    tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...

  4. TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]

    I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...

  5. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

    深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...

  6. 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别

    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...

  7. tensorflow学习笔记(4)-学习率

    tensorflow学习笔记(4)-学习率 首先学习率如下图 所以在实际运用中我们会使用指数衰减的学习率 在tf中有这样一个函数 tf.train.exponential_decay(learning ...

  8. tensorflow学习笔记(3)前置数学知识

    tensorflow学习笔记(3)前置数学知识 首先是神经元的模型 接下来是激励函数 神经网络的复杂度计算 层数:隐藏层+输出层 总参数=总的w+b 下图为2层 如下图 w为3*4+4个   b为4* ...

  9. tensorflow学习笔记(2)-反向传播

    tensorflow学习笔记(2)-反向传播 反向传播是为了训练模型参数,在所有参数上使用梯度下降,让NN模型在的损失函数最小 损失函数:学过机器学习logistic回归都知道损失函数-就是预测值和真 ...

  10. tensorflow学习笔记(1)-基本语法和前向传播

    tensorflow学习笔记(1) (1)tf中的图 图中就是一个计算图,一个计算过程.                                       图中的constant是个常量 计 ...

随机推荐

  1. SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行)

    前言 前面几篇我们分析了关于SQL Server关于性能调优的一系列内容,我把它分为两个模块. 第一个模块注重基础内容的掌握,共分7篇文章完成,内容涵盖一系列基础运算算法,详细分析了如何查看执行计划. ...

  2. Linux指令备忘

    这是之前初学Linux时做下的笔记,根据现在的熟悉程度增删了一些,也是做上备份查看,希望能让有用的童鞋参考一二. //将使用到的内容输出到屏幕,仅检查语法 sh -nx scripts.sh //输出 ...

  3. oracle忘记sys/system/scott用户密码了,如何重置oracle密码?

    今天用到的oracle数据库,但是发现以前设置的密码,忘记了,怎么输入都不对,所以从网上找了一下资料,解决了,然后整理分享给大家. 一.遇到的问题: 1..忘记除SYS.SYSTEM用户之外的用户的登 ...

  4. php.ini

    [PHP];;;;;;;;;;;;;;;;;;;; About php.ini   ;;;;;;;;;;;;;;;;;;;;; PHP's initialization file, generally ...

  5. 定时器的应用---查询方式---让8个LED灯,左右各4个来回亮

    定时器的应用,查询方式.让8个LED灯,左右各4个来回亮 代码: /********************** 查询方式是主程序不断的查询是否中断,而不需要准备子程序 *************** ...

  6. Linux学习书籍推荐

    入门书: <鸟哥的私房菜(基础篇)> <鸟哥的私房菜(服务篇)> <Linux命令行与Shell脚本编程大全(第2版)> <UNIX/Linux 系统管理技术 ...

  7. 工欲善其事必先利其器——dreamweaver

    1.内置了一个webkit内核,所以实时视图与chrome浏览器效果一样. 2.DW中主浏览器的快捷键是f12,所以可以f12快速打开浏览器. 3.DW中首选项无法恢复到默认值. 4.有用首选项 5. ...

  8. [转]Hide or Remove jquery ui tab based on condition

    本文转自:http://stackoverflow.com/questions/19132970/hide-or-remove-jquery-ui-tab-based-on-condition 问: ...

  9. Unity自学路线整理(参看微信公众号Unity墙外的世界的文章 )

    目前还是个新手. 发现自己有时候还是会一脸蒙...的对着电脑屏幕不知所措,为了利用好在大学零散的时间所以整理一下学习unity的路线. 计划好才能更好的利用时间. 1. 先学好C#再去看引擎,我看的是 ...

  10. Codeforces 549C. The Game Of Parity[博弈论]

    C. The Game Of Parity time limit per test 1 second memory limit per test 256 megabytes input standar ...