概述
(1)+ - * /
(2)** pow square
(3) sqrt
(4) // %
(5) exp log
(6)@ matmul
(7) linear layer
element-wise: + - * /
matrix-wise: @ matmul
dim-wise: reduce_mean/max/min/sum
**
一 + - * / % //运算
**
+:对应矩阵元素相加
-:对应矩阵元素相减
*:对应矩阵元素相除
/:对应矩阵元素相除
%:对应矩阵元素求余
//:对应矩阵元素整除
In [2]: a = tf.ones([2,2])#2*2矩阵,全部填充为1
In [3]: b = tf.fill([2,2],2.)#2*2矩阵,全部填充为2
In [4]: a
Out[4]:
<tf.Tensor: id=2, shape=(2, 2), dtype=float32, numpy=
array([[1., 1.],
[1., 1.]], dtype=float32)>
In [5]: b
Out[5]:
<tf.Tensor: id=5, shape=(2, 2), dtype=float32, numpy=
array([[2., 2.],
[2., 2.]], dtype=float32)>
In [6]: a + b#对应矩阵元素相加
Out[6]:
<tf.Tensor: id=8, shape=(2, 2), dtype=float32, numpy=
array([[3., 3.],
[3., 3.]], dtype=float32)>
In [7]: a - b#对应矩阵元素相减
Out[7]:
<tf.Tensor: id=10, shape=(2, 2), dtype=float32, numpy=
array([[-1., -1.],
[-1., -1.]], dtype=float32)>
In [8]: a * b #对应矩阵元素相乘
Out[8]:
<tf.Tensor: id=12, shape=(2, 2), dtype=float32, numpy=
array([[2., 2.],
[2., 2.]], dtype=float32)>
In [9]: a / b#对应矩阵元素相除
Out[9]:
<tf.Tensor: id=14, shape=(2, 2), dtype=float32, numpy=
array([[0.5, 0.5],
[0.5, 0.5]], dtype=float32)>
In [10]: b // a #对应矩阵元素整除
Out[10]:
<tf.Tensor: id=16, shape=(2, 2), dtype=float32, numpy=
array([[2., 2.],
[2., 2.]], dtype=float32)>
In [11]: b % a #对应矩阵元素求余
Out[11]:
<tf.Tensor: id=18, shape=(2, 2), dtype=float32, numpy=
array([[0., 0.],
[0., 0.]], dtype=float32)>
**
二 tf.math.log( ) 和tf.math.exp( ) 函数
**
In [12]: a = tf.ones([2,2])
In [13]: a
Out[13]:
<tf.Tensor: id=22, shape=(2, 2), dtype=float32, numpy=
array([[1., 1.],
[1., 1.]], dtype=float32)>
In [14]: tf.math.log(a)#矩阵对应元素取对数
Out[14]:
<tf.Tensor: id=24, shape=(2, 2), dtype=float32, numpy=
array([[0., 0.],
[0., 0.]], dtype=float32)>
In [15]: tf.math.exp(a)#矩阵对应元素取指数
Out[15]:
<tf.Tensor: id=26, shape=(2, 2), dtype=float32, numpy=
array([[2.7182817, 2.7182817],
[2.7182817, 2.7182817]], dtype=float32)>
In [17]: a = tf.random.normal([2,2])
In [18]: a
Out[18]:
<tf.Tensor: id=38, shape=(2, 2), dtype=float32, numpy=
array([[ 0.12121297, -1.6076226 ],
[ 1.4407614 , 0.8430799 ]], dtype=float32)>
In [19]: tf.math.log(a)/tf.math.log(2.)#计算矩阵对应元素以2为底的对数
Out[19]:
<tf.Tensor: id=43, shape=(2, 2), dtype=float32, numpy=
array([[-3.044384 , nan],
[ 0.5268315 , -0.24625869]], dtype=float32)>
In [20]: tf.math.log(a)/tf.math.log(10.)#计算矩阵对应元素以10为底的对数
Out[20]:
<tf.Tensor: id=48, shape=(2, 2), dtype=float32, numpy=
array([[-0.91645086, nan],
[ 0.15859208, -0.07413125]], dtype=float32)>
**
三 tf.pow( )和 tf.sqrt( )函数
**
In [2]: a = tf.fill([2,2],2.)
In [3]: a
Out[3]:
<tf.Tensor: id=2, shape=(2, 2), dtype=float32, numpy=
array([[2., 2.],
[2., 2.]], dtype=float32)>
In [4]: tf.pow(a,3)#矩阵a所有元素取立方
Out[4]:
<tf.Tensor: id=5, shape=(2, 2), dtype=float32, numpy=
array([[8., 8.],
[8., 8.]], dtype=float32)>
In [5]: a**3#矩阵a所有元素取立方
Out[5]:
<tf.Tensor: id=8, shape=(2, 2), dtype=float32, numpy=
array([[8., 8.],
[8., 8.]], dtype=float32)>
In [6]: tf.sqrt(a)#矩阵a所有元素开平方
Out[6]:
<tf.Tensor: id=10, shape=(2, 2), dtype=float32, numpy=
array([[1.4142135, 1.4142135],
[1.4142135, 1.4142135]], dtype=float32)>
**
四 @ matmul矩阵相乘
**
In [7]: a = tf.fill([2,2],1.)
In [8]: b = tf.fill([2,2],2.)
In [9]: a,b
Out[9]:
(<tf.Tensor: id=14, shape=(2, 2), dtype=float32, numpy=
array([[1., 1.],
[1., 1.]], dtype=float32)>,
<tf.Tensor: id=17, shape=(2, 2), dtype=float32, numpy=
array([[2., 2.],
[2., 2.]], dtype=float32)>)
In [10]: a @ b#矩阵相乘
Out[10]:
<tf.Tensor: id=20, shape=(2, 2), dtype=float32, numpy=
array([[4., 4.],
[4., 4.]], dtype=float32)>
In [11]: tf.matmul(a,b)#矩阵相乘
Out[11]:
<tf.Tensor: id=22, shape=(2, 2), dtype=float32, numpy=
array([[4., 4.],
[4., 4.]], dtype=float32)>
In [12]: a = tf.ones([4,2,3])
In [13]: b = tf.fill([4,3,5],2.)
In [14]: a@b #[2,3]@[3,5] = [2,5]
Out[14]:
<tf.Tensor: id=30, shape=(4, 2, 5), dtype=float32, numpy=
array([[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]]], dtype=float32)>
In [15]: tf.matmul(a,b)
Out[15]:
<tf.Tensor: id=32, shape=(4, 2, 5), dtype=float32, numpy=
array([[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]]], dtype=float32)>
With broadcasting
In [2]: a = tf.fill([4,2,3],1.)
In [3]: b = tf.fill([3,5],2.)
In [4]: a.shape
Out[4]: TensorShape([4, 2, 3])
In [5]: b.shape
Out[5]: TensorShape([3, 5])
In [6]: bb = tf.broadcast_to(b,[4,3,5])
In [7]: bb.shape
Out[7]: TensorShape([4, 3, 5])
In [8]: a @ bb
Out[8]:
<tf.Tensor: id=8, shape=(4, 2, 5), dtype=float32, numpy=
array([[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]]], dtype=float32)>
In [9]: tf.matmul(a,bb)
Out[9]:
<tf.Tensor: id=10, shape=(4, 2, 5), dtype=float32, numpy=
array([[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]],
[[6., 6., 6., 6., 6.],
[6., 6., 6., 6., 6.]]], dtype=float32)>
最后
以上就是会撒娇河马为你收集整理的TensorFlow2.0:张量的数学运算的全部内容,希望文章能够帮你解决TensorFlow2.0:张量的数学运算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复