Ngày Cộng đồng ML là ngày 9 tháng 11! Tham gia với chúng tôi để cập nhật từ TensorFlow, JAX, và nhiều hơn nữa Tìm hiểu thêm

Khởi động nhanh TensorFlow 2 cho người mới bắt đầu

Xem trên TensorFlow.org Xem nguồn trên GitHub Tải xuống sổ ghi chép

Giới thiệu ngắn này sử dụng Keras để:

  1. Tải tập dữ liệu được tạo sẵn.
  2. Xây dựng mô hình học máy mạng thần kinh phân loại hình ảnh.
  3. Đào tạo mạng nơ-ron này.
  4. Đánh giá độ chính xác của mô hình.

Hướng dẫn này là một Google Colaboratory máy tính xách tay. Các chương trình Python được chạy trực tiếp trong trình duyệt — một cách tuyệt vời để học và sử dụng TensorFlow. Để làm theo hướng dẫn này, hãy chạy sổ ghi chép trong Google Colab bằng cách nhấp vào nút ở đầu trang này.

  1. Trong Colab, kết nối với một thời gian chạy Python: Ở phía trên cùng bên phải của thanh menu, chọn CONNECT.
  2. Chạy tất cả các tế bào đang tính xách tay: Chọn Runtime> Chạy tất cả.

Thiết lập TensorFlow

Nhập TensorFlow vào chương trình của bạn để bắt đầu:

import tensorflow as tf
print("TensorFlow version:", tf.__version__)
TensorFlow version: 2.6.0

Nếu bạn đang theo dõi cùng trong môi trường phát triển của riêng mình, chứ không phải là Colab , vui lòng xem hướng dẫn cài đặt cho thiết lập TensorFlow để phát triển.

Tải tập dữ liệu

Tải và chuẩn bị các dữ liệu MNIST . Chuyển đổi dữ liệu mẫu từ số nguyên sang số dấu phẩy động:

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step
11501568/11490434 [==============================] - 0s 0us/step

Xây dựng mô hình học máy

Xây dựng một tf.keras.Sequential mô hình bằng cách xếp chồng lớp.

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

Đối với mỗi ví dụ, mô hình trả về một vector của logits hoặc đăng nhập tỷ lệ cược điểm, một cho mỗi lớp.

predictions = model(x_train[:1]).numpy()
predictions
array([[ 0.74148655, -0.39261633,  0.08016336, -0.46431944,  0.21458861,
         0.31183302,  0.7555975 ,  0.80728006, -0.6296631 , -0.4926056 ]],
      dtype=float32)

Các tf.nn.softmax chức năng chuyển đổi những logits để xác suất cho mỗi lớp:

tf.nn.softmax(predictions).numpy()
array([[0.16651046, 0.05356818, 0.08594736, 0.04986165, 0.09831339,
        0.10835411, 0.16887674, 0.1778342 , 0.04226285, 0.04847102]],
      dtype=float32)

Xác định một hàm tổn thất cho huấn luyện sử dụng losses.SparseCategoricalCrossentropy , trong đó có một vector của logits và một True chỉ số và trả về một mất mát vô hướng cho mỗi ví dụ.

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

Tổn thất này bằng với xác suất log âm của lớp đúng: Tổn thất bằng 0 nếu mô hình chắc chắn là đúng lớp.

Mô hình chưa qua đào tạo này cho phép xác suất gần ngẫu nhiên (1/10 cho mỗi lớp), do đó sự mất mát ban đầu nên được gần gũi với -tf.math.log(1/10) ~= 2.3 .

loss_fn(y_train[:1], predictions).numpy()
2.2223506

Trước khi bắt đầu đào tạo, cấu hình và biên dịch các mô hình sử dụng Keras Model.compile . Đặt optimizer lớp để adam , thiết lập các loss đến loss_fn chức năng bạn đã định nghĩa trước đó, và chỉ định một thước đo để được đánh giá cho mô hình bằng cách thiết lập các metrics tham số accuracy .

model.compile(optimizer='adam',
              loss=loss_fn,
              metrics=['accuracy'])

Đào tạo và đánh giá mô hình của bạn

Sử dụng các Model.fit phương pháp để điều chỉnh các thông số mô hình của bạn và giảm thiểu thiệt hại:

model.fit(x_train, y_train, epochs=5)
Epoch 1/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.2956 - accuracy: 0.9137
Epoch 2/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.1430 - accuracy: 0.9572
Epoch 3/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.1059 - accuracy: 0.9682
Epoch 4/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0870 - accuracy: 0.9736
Epoch 5/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0732 - accuracy: 0.9774
<keras.callbacks.History at 0x7fabfe6f6cd0>

Các Model.evaluate phương pháp kiểm tra việc thực hiện các mô hình, thường trên cơ sở " Validation-bộ " hoặc " Test-bộ ".

model.evaluate(x_test,  y_test, verbose=2)
313/313 - 0s - loss: 0.0771 - accuracy: 0.9756
[0.07707860320806503, 0.975600004196167]

Bộ phân loại hình ảnh hiện đã được đào tạo với độ chính xác ~ 98% trên tập dữ liệu này. Để tìm hiểu thêm, hãy đọc các hướng dẫn TensorFlow .

Nếu bạn muốn mô hình của mình trả về một xác suất, bạn có thể bọc mô hình được đào tạo và gắn softmax vào nó:

probability_model = tf.keras.Sequential([
  model,
  tf.keras.layers.Softmax()
])
probability_model(x_test[:5])
<tf.Tensor: shape=(5, 10), dtype=float32, numpy=
array([[9.35628634e-07, 1.90160367e-08, 2.08603578e-05, 3.36712168e-04,
        3.99928729e-10, 3.29815066e-07, 1.11730861e-12, 9.99547541e-01,
        5.78590800e-07, 9.29015441e-05],
       [9.06768847e-08, 1.75887300e-03, 9.98239040e-01, 1.42416525e-06,
        2.24498985e-14, 1.93019602e-07, 4.19461571e-07, 1.78353019e-14,
        1.09490275e-08, 3.30677152e-15],
       [1.80358853e-07, 9.99705374e-01, 4.36524460e-05, 7.87066620e-06,
        6.60410151e-05, 1.29832119e-06, 2.66996949e-06, 5.51502962e-05,
        1.15344104e-04, 2.45894512e-06],
       [9.99937892e-01, 1.82150364e-10, 2.67099913e-05, 1.87603248e-07,
        2.81131548e-07, 1.86480634e-06, 2.33697901e-05, 1.97653662e-07,
        3.29448504e-08, 9.38197445e-06],
       [1.53162068e-06, 2.57238808e-09, 2.05853598e-06, 2.75526531e-07,
        9.93477166e-01, 2.57349512e-07, 3.59538944e-06, 9.20545644e-05,
        1.77590653e-06, 6.42123120e-03]], dtype=float32)>

Phần kết luận

Xin chúc mừng! Bạn đã đào tạo một mô hình học máy sử dụng một tập dữ liệu dựng sẵn bằng cách sử dụng Keras API.

Để biết thêm ví dụ của việc sử dụng Keras, hãy kiểm tra hướng dẫn . Để tìm hiểu thêm về việc xây dựng các mô hình với Keras, đọc các hướng dẫn . Nếu bạn muốn tìm hiểu thêm về tải và chuẩn bị dữ liệu, vui lòng xem hướng dẫn về tải dữ liệu hình ảnh hoặc CSV tải dữ liệu .