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


第四章 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. + - * / % //

在这里插入图片描述

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

在这里插入图片描述

(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
来计算,如下图所示:
在这里插入图片描述

(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

在这里插入图片描述

(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

在这里插入图片描述

(1) a@b: 矩阵a与矩阵b相乘,得到2×2的元素都为4的Tensor;
(2) tf.matmul(a, b): 作用与a@b一样;
在这里插入图片描述

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

在这里插入图片描述

(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. o u t = r e l u ( X @ W + b ) out=relu(X@W+b) out=relu(X@W+b)

在这里插入图片描述

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值