icantech
Lập trình chung
4042
27/12/2023

Keras là gì? Tất cả những điều bạn cần biết về thư viện Keras

Trong bối cảnh hiện nay, AI và học máy đang trở thành xu hướng không thể phủ nhận. Để đối phó với những thách thức phức tạp và đa dạng, các nhà phát triển đã chuyển hướng sự quan tâm của mình đến một lĩnh vực cụ thể hơn: học sâu. Lĩnh vực này mô phỏng bộ não con người, sử dụng mạng nơ-ron làm công cụ chính. Để thực hiện và tối ưu hóa các mô hình này, các thư viện như Theano, TensorFlow, Caffe và Mxnet đóng vai trò quan trọng. Với mong muốn giúp bạn hiểu rõ hơn về một trong những framework hàng đầu trong deep learning (học sâu), trong bài viết dưới đây hãy cùng ICANTECH tìm hiểu về Keras và những ưu điểm nổi bật.

1. Tổng quan về Keras Python

1.1. Keras là gì?

Keras là gì hay Keras python là gì là câu hỏi được nhiều người quan tâm. Keras là một thư viện mã nguồn mở được sử dụng rộng rãi trong lĩnh vực deep learning (học sâu) và mạng nơ-ron. Nó được thiết kế để giúp các nhà phát triển xây dựng và thử nghiệm các mô hình học sâu một cách dễ dàng và linh hoạt. 

Mục tiêu chính của Keras là cung cấp một API đơn giản, trực quan và dễ sử dụng, giúp người dùng tập trung vào việc xây dựng mô hình mà không cần lo lắng về chi tiết kỹ thuật phức tạp.

Một trong những điểm mạnh của Keras là khả năng tích hợp với các framework học sâu khác như TensorFlow và Theano, cho phép người dùng tận dụng sức mạnh của cả hai thế giới. Đây chính là điều giúp Keras trở thành một lựa chọn hàng đầu cho các dự án học sâu từ phân loại ảnh, dự đoán chuỗi thời gian, đến các ứng dụng trong lĩnh vực ngôn ngữ tự nhiên và nhiều lĩnh vực khác.

keras

1.2. Tại sao lại cần sử dụng Keras

Dưới đây là một số lý do do mà bạn nên sử dụng Keras:

  • Dễ sử dụng và Linh hoạt: Keras được thiết kế với mục tiêu đơn giản hóa việc xây dựng mô hình. Nó cung cấp một API trực quan, giúp người dùng tập trung vào việc thiết kế mô hình mà không cần quá lo lắng về chi tiết kỹ thuật.
  • Tích hợp tốt: Keras tích hợp mượt mà với các framework học sâu khác như TensorFlow, cho phép người dùng tận dụng sức mạnh của nền tảng này mà vẫn giữ được sự đơn giản của Keras.
  • Cộng đồng lớn và hỗ trợ: Keras có một cộng đồng sôi nổi và lớn mạnh, cung cấp tài liệu, hướng dẫn và hỗ trợ cho người dùng. Điều này giúp người mới bắt đầu có thể dễ dàng tìm kiếm giải pháp cho các vấn đề phức tạp.
  • Phù hợp cho nghiên cứu và sản xuất: Dù Keras có thể được sử dụng cho các dự án nghiên cứu và thử nghiệm mô hình nhanh chóng, nhưng nó cũng phù hợp với các ứng dụng thực tế và sản xuất.
  • Hỗ trợ đa nền tảng: Keras hỗ trợ nhiều thiết bị và nền tảng, từ máy tính cá nhân đến các môi trường đám mây, giúp đảm bảo tính di động và linh hoạt khi triển khai mô hình.

2. Keras model 

Trong Keras, một "model" thường đề cập đến một cấu trúc hoặc kiến trúc mô hình học sâu. Một model trong Keras được sử dụng để định nghĩa cách mà các lớp (layers) của mạng nơ-ron được kết nối với nhau và cách chúng hoạt động cùng nhau để thực hiện một nhiệm vụ cụ thể.

Một model trong Keras có thể được xây dựng và tùy chỉnh bằng cách thêm từng lớp vào một trong những cách sau:

  • Sequential Model: Đây là một kiểu model cơ bản trong Keras, cho phép bạn xây dựng một chuỗi các lớp một cách tuần tự. Ví dụ: bạn có thể bắt đầu bằng một lớp Dense, sau đó là lớp Activation, và tiếp tục như vậy.
  • Functional API: Đây là một phương pháp mạnh mẽ hơn trong Keras, cho phép bạn xây dựng các mô hình có cấu trúc phức tạp hơn, bao gồm việc kết nối đa chiều (multiple inputs/outputs), chia sẻ lớp (layer sharing) và nhiều hơn nữa.

Dưới đây là một ví dụ cơ bản về cách sử dụng Sequential model trong Keras để xây dựng một mô hình đơn giản với một lớp Dense cho việc phân loại ảnh từ bộ dữ liệu MNIST:

  • Bước 1: Cài đặt Keras

pip install keras

  • Bước 2: Đoạn code

import numpy as np

from keras.models import Sequential

