Tensorflow 之 Deep Learning 演练场

TensorFlow 快速上手详解

2018-09-02  本文已影响0人  ai_chen2050

TensorFlow 基本使用简述

一、概念简述

1、学习目标

2、TensorFlow 概述

3、计算图

4、构建图

import tensorflow as tf 
# 创建一个常量 op, 产生一个 1x2 矩阵. 这个 op 被作为一个节点
# 加到默认图中
#
# 构造器的返回值代表该常量 op 的返回值.
matrix1 = tf.constant([[3., 3.]])

# 创建另外一个常量 op, 产生一个 2x1 矩阵.
matrix2 = tf.constant([[2.],[2.]])

# 创建一个矩阵乘法源 matmul op, 把 'matrix1' 和 'matrix2' 作为输入.
# 返回值 'product' 代表矩阵乘法的结果.
product = tf.matmul(matrix1,matrix2)

5、在一个会话中启动图

# 启动默认图
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.]] 

# 任务完成,关闭会话,注意,若 会话是在 with 语句中启动的话,由于局部变量自动销毁,可省去这一步
sess.close()
[[12.]]
with tf.Session() as sess:
    result = sess.run([product])
    print result
[array([[12.]], dtype=float32)]
with tf.Session() as sess:
    with tf.device("/gpu:1"):
        matrix1 = tf.constant([[3., 3.]])
        matrix2 = tf.constant([[2.],[2.]])
        product = tf.matmul(matrix1, matrix2)
        ...
        

设备用字符串进行标识. 目前支持的设备包括:

二、读取数据相关

2.1 交互式使用

# 进入一个交互式 TensorFlow 会话
import tensorflow as tf 
sess = tf.InteractiveSession()

x = tf.Variable([1.0 ,2.0])
a = tf.constant([3.0, 3.0])

# 使用初始化器 initializer op 的 run() 方法初始化 ‘x'
x.initializer.run()

# 增加一个减法 sub op, 从 ‘x' 减去 ’a'. 运行减法 op, 输出结果
sub = tf.subtract(x,a)
print sub.eval()
# ==> [-2, -1.]
[-2. -1.]

2.2 变量

# 创建一个变量,初始化为标量 0.
state = tf.Variable(0,name='counter')

# 创建一个 op, 其作用是使 state 增加 1

one = tf.constant(1)
new_value = tf.add(state, one)
# 通过 tf.assign 函数将变量的 state 的值赋值为 new_value,并且返回一个 op 
update = tf.assign(state, new_value)

# 启动图后,变量必须先经过 ‘初始化’ (int) 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

2.3 Fetch (取值)

input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
itermad = tf.add(input2,input3)
mul = tf.multiply(input1,itermad)

with tf. Session() as sess:
    # 通过传入 一个 op 的 list【,,,】给 run 取得多个 tensor
    result = sess.run([mul,itermad])
    print result

    # 一般,我们需要获取的多个 tensor 值,在 op 的一次运行中一起获得
    # (而不是逐个去获取 tensor)。
    # 输出:
[21.0, 7.0]

2.4 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.]})
    
# 输出:
# for a larger-scale example of feeds. 
# 如果没有正确提供 feed, placeholder() 操作将会产生错误.
[array([14.], dtype=float32)]
上一篇 下一篇

猜你喜欢

热点阅读