tensorFlow基础

tensorflow=tensor+flow
tensor(张量)意味着N维数组,flow(流)意味着基于数据流图计算

tensorflow数据流图一般包括张量(tensor),算子(operation),会话(session),变量(variable),占位符(placeholder)和图(graph)组成,下面按照以上顺序介绍。

1. 张量

张量:零阶张量为标量,也就是一个数值;一阶张量为向量,如:[1,2,3];二阶张量为矩阵,如[[1,2,3],[4,5,6]]。
张量中许多表达形式和numpy数据集类似,tf.float32,tf.flaot64,tf.int16等

2. 算子

对张量进行计算叫算子,它是对张量执行运算的节点,下面展示一些常用的类型,会在接下来的代码中出现:

算子类型示例
数值计算add,sub,multiply,equal,log
多维数组运算slice,constant,shape,rank
状态管理variable,assign
矩阵运算matmul
神经网络softmax,sigmoid,relu,maxpool

3.会话(session)

在tensorflow程序中,Session对象的创建不需要任何参数,如:

import tensorflow as tf
sess=tf.Session()

创建Session对象后,需要使用run()来运行和计算张量对象,sess.run()中有四个参数,其中fetches是必选,其余为可选

sess.run(fetches,feet_dict=None,options=None,run_metadata=None)

3.1 fetches参数

fetches可以接受图中用户想要执行的元素。如对象是tensor,则输出为一个数组,对象为op,则输出运算结果。

import tensorflow as tf
a=tf.add(5,6)
b=tf.multiply(5,6)
with tf.Session()as sess:
##计算5+6,输出11
    print(sess.run(a))
##计算5*6,输出30
    print(sess.run(b))
##将上面两个式合并输出
 	print(sess.run([a,b]))

3.2 feed_dict参数

feed_dict可以覆盖图中tensor值。feed_dict的作用是将一个变量赋值给运算中的参数,举例便可一目了然。

import tensorflow as tf
a=tf.add(5,5)
b=tf.multiply(a,10)
with tf.Session()as sess:
##第一个输出为100,先计算a=5+5,再将a传递给b,计算结果为100
    print(sess.run(b))
##第二个输出为50,feed_dict改变了a的值,把5传递给a,所以输出50
    print(sess.run(b,feed_dict={a:5}))

feed_dict在神经网络应用非常广泛,与站位符placeholder配合使用,在接下来会继续介绍。
综上:session会话就是执行之前声明的操作和运算,计算其结果。feet_dict就是改变变量的值,将一个新的值赋给变量

4.常量+变量

常量:

tf.constant(value, dtype=None, shape=None, name="Const", verify_shape=False)

1.value:常量值,要与dtype保持一致
2.dtype:返回tensor的类型
3.shape:返回tensor形状
4.name:tensor的名字
5.verify_shape:布尔值,用于验证值的形状
例子:

import tensorflow as tf
a=tf.constant(2,name='a')
b=tf.constant(3,name='b')
with tf.Session()as sess:
##输出2,tensor命名为a
    print(sess.run(a))
##输出为3
    print(sess.run(b))

变量:
tf.Variable()函数中参数如下所示:

tf.Variable(initial_value=None, trainable=True, collections=None, 
validate_shape=True, caching_device=None, name=None,variable_def=None, 
dtype=None, expected_shape=None, import_scope=None, constraint=None)

上述代码中只有一些参数比较常见:
1.initial_value:变量初始值
2. trainable:如果设置为True,则变量可被优化器类自动修改,相反则只能手工修改,默认值为True
3. validate_shape:如果是False,允许变量被一个形状未知的值初始化,默认是True,表示必须知道形状
4. name:变量名字
5. dtype:初始化类型;
:在计算前需要初始化所有变量Variable,不然系统会报错。(变量在卷积神经网络中广泛使用,设置权重和偏置)

sess.run(tf.global_variable_inittialier())

例子如下:

import tensorflow as tf
a=tf.Variable(2,name='a')
b=tf.Variable(3,name='b')
c=tf.add(a,b)
with tf.Session()as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(c))

5.占位符(placeholder)

占位符的作用可以理解为先占个位置,不知道具体值,只知道类型和形状等信息,先把这些信息填进去占个位置,后续使用feed来填数据。
使用sess.run()中feed_dict把数据喂给变量。

tf.placeholder(dtype, shape=None, name=None)

1.dtype:将要被feed的元素类
2.shape:将要被feed的tensor的形状,若不指定,可以进任何形状tensor

import tensorflow as tf
import numpy as np
x=tf.placeholder(tf.float32,[3,2])
y=tf.reshape(x,[2,3])
z=tf.matmul(x,y)
with tf.Session()as sess:
    a=np.random.rand(3,2)
##将a的值喂给x
    print(sess.run(z,feed_dict={x:a}))

综上为tensorflow的基础知识,为卷积神经网络做铺垫。主要使用变量,占位符以及session会话。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值