TensorFlow的简介和安装和一些基本概念

1、Tensorflow的简介

    就是一个科学计算的库,用于数据流图(张量流,可以理解成一个N维得数组)。

    Tensorflow支持CPU和GPU,内部实现了对于各种目标函数求导的方式。

2、Tensorflow的安装(python3.5以上)

   # pip install tensorflow==1.4.0   安装cpu版本

   # pip install tensorflow-gpu 安装gpu版本

   # pip3.6 install tensorflow -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com  使用阿里云镜像安装

3、基本概念

  图(graph):描述计算过程

  张量(tensor):数据,每个tensor是一个类型化的多维数组

  操作(op):一个op获得多个tensor,输入/输出

  会话(session):图的op的操作执行,定义什么时候运行

  变量(variable):过程被改变,用于维护状态

4、边

 实线,表述数据依赖,从前到后,叫前向传播,x-->y,而残差从后向前流动一遍,就是反向传播

 虚线,表示控制依赖,用于控制操作的运行。

5、数据属性

 tf.float32/64      32/64位浮点型

 tf.int64/32/16/8    有符号整型

 tf.uint8   无符号整型

 tf.string  字节数组

 tf.bool  布尔型

 tf.complex64  由32位浮点组成的复数

 tf.qint8/32 用于量化操作的8/32位有符号整型

 tf.qunit8  用于量化操作的8位无符号整型

6、节点,节点又称算子,它代表一个操作

  数学运算:Add、Subtract、Multiply、Div、Exp、Log....

  数组运算:Concat、Slice、Split、Constant、Rank、Shape....

  矩阵运算:MatMul、Matrixlnverse....

  有状态的操作:Variable、Assign....

  神经网络构建:SoftMax、Sigmoid、ReLU...

  检查点:Save、Restore....

  队列和同步操作:Enqueue、Dequeue、MutexAcquire

  控制张量流的操作:Merge、Switch、Enter、Leave.... 

7、程序结构

 构建阶段和执行阶段

8、创建一个简单的图(全部是常量的)

# -- encoding:utf-8 --

import tensorflow as tf

# 定义常量矩阵a(dype类型为常量,shape可构建矩阵类型)
a = tf.constant([[1,2],[3,4]],dtype=tf.int32)
b = tf.constant([5,6,7,8],dtype=tf.int32,shape=[2,2])
# 以a,b作为输入,进行矩阵的乘法操作matmul
c = tf.matmul(a,b)
g = tf.add(a,c)

#op之间如果没有依赖关系,会并行处理
#调用session的run方法来执行矩阵

#log_device_placement是否打日志,默认不打日志
#allow_soft_placement是否动态使用CPU和GPU,默认为False
with tf.Session(config=tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)) as sess1:
result = sess1.run(g)
# 结果是多个值,返回一个列表
# result = sess.run(fetches=[c,g])
print('type:{},value:{}'.format(type(result), result))

9、创建一个有变量的图

 
 
# -- encoding:utf-8 --

import tensorflow as tf
#定义一个变量w1
w1 = tf.Variable(initial_value=3.0,dtype=tf.float32,name='w1')
#定义一个常量
a =tf.constant(value=2.0,dtype=tf.float32,name='w1')
#定义一个变量w2
w2 = tf.Variable(w1.initialized_value() * a,name='w2')

c = tf.add(w1,w2)
#进行全局变量初始化
init_op = tf.global_variables_initializer()

with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
sess.run(init_op)
result = sess.run(c)
print("result:{}".format(result))

10、feed填充机制,在构建图使用placeholder类型的API临时替代任意操作的张量(占位符)

# -- encoding:utf-8 --

import tensorflow as tf

#构建一个矩阵的乘法,但是矩阵在运行的时候给定

#dtype、shape、name
m1 = tf.placeholder(dtype=tf.float32,shape=[2,3],name='placeholder_m1')
m2 = tf.placeholder(dtype=tf.float32,shape=[3,2],name='placeholder_m2')
m3 = tf.matmul(m1,m2)

init_op = tf.global_variables_initializer()

with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
    sess.run(init_op)
    result = sess.run(fetches=[m3],feed_dict={m1: [[1,2,3],[4,5,6]],m2: [[1,2],[3,4],[5,6]]})
    print('result:{}'.format(result))

  

   

 

   

   

    

   

猜你喜欢

转载自www.cnblogs.com/allen-GC/p/10703693.html