TensorFlow学习笔记【一】 基本使用
2018-03-05 21:31
477 查看
TensorFlow学习笔记【一】 基本使用
〇、随便写的话
看到山崩地裂和天花乱坠,每天得道,每天可以没有明天。——冯唐
这是我写在新年开始的箴言,2017待我不薄,寄希望2018这关键的一年自己也能把握住。
毕竟“除了自渡与渡人,其他毫无所有,毫无所谓。”
虽然自认为做了一些事情,但是没有一件是坚持下来,要不就总在一些细枝末节的事情上纠结,要不就是单纯的懒,直到现在,越大,越怕。
2018到现在已经过去两个月了,而后面我只想……留下点痕迹吧。
话说我现在的体重估计能咋出个大坑,不只是痕迹…该减减了……
一、TensorFlow 学习准备
在 Windows 10 系统下,IDE 是 PyCharm Community Edition 2017.2.4,
使用 python (3.5.4) 语言,
学习 TensorFlow (1.2.1).
主要我也不觉得搭个虚拟机,就会比在 windows 上直接操练更好,所以就先保持现状学起来吧,入个门在考虑环境的问题。
那么,第一个问题,
什么是 TensorFlow?TensorFlow中文社区
TensorFlow 是一个编程系统,用图来表示计算任务,在Session(会话)中执行,计算过程使用的数据用tensor来表示,并通过variable(变量)来维护状态;
所以,TensorFlow的计算过程就是:在 Session 中执行描述计算过程的 图 ,Session 将 图 中的 op(operetion,节点)分发到运算设备(CPU、GPU)上执行,产生 tensor 并返回。
除此之外,TensorFlow 还有 feed 和 fetch 两大机制,分别用来为操作赋值或从操作用获取数据。
通俗讲,TensorFlow 是一个通过数据流图(Data flow graphs)进行数值计算的软件库。
来自中文社区
二、TensorFlow 基本使用
使用 TensorFlow 的程序一般组织为两部分,构建阶段和执行阶段。- 构建阶段
创建一个图来表示和训练神经网络(此阶段在 Python 中较 C/C++ 更容易);
- 执行阶段
反复执行图中的训练 op;
熟悉 TensorFlow 的基本操作 Python 程序如下:
1. 矩阵相乘
import tensorflow as tf # 创建一个常量 op, 产生一个 1*2 的矩阵, 这个 op 作为一个节点, # 加入到默认图中. # # 构造器的返回值代表该常量 op 的返回值. matrix1 = tf.constant([[3., 3.]]) # 创建另外一个常量 op, 产生一个 2*1 的矩阵. matrix2 = tf.constant([[2.], [2.]]) # 创建一个矩阵乘法 matmul op, 把 matrix1 和 matrix2 作为输入, # 返回值 product 作为矩阵乘法的结果. product = tf.matmul(matrix1, matrix2) print(product) # ==> Tensor("MatMul:0", shape=(1, 1), dtype=float32) # 启动默认图 无任何创建参数 sess = tf.Session() # 调用 sess 的 run() 方法来执行矩阵乘法 op, 传入 'product' 作为参数, # 上面提到, 'product' 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回 # 矩阵乘法 op 的输出. # # 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入. op 通常是并发执行的. # # 函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行. # # 返回值 'result' 是一个 numpy 'ndarray' 对象. result = sess.run(product) print(result) # ==> [[ 12.]] sess.close() # 也可以使用 with 代码块自动完成关闭动作, 如 test02
2. 矩阵相乘(with代码块)
Python中 with 语句是与异常处理相关的功能语句。适用于对资源进行访问的场合,确保在使用后执行必要的清理操作。语法格式:
with context_expression [as target(s)]: with-body
import tensorflow as tf matrix1 = tf.constant([[3., 3.]]) matrix2 = tf.constant([[2.], [2.]]) product = tf.matmul(matrix1, matrix2) print(product) # ==> Tensor("MatMul:0", shape=(1, 1), dtype=float32) with tf.Session() as sess: result = sess.run([product]) print(result) # ==> [[ 12.]] # 也可以显式调用 close() 关闭以释放资源
3. 变量计数器
import tensorflow as tf # 创建一个变量, 初始化为标量 0. state = tf.Variable(0, name="counter") # 创建一个 op, 其作用是使 state 增加 1 one = tf.constant(1) new_value = tf.add(state, one) update = tf.assign(state, new_value) # 图所描绘的赋值 # 启动图后, 变量必须先经过`初始化` (init) op 初始化, # 首先必须增加一个`初始化` op 到图中. init_op = tf.global_variables_initializer() # 启动图, 运行 op with tf.Session() as sess: # 运行 'init' op sess.run(init_op) # 打印 'state' 的初始值 print(sess.run(state)) # 运行 op, 更新 'state', 并打印 'state' for _ in range(3): sess.run(update) print(sess.run(state)) # 输出: # 0 # 1 # 2 # 3
4. fetch 机制
向 run() 方法传入多个 tensor,以取回多个结果。import tensorflow as tf input1 = tf.constant(3.0) input2 = tf.constant(5.0) input3 = tf.constant(2.0) intermed = tf.add(input2, input3) mul = tf.multiply(input1, intermed) # 这里没有 tensorflow.mul(), 但是文档里有啊? with tf.Session() as sess: result = sess.run([mul, intermed]) print(result) # ==> [21.0, 7.0]
5. feed机制
import tensorflow as tf # 使用 tf.placeholder() 方法创建占位符,将其指定为 'feed' 操作. input1 = tf.placeholder(tf.float32) input2 = tf.placeholder(tf.float32) output = tf.multiply(input1, input2) with tf.Session() as sess: print(sess.run([output], feed_dict={input1:[7.], input2:[2.]})) # ==> [array([ 14.], dtype=float32)] print(sess.run(output, feed_dict={input1: [7.], input2: [2.]})) # ==> [ 14.]
相关文章推荐
- tensorflow学习笔记----一(基本使用)
- [学习笔记] TensorFlow 入门之基本使用
- 【学习笔记】TensorFlow 入门之基本使用
- [学习笔记] TensorFlow 入门之基本使用
- [TensorFlow学习笔记1]TensorFLow的基本概念和基本使用
- tensorflow学习笔记之(一)—— 安装和基本使用
- ibatIS学习笔记---Ibatis的基本使用方法
- WPF and Silverlight 学习笔记(二十七):基本图形的使用(2)Path和位图操作
- 开始hadoop前的准备:ubuntu学习笔记-基本环境的搭建(ssh的安装,SecureCRT连接,vim的安装及使用、jdk的安装)
- linux+qtreator+opencv学习笔记-基本使用
- JavaScript DOM学习笔记2——DOM的基本使用
- WPF and Silverlight 学习笔记(二十七):基本图形的使用(2)Path和位图操作
- 第三章、一些基本数据结构使用和解析(iOS学习笔记,从零开始。)
- cocos2d-x学习笔记17:记录存储2:SQLite基本使用
- NetworkX学习笔记-2-基本使用方法举例
- HTML5学习笔记 - 基本标签的使用
- Java学习笔记36:Java log4j 基本配置和使用
- [iTextSharp学习笔记]使用iText的基本构造块
- MongoDB学习笔记之基本使用
- accp6.0 《使用javascript增强交互效果》学习笔记ch6 表单基本验证技术