Việc nghiên cứu đại số tuyến tính liên quan đến một số loại đối tượng toán học:
Scalars: Scalar chỉ là một số duy nhất, trái ngược với hầu hết các đối tượng được nghiên cứu trong đại số tuyến tính, thường đại số tuyến tính nghiên cứu là các mảng gồm nhiều số.
Chúng ta sẽ ký hiệu scalars ở dạng chữ nghiêng viết thường ví dụ như này
[imath]s [/imath]
Khi đề cập đến scalars chúng ta sẽ định nghĩa cả kiểu của chúng. Ví dụ
[imath]s \in \mathbb{R} [/imath]
Một scalar thể hiện bởi 1 tensor có 1 thành phần(1 phần tử) Trong ví dụ bên dưới mình sẽ có 2 scalars và thực hiện một số phép tính toán cơ bản với nó.
Nhưng trước tiên chúng ta cần cài đặt 1 số thư viện để học machine learning
các bạn có thể cài bằng lệnh pip. Mình cũng có 1 số video hướng dẫn cài bằng tiếng việt ở đây
lệnh cài:
pip install tensorflow
Bây giờ chúng ta sẽ cùng thử khai báo scalars và tính toán cơ bản trên nó nhé.
import tensorflow as tf
x = tf.constant([3.0])
y = tf.constant([2.0])
x + y, x * y, x / y, x**y
kết quả chúng ta được
(<tf.Tensor: shape=(1,), dtype=float32, numpy=array([5.], dtype=float32)>,
<tf.Tensor: shape=(1,), dtype=float32, numpy=array([6.], dtype=float32)>,
<tf.Tensor: shape=(1,), dtype=float32, numpy=array([1.5], dtype=float32)>,
<tf.Tensor: shape=(1,), dtype=float32, numpy=array([9.], dtype=float32)>)
Vectors: Bạn có thể nghĩ về một vector, đơn giản là một danh sách các scalars. Ta gọi các giá trị này là các phần tử của vectơ.
Các bạn có thể thấy ký hiệu toán học của nó như sau
[math]
\mathbf{x} =\begin{bmatrix}x_{1} \\x_{2} \\ \vdots \\x_{n}\end{bmatrix}
[/math]
Hay nói 1 cách đơn giản trong lập trình nó là mảng.
x = tf.range(4)
x
<tf.Tensor: shape=(4,), dtype=int32, numpy=array([0, 1, 2, 3], dtype=int32)>
Matrices: Hay còn gọi là ma trận chắc hẳn các bạn đều đã biết đến khái niệm này trong toán học. Khi đề cập đến khái niệm ma trận mình sẽ sử dụng chữ cái in hoa vd: X
Và thông thường chúng ta sẽ chỉ ra kích thướcvà kiểu dữ liệu của ma trận với ký hiệu
[imath]\mathbf{X} \in \mathbb{R}^{m \times n}[/imath]
.
Trong đó m là dòng (row) và n là cột (column)
Chúng ta có thể nhìn thấy ký hiệu toán học của 1 ma trận trông như thế này
[math]\mathbf{A}=\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \\ \end{bmatrix}[/math]
Chúng ta có thể tạo ra 1 ma trận trong tensorflow như sau:
A = tf.reshape(tf.range(20), (5, 4))
A
<tf.Tensor: shape=(5, 4), dtype=int32, numpy=
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]], dtype=int32)>
Tensors: Đây chỉ đơn giản là mảng mà có nhiều chiều hơn thôi. Ví dụ bạn có thể hình dung. Vector là tensors 1 chiều. Ma trận là tensors 2 chiều, ngoài ra còn có tensors n chiều bạn có thể nhìn hình ảnh sau để hình dung.
Chúng ta có thể tạo ra 1 tensors phức tạp hơn những ví dụ ở trên như sau:
X = tf.reshape(tf.range(24), (2, 3, 4))
X
<tf.Tensor: shape=(2, 3, 4), dtype=int32, numpy=
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]], dtype=int32)>