深度学习(10)TensorFlow基础操作六: 数学运算

深度学习(10)TensorFlow基础操作六: 数学运算

  • 1. Operation type
  • 2. + - * / % //
  • 3. tf.math.log & tf.exp
  • 4. log2, log10?
  • 5. pow, sqrt
  • 6. @ & matmul
  • 7. With Broadcasting
  • 8. Recap
  • 9. Y = X @ W + b Y=X@W+b Y=X@W+b
  • 10. o u t = r e l u ( X @ W + b ) out=relu(X@W+b) out=relu(X@W+b)

第四章 TensorFlow基础操作
06 数学运算
Outline

        • /
  • **, pow, squre
  • sqrt
  • //, %
  • exp, log
  • @, matmul
  • linear layer

1. Operation type

(1) element-wise

  • {+ - * /}

(2) matrix-wise

  • @, matmul

(3) dim-wise

  • reduce_mean/max/min/sum

2. + - * / % //

深度学习(10)TensorFlow基础操作六: 数学运算_第1张图片

b = tf.fill([2, 2], 2.): 2×2的元素都为2的Tensor;
a = tf.ones([2, 2]): 2×2的元素都为1的Tensor;
(1) a + b: 2×2的元素都为3的Tensor;
(2) a - b: 2×2的元素都-1的Tensor;
(3) a * b: 2×2的元素都为2的Tensor;
(4) a / b: 2×2的元素都为0.5的Tensor;
(5) b // a: 整除操作,得到2×2的元素都为2的Tensor;
(6) b % a: 余除操作,得到2×2的元素都为0的Tensor;

3. tf.math.log & tf.exp

深度学习(10)TensorFlow基础操作六: 数学运算_第2张图片

(1) tf.math.log(a): l o g e a log_ea logea,因为 l o g e 1 = 0 log_e1=0 loge1=0,所以得到2×2的元素都为0的Tensor;
(2) tf.exp(a): e a e^a ea,因为 e 1 = e e^1=e e1=e,而 e ≈ 2.7182817 e≈2.7182817 e2.7182817,所以得到2×2的元素都为2.7182817的Tensor;

4. log2, log10?

没有这俩API,不过我们可以利用:
l o g a b l o g a c = l o g c b \frac{log_a b}{log_a c}=log_c b logaclogab=logcb
→ \to
l o g e b l o g e c = l o g c b \frac{log_e b}{log_e c}=log_c b logeclogeb=logcb
来计算,如下图所示:
深度学习(10)TensorFlow基础操作六: 数学运算_第3张图片

(1) tf.math.log(8.)/tf.math.log(2.): l o g 2 8 = 3.0 log_2 8=3.0 log28=3.0;
(2) tf.math.log(100.)/tf.math.log(10.): l o g 10 100 = 2.0 log_{10} 100=2.0 log10100=2.0;

5. pow, sqrt

深度学习(10)TensorFlow基础操作六: 数学运算_第4张图片

(1) tf.pow(b, 3): n次方操作,因为 2 3 = 8 2^3=8 23=8,所以得到2×2的元素都为8的Tensor;
(2)b**3: 与tf.pow(b, 3)的作用一样,所以得到2×2的元素都为8的Tensor;
(3) tf.sqrt(b): 开方操作,因为 √ 2 ≈ 1.4142135 √2≈1.4142135 21.4142135,所以得到2×2的元素都为1.4142135的Tensor;

6. @ & matmul

深度学习(10)TensorFlow基础操作六: 数学运算_第5张图片

(1) a@b: 矩阵a与矩阵b相乘,得到2×2的元素都为4的Tensor;
(2) tf.matmul(a, b): 作用与a@b一样;
深度学习(10)TensorFlow基础操作六: 数学运算_第6张图片

a = tf.ones([4, 2, 3]): 可以看成是4个2×3的矩阵元素都为1的Tensor;
a = tf.fill([4, 2, 3], 2.): 可以看成是4个2×3的矩阵元素都为2的Tensor;
(3) a@b: 可以看成是[2, 3]的矩阵和[3, 5]的矩阵相乘,这个操作是可以并行的,我们可以一次并行4个这样的操作,所以得到4个2×5的矩阵,所以其shape=[4, 2, 5];
(4) tf.matmul(a, b): 作用与a@b一样;

7. With Broadcasting

深度学习(10)TensorFlow基础操作六: 数学运算_第7张图片

(1) bb = tf.broadcast_to(b, [4, 3, 5]): 使用Broadcasting方法将b.shape由[3, 5]变为[4, 3, 5];
(2) a@bb: 可以看成是[2, 3]的矩阵和[3, 5]的矩阵相乘,这个操作是可以并行的,我们可以一次并行4个这样的操作,所以得到4个2×5的矩阵,所以其shape=[4, 2, 5];

8. Recap

  • y = w ∗ x + b y=w*x+b y=wx+b
  • Y = X @ W + b Y=X@W+b Y=X@W+b
  • [ x 0 0 x 0 1 x 1 0 x 1 1 ] [ w 00 w 01 w 02 w 10 w 11 w 12 ] + [ b 0 , b 1 , b 2 ] → [ y 0 0 y 0 1 y 0 2 y 1 0 y 1 1 y 1 2 ] \begin{bmatrix}x_0^0&x_0^1\\x_1^0&x_1^1\end{bmatrix}\begin{bmatrix}w_{00}&w_{01}&w_{02}\\w_{10}&w_{11}&w_{12}\end{bmatrix}+[b_0,b_1,b_2]\to\begin{bmatrix}y_0^0&y_0^1&y_0^2\\y_1^0&y_1^1&y_1^2 \end{bmatrix} [x00x10x01x11][w00w10w01w11w02w12]+[b0,b1,b2][y00y10y01y11y02y12]
  • [ b , 2 ] → [ b , 3 ] [b,2]→[b,3] [b,2][b,3]

9. Y = X @ W + b Y=X@W+b Y=X@W+b

深度学习(10)TensorFlow基础操作六: 数学运算_第8张图片

10. o u t = r e l u ( X @ W + b ) out=relu(X@W+b) out=relu(X@W+b)

深度学习(10)TensorFlow基础操作六: 数学运算_第9张图片

参考文献:
[1] 龙良曲:《深度学习与TensorFlow2入门实战》

你可能感兴趣的:(深度学习,TensorFlow2,深度学习,tensorflow)