from keras.layers import Dense, Flatten

from keras.datasets import mnist

from keras.utils import to_categorical

# Load dữ liệu MNIST

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# Chuẩn hóa và chuyển đổi dữ liệu

train_images = train_images.astype('float32') / 255.0

test_images = test_images.astype('float32') / 255.0

train_labels = to_categorical(train_labels)

test_labels = to_categorical(test_labels)

# Xây dựng mô hình Sequential

model = Sequential()

# Thêm lớp Flatten để chuyển đổi dữ liệu ảnh thành mảng 1D

model.add(Flatten(input_shape=(28, 28)))

# Thêm một lớp Dense với 128 neuron và hàm kích hoạt là relu

model.add(Dense(128, activation='relu'))

# Thêm lớp đầu ra Dense với 10 neuron (do có 10 lớp) và hàm kích hoạt là softmax

model.add(Dense(10, activation='softmax'))

# Biên dịch mô hình: sử dụng hàm mất mát 'categorical_crossentropy' và tối ưu hóa 'adam'

model.compile(optimizer='adam',

             loss='categorical_crossentropy',

             metrics=['accuracy'])

# Huấn luyện mô hình với dữ liệu huấn luyện

model.fit(train_images, train_labels, epochs=5, batch_size=32, validation_split=0.2)

# Đánh giá mô hình trên dữ liệu test

test_loss, test_acc = model.evaluate(test_images, test_labels)

print(f"Test accuracy: {test_acc * 100:.2f}%")

Trong đoạn code trên

Import thư viện cần thiết:

import keras

from keras.models import Sequential

from keras.layers import *

from keras.utils import to_categorical

import matplotlib.pyplot as plt

from keras.datasets import mnist

  • numpy để xử lý dữ liệu số học.
  • Sequential, Dense, và Flatten từ Keras để xây dựng và cấu hình mô hình.
  • mnist từ Keras để tải bộ dữ liệu MNIST.
  • to_categorical để chuyển đổi nhãn dạng số thành dạng one-hot encoding.
     

Tải và chuẩn bị dữ liệu MNIST:

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

train_images = train_images.astype('float32') / 255.0

test_images = test_images.astype('float32') / 255.0

train_labels = to_categorical(train_labels)

test_labels = to_categorical(test_labels)

  • Tải dữ liệu huấn luyện và kiểm tra từ MNIST.
  • Chuẩn hóa dữ liệu ảnh từ giá trị [0, 255] về [0, 1].
  • Chuyển đổi nhãn thành dạng one-hot encoding.

Xây dựng mô hình Sequential

model = Sequential()

model.add(Flatten(input_shape=(28, 28)))

model.add(Dense(128, activation='relu'))

model.add(Dense(10, activation='softmax'))

  • Khởi tạo mô hình Sequential.
  • Flatten: Lớp đầu tiên để chuyển đổi dữ liệu ảnh (2D) thành dạng vector (1D).
  • Dense(128, activation='relu'): Lớp ẩn với 128 neurons và hàm kích hoạt ReLU.
  • Dense(10, activation='softmax'): Lớp đầu ra với 10 neurons (tương ứng với 10 chữ số từ 0 đến 9) và hàm kích hoạt softmax.

Biên dịch mô hình

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

  • Chọn thuật toán tối ưu hóa là 'adam'.
  • Sử dụng hàm mất mát 'categorical_crossentropy'.
  • Đánh giá hiệu suất mô hình bằng chỉ số 'accuracy'.

Huấn luyện mô hình

model.fit(train_images, train_labels, epochs=5, batch_size=32, validation_split=0.2)

  • Huấn luyện mô hình với dữ liệu huấn luyện.
  • Chia dữ liệu huấn luyện thành 80% cho huấn luyện và 20% cho validation.
  • Sử dụng 5 epochs và batch size là 32.

Đánh giá mô hình trên dữ liệu kiểm tra

test_loss, test_acc = model.evaluate(test_images, test_labels)

print(f"Test accuracy: {test_acc * 100:.2f}%")

  • Đánh giá mô hình trên tập kiểm tra để tính độ chính xác và hàm mất mát.
  • In ra độ chính xác của mô hình trên tập kiểm tra.

Đoạn code này sử dụng Keras để xây dựng, huấn luyện và đánh giá một mô hình mạng nơ-ron sử dụng dữ liệu MNIST để nhận diện chữ số viết tay.

3. Lời Kết

Như vậy, ICANTECH đã cùng bạn tìm hiểu về Keras cũng như những lý do bạn nên sử dụng Keras trong Python - một thư viện rất hữu ích cho những bạn đang tìm hiểu về deep learning. Hi vọng bạn sẽ áp dụng những kiến thức được ICANTECH chia sẻ ở trên để áp dụng cho chương trình của mình. 

Cảm ơn bạn đã đọc bài viết, nếu bạn đang quan tâm đến học lập trình online thì hãy tham khảo ngay các khóa học lập trình dưới đây tại ICANTECH nhé

Nguồn ảnh: ICANTECH.

Share
Tags
Lập trình chung

Bài tương tự