您的位置:首页 > 其它

第11天,Tensorflow的基本函数介绍以及使用方法

2019-03-20 23:00 405 查看
import tensorflow as tf

'''
常亮定义  tf.constant([value,dtype,shape,name])
'''
A = tf.constant(8.0,dtype = float)
B = tf.constant(2.0)

#C = tf.add(A,B)   # 加法
C = tf.subtract(B,A)   # 减法  B - A
with tf.Session() as Sess:    #tensorflow 执行任何函数都要用这个session来执行
D = Sess.run(C)    #执行计算
print(D)     #打印结果
'''
变量 tf.Variable()    V要大写

'''

'''
1.tf.multiply()两个矩阵中对应元素各自相乘
格式: tf.multiply(x, y, name=None)
参数:
x: 一个类型为:half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128的张量。
y: 一个类型跟张量x相同的张量。
返回值: x * y element-wise.
注意:
(1)multiply这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法,注意和tf.matmul区别。
(2)两个相乘的数必须有相同的数据类型,不然就会报错。

2.tf.matmul()将矩阵a乘以矩阵b,生成a * b。
格式: tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)
参数:
a: 一个类型为 float16, float32, float64, int32, complex64, complex128 且张量秩 > 1 的张量。
b: 一个类型跟张量a相同的张量。
transpose_a: 如果为真, a则在进行乘法计算前进行转置。
transpose_b: 如果为真, b则在进行乘法计算前进行转置。
adjoint_a: 如果为真, a则在进行乘法计算前进行共轭和转置。
adjoint_b: 如果为真, b则在进行乘法计算前进行共轭和转置。
a_is_sparse: 如果为真, a会被处理为稀疏矩阵。
b_is_sparse: 如果为真, b会被处理为稀疏矩阵。
name: 操作的名字(可选参数)
返回值: 一个跟张量a和张量b类型一样的张量且最内部矩阵是a和b中的相应矩阵的乘积。
注意:
(1)输入必须是矩阵(或者是张量秩 >2的张量,表示成批的矩阵),并且其在转置之后有相匹配的矩阵尺寸。
(2)两个矩阵必须都是同样的类型,支持的类型如下:float16, float32, float64, int32, complex64, complex128。

'''

A = tf.Variable([1,2])  # 定义一个一维矩阵变量A
B = tf.Variable([[2,2]])  # 定义一个一行两列的二维矩阵
B_1 = tf.Variable([[2],[5]]) #生成一个两行一列的矩阵
C = tf.multiply(A,B)  # 矩阵各自元素相乘
D = tf.matmul(B,B_1)  # 矩阵点积 必须满足矩阵点积的要求
'''
Tensorflow中 只要有变量,就必须要用初始化函数来对这些变量进行初始化
该方法是 : tf.global_variables_initializer()   ,执行之后会给变量一个初始值
'''
Init = tf.global_variables_initializer()   #含有变量的一定要初始化
'''
with tf.Session() as Sess:
Sess.run(Init)
E = Sess.run(D)
print(E)
'''

'''
fetch 使用方法 可以在sess.run()里边执行多个函数
注意:fetch 使用的时候sess.run([]) 里边是要以列表的形式来输入 这样输出的时候也是以列表的形式输出结果
'''
#with tf.Session() as sess:
#    sess.run(Init)
#    R = sess.run([C,D])
#    print(R)
'''
feed 使用方式是 在sess.run(x ,feed_dict{ x1 :[value], x2:[value]} )
要用字典的形式来传入参数,而且要使用占位符规定一下输入参数类型,才能使用feed

占位符 tf.Placeholder(dtype,shape ,name)

从定义来讲:在 Tensorflow 当中表示输入输出数据的格式,可以说,任何的输入数据
(变量不是输入数据,而是事先设计好的参数)想要进入到 Tensorflow 计算处理当中,
都需要经过占位符,因为占位符确定了输入数据的类型,它只允许传入指定类型或是指
定形状的数据,同理,它也确定了输出数据的类型,对输出数据的格式也有要求。

简单来讲,占位符的作用就是规范输入输出的数据,制定一个格式规则,
传进来和传出去的数据必须经过这个格式规则才能成为有效数据。

另外,占位符另外一个很重要的作用是,在声明占位符后,
任何算法的引入都可以先使用占位符作为其中的一个参数,等整个算法流程完成后,
直接将输入或者输出的数据传入占位符,这些数据就会按照占位符出现的位置依次通过算法,
最后得到输出。大大简化了数据处理的流程,并且使整个算法代码具有很好的可读性。举例而言:
'''
A = tf.placeholder(tf.float32,shape = [2,2]) #定义一个两行两列的占位符,等待下面输入数据
B = tf.constant([[5.0,3.0],[1.5,3.2]],dtype=tf.float32)  #定义一个两行两列的常量
C = tf.multiply(A,B)   # 声明A*B操作

with tf.Session() as sess:
T = sess.run(C,feed_dict = {A :[[4,4],[8,8]] })
print(T)
[[20.  12. ]
[12.  25.6]]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: