Cộng, trừ 2 tensor
Tensors có một số phép tính toán cơ bản, khi chúng ta thực hiện các phép toán trên 2 tensors có cùng hình dạng chúng ta sẽ được kết quả là 1 tensors có hình dạng tương tự. Trong ví dụ dưới đây là việc cộng 2 tensors
A = tf.reshape(tf.range(20, dtype=tf.float32), (5, 4))
B = A # Tạo thêm tensors B tương tự tensors A
A, A + B
Kết quả chúng ta được
# tensors A
(<tf.Tensor: shape=(5, 4), dtype=float32, numpy=
array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[12., 13., 14., 15.],
[16., 17., 18., 19.]], dtype=float32)>,
# tensors A+B
<tf.Tensor: shape=(5, 4), dtype=float32, numpy=
array([[ 0., 2., 4., 6.],
[ 8., 10., 12., 14.],
[16., 18., 20., 22.],
[24., 26., 28., 30.],
[32., 34., 36., 38.]], dtype=float32)>)
Nhân 2 tensor
Ngoài ra phép nhân 2 ma trận còn gọi là Hadamard product từ bây giờ mình sẽ gọi phép nhân ma trận là phép Hadamard product và ký hiệu là
[imath]\odot[/imath]
cũng đơn giản là nhân từng phần tử của các ma trận với nhau.
Công thức như sau:
[math]
\mathbf{A} \odot \mathbf{B} =
\begin{bmatrix}
a_{11} b_{11} & a_{12} b_{12} & \dots & a_{1n} b_{1n} \\
a_{21} b_{21} & a_{22} b_{22} & \dots & a_{2n} b_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} b_{m1} & a_{m2} b_{m2} & \dots & a_{mn} b_{mn}
\end{bmatrix}.
[/math]
Cách thực hiện trong tensorflow
A * B
Kết quả
array([[ 0., 1., 4., 9.],
[ 16., 25., 36., 49.],
[ 64., 81., 100., 121.],
[144., 169., 196., 225.],
[256., 289., 324., 361.]], dtype=float32)>
Bạn có thể nhân hoặc cộng 1 tensor với 1 scalar cũng không làm thay đổi hình dạng của tensor
a = 2
X = tf.reshape(tf.range(24), (2, 3, 4))
a + X, (a * X).shape
kết quả:
(<tf.Tensor: shape=(2, 3, 4), dtype=int32, numpy=
array([[[ 2, 3, 4, 5],
[ 6, 7, 8, 9],
[10, 11, 12, 13]],
[[14, 15, 16, 17],
[18, 19, 20, 21],
[22, 23, 24, 25]]], dtype=int32)>,
TensorShape([2, 3, 4]))
Chia 2 tensor
x = tf.constant([16, 12, 11])
y = tf.constant([4, 6, 2])
tf.divide(x,y)
Kết quả:
<tf.Tensor: shape=(3,), dtype=float64,
numpy=array([4. , 2. , 5.5])>