iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
自我挑戰組

30天初探tensorflow之旅系列 第 6

Day 06 介紹TensorFlow的基本運算

  • 分享至 

  • xImage
  •  

在第四天的核心概念有介紹到張量,Tensorflow 的計算結果不是具體的數字,而是一個張量的結構。
張量會有三個屬性:

  1. 名稱(name)
  2. 維度(shape)
  3. 類型(type)
    特別注意每一個張量只會有一個類型, TensorFlow 會檢查參與運算的所有張量,而類型不相同時會報錯。

先從一維最簡單的語法開始示範:

import tensorflow as tf
x = tf.constant(4)
y = tf.constant(5)
z = tf.add(x,y)
m = tf.multiply(x,y)
print(z)
print("m:", m.numpy())

它的輸出結果:

tf.Tensor(9, shape=(), dtype=int32)
m: 20

這邊示範兩種輸出寫法,可以使用.numpy() 的方法將 TensorFlow 張量轉換為 NumPy 數組,就只會顯示數值。
如果直接使用 print(參數),會看到張量的描述信息,包含名稱、維度和類型,而不是具體值。

還有其他數值運算,如下:
tf.subtract(x,y) 減法
tf.divide(x,y) 除法
tf.mod(x,y) 餘數
tf.sqrt(x) 平方
tf.abs(x) 絕對值

二維也是相同概念:

import tensorflow as tf
x = tf.constant([[1,2,3], [4,5,6]])
y = tf.constant([[7,8,9], [10,11,12]])
z = tf.add(x,y)
m = tf.multiply(x,y)
print(z)
print("m:", m.numpy())

其輸出結果為:

tf.Tensor(
[[ 8 10 12]
 [14 16 18]], shape=(2, 3), dtype=int32)
m: [[ 7 16 27]
 [40 55 72]]

最後想介紹一些比較進階的運算操作(operations):

x = tf.eye(3)

會輸出:

tf.Tensor(
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]], shape=(3, 3), dtype=float32)

tf.eye(行數),它用於創建一個單位矩陣(identity matrix)。

x = tf.random.normal((3,3), mean=0, stddev=1)

會輸出:

tf.Tensor(
[[ 0.7353721  -0.6438684  -2.337073  ]
 [ 0.41706735  1.0954909   1.4115753 ]
 [-0.4909441   0.97721106  0.65189064]], shape=(3, 3), dtype=float32)

tf.random.normal (shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None) 用於生成高斯分佈的隨機數據,在隨機初始化模型權重或生成隨機樣本時很有用。mean 是生成數據的均值(默認為0),stddev是生成數據的標準差(默認為1)。

類似概念的 tf.random.uniform (shape, minval=0, maxval=None, dtype=tf.float32, seed=None)是用於生成在指定範圍內均勻分佈的隨機數據,minval 是生成的隨機數的最小值(默認為0),maxval 是生成的隨機數的最大值(默認不設上限)。

x = tf.range(start=1, limit=10, delta=2)

會輸出:

tf.Tensor([1 3 5 7 9], shape=(5,), dtype=int32)

tf.range(start=0, limit=None, delta=1, dtype=None) 用於生成一個一維張量,在生成一系列數值的情況下非常有用,例如索引和計算。delta 是序列中相鄰數字之間的等差(默認1)。


上一篇
Day 05 使用pip安裝 TensorFlow
下一篇
Day 07 認識 Eager Execution
系列文
30天初探tensorflow之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言