摘要:輸出數據的第維將根據指定。輸入數據必須是一個二維的矩陣,經過轉置或者不轉置,內部維度必須相匹配。默認情況下,該標記都是被設置為。解釋這個函數的作用是將兩個
作者:chen_h
微信號 & QQ:862251340
微信公眾號:coderpai
簡書地址:https://www.jianshu.com/p/ce4...
計劃現將 tensorflow 中的 Python API 做一個學習,這樣方便以后的學習。該章介紹有關數學符號操作的API
原文鏈接
第一部分
第二部分
TensorFlow提供了一些操作,你可以使用基本的算術運算符添加到你的圖表。
tf.add(x, y, name = None)
解釋:這個函數返回x與y逐元素相加的結果。
注意:tf.add操作支持廣播形式,但是tf.add_n操作不支持廣播形式。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant(2) b = tf.constant(3) c = tf.add(a, b) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是必須是以下之一:float32,float64,int8,int16,int32,complex64,int64。
y: 一個Tensor,數據類型必須和x相同。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.sub(x, y, name = None)
解釋:這個函數返回x與y逐元素相減的結果。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([1,2]) b = tf.constant(2) c = tf.sub(a, b) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是必須是以下之一:float32,float64,int8,int16,int32,complex64,int64。
y: 一個Tensor,數據類型必須和x相同。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.mul(x, y, name = None)
解釋:這個函數返回x與y逐元素相乘的結果。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([1,2]) b = tf.constant(2) c = tf.mul(a, b) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是必須是以下之一:float32,float64,int8,int16,int32,complex64,int64。
y: 一個Tensor,數據類型必須和x相同。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.div(x, y, name = None)
解釋:這個函數返回x與y逐元素相除的結果。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([1,2]) b = tf.constant(2) c = tf.div(a, b) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是必須是以下之一:float32,float64,int8,int16,int32,complex64,int64。
y: 一個Tensor,數據類型必須和x相同。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.mod(x, y, name = None)
解釋:這個函數返回x與y逐元素取余的結果。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([1,2]) b = tf.constant(2) c = tf.mod(a, b) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是必須是以下之一:int16,int32,float32,float64。
y: 一個Tensor,數據類型必須和x相同。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
TensorFlow提供了一些操作,你可以使用基本的數學函數,將它們添加到你的圖表。
tf.add_n(inputs, name = None)
解釋:這個函數的作用是對inputs列表中的元素相應位置累加。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([1,2], tf.int32) b = tf.constant([3,4], tf.int32) c = tf.add_n([a,b]) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
inputs: 一個列表,其中至少有一個Tensor,數據類型是必須是以下之一:float32,float64,int64,int32,uint8,int16,int8,complex64,qint8,quint8,quint32。并且列表中的每個Tensor必須有相同的數據維度。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和inputs相同。
tf.abs(x, name = None)
解釋:這個函數的作用返回x的絕對值。
給定x,它是一個實數Tensor。這個操作返回一個tensor,這個tensor中的每個值是對應于x中的每個值得絕對值。
如果,你需要處理復數的絕對值,那么可以使用tf.complex_abs()函數。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([1,-2]) c = tf.abs(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是必須是以下之一:float,double,int64或者int32。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和數據維度都和x相同。
tf.neg(x, name = None)
解釋:這個函數的作用是得到x中每個值得負數,即y = -x
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([1,-2]) c = tf.neg(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是必須是以下之一:float32,float64,int32,complex64,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.sign(x, name = None)
解釋:這個函數是一個符號函數,按照如下規則轉換x中的每一個值。
如果 x < 0,y = sign(x) = -1;
如果 x == 0,y = sign(x) = 0;
如果 x > 0,y = sign(x) = 1;
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([1,-2,0]) c = tf.sign(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是必須是以下之一:float32,float64,int32,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.inv(x, name = None)
解釋:這個函數是計算x中每個元素的倒數,即y = 1/x。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant(7.0) c = tf.inv(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是必須是以下之一:float32,float64,int32,complex64,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
譯者注:
我測試了一下這個API,但好像x的數據類型只有是float類型時才能成功。
tf.square(x, name = None)
解釋:這個函數是計算x中每個元素的平方,即y = x*x = x^2。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.0,7.0]) c = tf.square(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是必須是以下之一:float32,float64,int32,complex64,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.round(x, name = None)
解釋:這個函數是得到x中每個元素離它最接近的整數。
比如:
# "a" is [0.9, 2.5, 2.3, -4.4] tf.round(a) ==> [ 1.0, 3.0, 2.0, -4.0 ]
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.9, 0.0, -2.1, 2.0, 7.2]) c = tf.round(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是float或者double。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同,數據維度和x相同。
tf.sqrt(x, name = None)
解釋:這個函數是得到x中每個元素的開平方值,即y = x^{1/2}。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2, 3], tf.float32) c = tf.sqrt(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float32,float64,int32,complex64,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.rsqrt(x, name = None)
解釋:這個函數是得到x中每個元素的開平方值的導數,即y = 1/x^{1/2}。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2, 3], tf.float32) c = tf.rsqrt(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float32,float64,int32,complex64,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.pow(x, y, name = None)
解釋:這個函數是計算冪運算。
給定一個x和y,對應x和y中的每一個值,計算x^y。
比如:
# tensor "x" is [[2, 2]], [3, 3]] # tensor "y" is [[8, 16], [2, 3]] tf.pow(x, y) ==> [[256, 65536], [9, 27]]
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2, 3]) b = tf.constant([2, 3]) c = tf.pow(a, b) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float,double,int32,complex64,int64。
y: 一個Tensor,數據類型必須是以下之一:float,double,int32,complex64,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor。
tf.exp(x, name = None)
解釋:這個函數是計算x中每個元素的指數,即y = e^x。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.0, 1], tf.float32) c = tf.exp(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float32,float64,int32,complex64,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.log(x, name = None)
解釋:這個函數是計算x中每個元素的自然對數,即y = log(x)。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.0, 1], tf.float32) c = tf.log(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float32,float64,int32,complex64,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.ceil(x, name = None)
解釋:這個函數是返回不小于x中每個元素的最小整數。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.2, -1.8], tf.float32) c = tf.ceil(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float32,float64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.floor(x, name = None)
解釋:這個函數是返回不大于x中每個元素的最大整數。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.2, -1.8], tf.float32) c = tf.floor(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float32,float64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.maximum(x, y, name = None)
解釋:這個函數是逐個比較x和y中的值,求得最大值,即x > y ? x : y。該函數支持廣播形式。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.2, -1.8, 0.0]) b = tf.constant(1.0) c = tf.maximum(a, b) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float32,float64,int32,int64。
y: 一個Tensor,數據類型和x相同。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.minimum(x, y, name = None)
解釋:這個函數是逐個比較x和y中的值,求得最小值,即x < y ? x : y。該函數支持廣播形式。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.2, -1.8, 0.0]) b = tf.constant(1.0) c = tf.minimum(a, b) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float32,float64,int32,int64。
y: 一個Tensor,數據類型和x相同。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.cos(x, name = None)
解釋:這個函數是計算x中每個元素的余弦值。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.2, -1.8, 0.0]) c = tf.cos(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float32,float64,int32,complex64,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
tf.sin(x, name = None)
解釋:這個函數是計算x中每個元素的正弦值。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.2, -1.8, 0.0]) c = tf.sin(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型必須是以下之一:float32,float64,int32,complex64,int64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同。
TensorFlow提供了一些操作,你可以使用添加基本的矩陣數學函數在你的圖中。
tf.diag(diagonal, name = None)
解釋:這個函數是給定一個對角值diagonal,然后返回一個對角tensor。
給定一個對角值diagonal,這個操作返回一個對角tensor,對角線上面的值是diagonal,其余值都用0來填充。
假設diagonal的維度為[D1, D2, ..., Dk],那么輸出tensor的秩為2k,維度是[D1, D2, ..., Dk, D1, D2, ..., Dk],如下:
output[i1, i2, ..., ik, i1, i2, ..., ik] = diagonal[i1, .., ik],其余值都是0。
比如:
# "diagonal" is [1, 2, 3, 4] tf.diag(diagonal) ==> [[1, 0, 0, 0] [0, 2, 0, 0] [0, 0, 3, 0] [0, 0, 0, 4]]
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf a = tf.constant([2.2, -1.8, 1.0]) c = tf.diag(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
diagonal: 一個Tensor,數據類型必須是以下之一:float32,float64,int32,int64。它的秩最大為3。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和diagonal相同。
tf.transpose(a, perm = None, name = "transpose")
解釋:將a進行轉置,并且根據perm參數重新排列輸出維度。
輸出數據tensor的第i維將根據perm[i]指定。比如,如果perm沒有給定,那么默認是perm = [n-1, n-2, ..., 0],其中rank(a) = n。默認情況下,對于二維輸入數據,其實就是常規的矩陣轉置操作。
比如:
input_data.dims = (1, 4, 3) perm = [1, 2, 0] # 因為 output_data.dims[0] = input_data.dims[ perm[0] ] # 因為 output_data.dims[1] = input_data.dims[ perm[1] ] # 因為 output_data.dims[2] = input_data.dims[ perm[2] ] # 所以得到 output_data.dims = (4, 3, 1) output_data.dims = (4, 3, 1)
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf sess = tf.Session() input_data = tf.constant([[1,2,3],[4,5,6]]) print sess.run(tf.transpose(input_data)) print sess.run(input_data) print sess.run(tf.transpose(input_data, perm=[1,0])) input_data = tf.constant([[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]]) print "input_data shape: ", sess.run(tf.shape(input_data)) output_data = tf.transpose(input_data, perm=[1, 2, 0]) print "output_data shape: ", sess.run(tf.shape(output_data)) print sess.run(output_data) sess.close()
輸入參數:
a: 一個Tensor。
perm: 一個對于a的維度的重排列組合。
name:(可選)為這個操作取一個名字。
輸出參數:
一個經過翻轉的Tensor。
tf.matmul(a, b, transpose_a = False, transpose_b = False, a_is_sparse = False, b_is_sparse = False, name = None)
解釋:將矩陣a和矩陣b進行相乘,得到矩陣a*b。
輸入數據必須是一個二維的矩陣,經過轉置或者不轉置,內部維度必須相匹配。
輸入矩陣必須有相同的數據類型,數據類型為:float,double,int32,complex64。
矩陣可以被設置為轉置操作,即transpose_a = True, transpose_b = True。默認情況下,該標記都是被設置為False。
如果矩陣中存在很多的0,那么我們可以使用sparse標記,即a_is_sparse = True, b_is_sparse = True。默認情況下,該標記都是被設置為False。
比如:
# 2-D tensor `a` a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3]) => [[1. 2. 3.] [4. 5. 6.]] # 2-D tensor `b` b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2]) => [[7. 8.] [9. 10.] [11. 12.]] c = tf.matmul(a, b) => [[58 64] [139 154]]
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant(np.random.rand(2,3)) b = tf.constant(np.random.rand(1,3)) c = tf.matmul(a, b, transpose_b = True) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
a: 一個Tensor,數據類型是float,double,int32或者complex64。
b: 一個Tensor,數據類型和a相同。
transpose_a: 如果該值維True,那么在矩陣計算之前,先將a進行轉置。
transpose_b: 如果該值維True,那么在矩陣計算之前,先將b進行轉置。
a_is_sparse: 如果該值維True,那么在矩陣計算的時候,將a當做一個sparse矩陣考慮。
b_is_sparse: 如果該值維True,那么在矩陣計算的時候,將b當做一個sparse矩陣考慮。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和a相同。
tf.batch_matmul(x, y, adj_x = None, adj_y = None, name = None)
解釋:這個函數的作用是將兩個張量按批切片進行相乘。
將張量x和y進行切片(每個切片就是一個批的元素),然后將對應的x和y的每個切片進行相乘,將得到的結果按照原來批的大小進行重新安排。如果我們把adj_x或者adj_y設置成True,在做乘法之前,每個獨立的切片可以組成它的共軛(其實相當于轉置)。
輸入的x和y是三維tensor,或者更高維度的[..., r_x, c_x]和[..., r_y, c_y]。
輸出tensor是一個三維的,或者更高維度的[..., r_o, c_o],其中:
r_o = c_x if adj_x else r_x c_o = r_y if adj_y else c_y
計算過程如下:
out[..., :, :] = matrix(x[..., :, :]) * matrix(y[..., :, :])
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant(np.random.rand(2, 2, 3)) b = tf.constant(np.random.rand(3, 3, 1)) c = tf.batch_matmul(a, b) sess = tf.Session() print sess.run(c) sess.close()
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant(np.random.rand(3, 2, 3, 1)) b = tf.constant(np.random.rand(3, 2, 3, 1)) c = tf.batch_matmul(a, b, adj_x = False, adj_y = True ) sess = tf.Session() print sess.run(c) print sess.run(tf.shape(c)) sess.close()
輸入參數:
x: 一個Tensor,數據類型是float32,float64,int32或者complex64,數據維度是三維的,或者更高維度[..., r_x, c_x]。
y: 一個Tensor,數據類型和x相同,數據維度是三維的,或者更高維度[..., r_y, c_y]。
adj_x: 這是一個可選的布爾類型的值,默認情況下是False。如果我們設置為True,x的每個切片將進行轉置。
adj_y: 這是一個可選的布爾類型的值,默認情況下是False。如果我們設置為True,y的每個切片將進行轉置。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和x相同,數據維度是三維的,或者更高維度[..., r_o, c_o]。
tf.matrix_determinant(input, name=None)
解釋:這個函數的作用是計算n階矩陣的行列式。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant(np.random.rand(3, 3)) c = tf.matrix_determinant(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
input: 一個Tensor,數據類型是float32或者float64,數據維度是[M, M]。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor的標量,數據類型和input相同。
tf.batch_matrix_determinant(input, name=None)
解釋:這個函數的作用是計算每個批(切片)的n階矩陣的行列式。
輸入tensor的數據維度必須是[..., M, M],其中內部必須是一個二維的方陣,對于所有的子矩陣,輸出結果是一個一維的tensor。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant(np.random.rand(4, 2, 3, 3)) c = tf.batch_matrix_determinant(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
input: 一個Tensor,數據類型是float32或者float64,數據維度是[..., M, M]。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和input相同,數據維度是[...]。
tf.matrix_inverse(input, name=None)
解釋:這個函數的作用是計算n階矩陣的逆矩陣,并且檢查可逆性。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant(np.random.rand(3, 3)) c = tf.matrix_inverse(a) sess = tf.Session() print sess.run(c) d = tf.matmul(a, c) print sess.run(d) e = tf.matrix_determinant(d) print sess.run(e) sess.close()
輸入參數:
input: 一個Tensor,數據類型是float32或者float64,數據維度是[M, M]。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和input相同,數據維度是[M, M]。
tf.batch_matrix_inverse(input, name=None)
解釋:這個函數的作用是計算每個批(切片)的n階矩陣的逆矩陣,并且檢查可逆性。
輸入tensor的數據類型是[..., M, M],其中內部必須是一個二維的方陣,對于每一個子矩陣,輸出的矩陣的逆和輸入數據有相同的數據維度。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant(np.random.rand(2, 3, 3)) c = tf.batch_matrix_inverse(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
input: 一個Tensor,數據類型是float32或者float64,數據維度是[..., M, M]。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和input相同,數據維度是[..., M, M]。
tf.cholesky(input, name=None)
解釋:這個函數的作用是計算n階矩陣的Cholesky分解。
輸入數據必須是一個對稱的正定矩陣,并且這個操作我們只會讀入矩陣的下三角部分,不會讀取矩陣的上三角部分。
輸出結果是經過Cholesky分解之后的一個對角線元素為正數的下三角實矩陣。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant([[2, np.random.rand()], [-2, 5]], tf.float32) c = tf.cholesky(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
input: 一個Tensor,數據類型是float32或者float64,數據維度是[M, M]。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和input相同,數據維度是[M, M]。
tf.batch_cholesky(input, name=None)
解釋:這個函數的作用是計算每個批(切片)的n階矩陣的Cholesky分解。
輸入tensor的數據類型是[..., M, M],其中內部必須是一個二維的方陣,并且滿足Cholesky分解的條件。輸出tensor和輸入數據有相同的數據類型,并且每個切片都是經過Cholesky分解之后的值。
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant([[[2, np.random.rand()], [-2, 5]], [[2, np.random.rand()], [-2, 5]]], tf.float32) c = tf.batch_cholesky(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
input: 一個Tensor,數據類型是float32或者float64,數據維度是[..., M, M]。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型和input相同,數據維度是[..., M, M]。
TensorFlow提供了一些復數函數,使得你可以去操作復數,你可以將它們添加到你的圖表。
tf.complex(real, imag, name=None)
解釋:這個函數的作用是將兩個實數轉換成一個復數。
這個操作就是去計算復數a + bj,其中a來自于輸入數據real,表示實部,b來自于輸入數據imag,表示虛部。
輸入數據real和imag必須擁有相同的數據維度。
比如:
# tensor "real" is [2.25, 3.25] # tensor `imag` is [4.75, 5.75] tf.complex(real, imag) ==> [[2.25 + 4.74j], [3.25 + 5.75j]]
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant([2.25, 3.25]) b = tf.constant([4.75, 5.75]) c = tf.complex(a, b) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
real: 一個Tensor,數據類型是float。
imag: 一個Tensor,數據類型是float。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型是complex64。
tf.complex_abs(x, name=None)
解釋:這個函數的作用是計算復數的絕對值。
給定一個復數張量x,這個操作是計算x中的每個值的絕對值,并且返回一個float類型的張量。在x中的所有復數的形式必須是a + bj的形式,那么絕對值計算公式如下:
比如:
# tensor "x" is [[-2.25 + 4.75j], [-3.25 + 5.75j]] tf.complex_abs(x) ==> [5.25594902, 6.60492229]
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant([2.25 + 3.25j]) c = tf.complex_abs(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是complex64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型是float32。
tf.conj(in_, name=None)
解釋:這個函數的作用是計算復數的復共軛。
給定一個復數張量in_,這個操作是計算in_中的每一個復數的復共軛。在in_中所有復數的形式必須是a + bj的形式,其中a是實數部分,b是虛數部分。
經過這個操作,復共軛的返回形式是a - bj。
比如:
# tensor "in" is [-2.25 + 4.75j, 3.25 + 5.75j] tf.conj(in) ==> [-2.25 - 4.75j, 3.25 - 5.75j]
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant([2.25 + 3.25j]) c = tf.conj(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是complex64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型是complex64。
tf.imag(in_, name=None)
解釋:這個函數的作用是返回復數的虛部。
給定一個復數張量in_,這個操作是返回in_中的每一個復數的虛部。在in_中所有復數的形式必須是a + bj的形式,其中a是實數部分,b是虛數部分。
比如:
# tensor "in" is [-2.25 + 4.75j, 3.25 + 5.75j] tf.imag(in) ==> [4.75, 5.75]
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant([2.25 + 3.25j]) c = tf.imag(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是complex64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型是float32。
tf.real(in_, name=None)
解釋:這個函數的作用是返回復數的實部。
給定一個復數張量in_,這個操作是返回in_中的每一個復數的實部。在in_中所有復數的形式必須是a + bj的形式,其中a是實數部分,b是虛數部分。
比如:
# tensor "in" is [-2.25 + 4.75j, 3.25 + 5.75j] tf.real(in) ==> [-2.25, 3.25]
使用例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant([2.25 + 3.25j]) c = tf.real(a) sess = tf.Session() print sess.run(c) sess.close()
輸入參數:
x: 一個Tensor,數據類型是complex64。
name:(可選)為這個操作取一個名字。
輸出參數:
一個Tensor,數據類型是float32。
作者:chen_h
微信號 & QQ:862251340
簡書地址:https://www.jianshu.com/p/ce4...
CoderPai 是一個專注于算法實戰的平臺,從基礎的算法到人工智能算法都有設計。如果你對算法實戰感興趣,請快快關注我們吧。加入AI實戰微信群,AI實戰QQ群,ACM算法微信群,ACM算法QQ群。長按或者掃描如下二維碼,關注 “CoderPai” 微信號(coderpai)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41237.html
摘要:使用例子輸入參數一個,數據類型必須是以下之一,,,,,,。解釋這個函數的作用是沿著指定的維度,分割張量中的值,并且返回最大值。 作者:chen_h微信號 & QQ:862251340微信公眾號:coderpai簡書地址:https://www.jianshu.com/p/4da... 計劃現將 tensorflow 中的 Python API 做一個學習,這樣方便以后的學習。原文鏈接...
摘要:貢獻者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節拆開,再按照知識點合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻者:飛龍版...
閱讀 4365·2021-11-24 10:24
閱讀 1408·2021-11-22 15:22
閱讀 2037·2021-11-17 09:33
閱讀 2427·2021-09-22 15:29
閱讀 514·2019-08-30 15:55
閱讀 1651·2019-08-29 18:42
閱讀 2730·2019-08-29 12:55
閱讀 1771·2019-08-26 13:55