深度学习(10)TensorFlow基础操作六: 数学运算
深度學(xué)習(xí)(10)TensorFlow基礎(chǔ)操作六: 數(shù)學(xué)運(yùn)算
- 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+bY=X@W+bY=X@W+b
- 10. out=relu(X@W+b)out=relu(X@W+b)out=relu(X@W+b)
第四章 TensorFlow基礎(chǔ)操作
06 數(shù)學(xué)運(yùn)算
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): logealog_ealoge?a,因?yàn)?span id="ze8trgl8bvbq" class="katex--inline">loge1=0log_e1=0loge?1=0,所以得到2×2的元素都為0的Tensor;
(2) tf.exp(a): eae^aea,因?yàn)?span id="ze8trgl8bvbq" class="katex--inline">e1=ee^1=ee1=e,而e≈2.7182817e≈2.7182817e≈2.7182817,所以得到2×2的元素都為2.7182817的Tensor;
4. log2, log10?
沒有這倆API,不過我們可以利用:
logablogac=logcb\frac{log_a b}{log_a c}=log_c bloga?cloga?b?=logc?b
→\to→
logeblogec=logcb\frac{log_e b}{log_e c}=log_c bloge?cloge?b?=logc?b
來計(jì)算,如下圖所示:
(1) tf.math.log(8.)/tf.math.log(2.): log28=3.0log_2 8=3.0log2?8=3.0;
(2) tf.math.log(100.)/tf.math.log(10.): log10100=2.0log_{10} 100=2.0log10?100=2.0;
5. pow, sqrt
(1) tf.pow(b, 3): n次方操作,因?yàn)?span id="ze8trgl8bvbq" class="katex--inline">23=82^3=823=8,所以得到2×2的元素都為8的Tensor;
(2)b**3: 與tf.pow(b, 3)的作用一樣,所以得到2×2的元素都為8的Tensor;
(3) tf.sqrt(b): 開方操作,因?yàn)?span id="ze8trgl8bvbq" class="katex--inline">√2≈1.4142135√2≈1.4142135√2≈1.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個(gè)2×3的矩陣元素都為1的Tensor;
a = tf.fill([4, 2, 3], 2.): 可以看成是4個(gè)2×3的矩陣元素都為2的Tensor;
(3) a@b: 可以看成是[2, 3]的矩陣和[3, 5]的矩陣相乘,這個(gè)操作是可以并行的,我們可以一次并行4個(gè)這樣的操作,所以得到4個(gè)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]變?yōu)閇4, 3, 5];
(2) a@bb: 可以看成是[2, 3]的矩陣和[3, 5]的矩陣相乘,這個(gè)操作是可以并行的,我們可以一次并行4個(gè)這樣的操作,所以得到4個(gè)2×5的矩陣,所以其shape=[4, 2, 5];
8. Recap
- y=w?x+by=w*x+by=w?x+b
- Y=X@W+bY=X@W+bY=X@W+b
- [x00x01x10x11][w00w01w02w10w11w12]+[b0,b1,b2]→[y00y01y02y10y11y12]\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}[x00?x10??x01?x11??][w00?w10??w01?w11??w02?w12??]+[b0?,b1?,b2?]→[y00?y10??y01?y11??y02?y12??]
- [b,2]→[b,3][b,2]→[b,3][b,2]→[b,3]
9. Y=X@W+bY=X@W+bY=X@W+b
10. out=relu(X@W+b)out=relu(X@W+b)out=relu(X@W+b)
參考文獻(xiàn):
[1] 龍良曲:《深度學(xué)習(xí)與TensorFlow2入門實(shí)戰(zhàn)》
總結(jié)
以上是生活随笔為你收集整理的深度学习(10)TensorFlow基础操作六: 数学运算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为申请“星耀手机”商标:国际分类为科学
- 下一篇: 抖音外卖平台叫什么名字