TensorFlow, một thư viện mã nguồn mở do Google phát triển, đã trở thành một cơng cụ mạnh mẽ trong việc xây dựng và triển khai các mơ hình học sâu deep learning phục vụ cho nhận diện ngơn
Các thư viện và module được sử dụng - - - S eee tree erent eeeetnaeeeeeeenaaes 9 1 Thư viện TensorFlow nh nh kg ng kh kh 9 2 Thur vién ốc dđidiiiiíí433434
Thư viện Numpy Ăn ng ng ng ng KH tk kh 14 1.2.4 Thư viện OpenCY err TH TT ng gà TK kh 17 CHƯƠNG II: XÂY DỰNG CHƯƠNG TRÌNH 0 2 2 2222222 exsxsrrxerrrrerree 22 2.1 M6 0 000 0T
1.2.3.1 Tổng quan về #z viện NumPy
NumPy (Numerical Python) là thư viện mã nguồn mở quan trọng cho khoa học dữ liệu và tính toán số trong Python Thư viện này hỗ trợ các mảng đa chiều (ndarray) và cung cấp nhiều hàm toán học để thao tác với chúng, giúp thực hiện các phép tính số học một cách nhanh chóng và hiệu quả.
Hinh 1.2.3.1 Thu vién NumPy (Numerical Python)
Thư viện NumPy mang lại nhiều ưu điểm như hiệu suất cao và khả năng xử lý nhanh chóng, tuy nhiên, nó cũng có nhược điểm là giới hạn trong việc hỗ trợ các kiểu dữ liệu đồng nhất.
Hồ trợ máng đa chiều (ndarray) Không phù hợp cho các phép toán quy nhỏ
7 viện hàm toán học và hàm sé da dat It hé tro tinh toan phan tan
Hồ trợ cho các phép toán đại số tuyến| Không hồ trợ cho thao tac dé liéu khén tính đồng nhát hoặc phức tạp
Kha năng tương tác tot voi cdc the viện | Yêu cầu kiến thức cơ bán về đại số tuyê khác tính và số học
Bảng 1.2.3.2 Các ưu nhược điểm của thư viên NumPy
1.2.3.2 Chức măng của thư viện NumDy Thư viện NumPy là một thư viện cơ bản và quan trọng trong Python, đặc biệt hữu ích cho khoa học đữ liệu, tính toán khoa học, và phát triển các ứng dụng máy học NumPy cung câp một tập hợp các chức năng mạnh mẽ đê làm việc với mảng số học (array) và các phép toán trên mảng Dưới đây là các chức năng chính của thư viện NumPy:
NumPy cung cấp khả năng tạo ra các mảng một chiều, hai chiều và nhiều chiều (ndarray) một cách đơn giản Người dùng có thể dễ dàng tạo mảng từ danh sách Python, các giá trị cố định như 0 và 1, hoặc từ các phân phối xác suất.
NumPy hỗ trợ các thao tác chỉ mục và cắt mảng phức tạp, giúp người dùng dễ dàng truy cập và thay đổi các phần tử trong mảng.
NumPy hỗ trợ các phép toán số học như cộng, trừ, nhân và chia trên mảng với hiệu suất cao và cú pháp đơn giản, giúp cải thiện hiệu suất bằng cách tránh sử dụng vòng lặp trong Python Ngoài ra, NumPy cung cấp các hàm để thực hiện các phép toán ma trận như nhân ma trận, chuyển vị, tính định thức và nghịch đảo ma trận.
Hàm thống kê trong NumPy cung cấp nhiều chức năng quan trọng như tính trung bình (mean), phương sai (var), độ lệch chuẩn (std), tổng (sum), tích (prod), giá trị lớn nhất (max) và giá trị nhỏ nhất (min).
Hàm toán học: Bao gồm các hàm như lượng giác (sin, cos, tan), mu (exp), logarit (log), can bac hai (sqrt), v.v
Broadcasting trong NumPy là tính năng cho phép thực hiện phép toán trên các mảng có kích thước khác nhau Tính năng này tự động mở rộng mảng nhỏ hơn để phù hợp với kích thước của mảng lớn hơn, giúp đơn giản hóa quá trình tính toán và tối ưu hóa hiệu suất.
Bang 1.2.3.2 Các chức năng của the vién NumPy Cac module sw# dung trong thir vién Numlpy Thư viện NumPy bao g6m nhieu module, m6i module cung cap cac chire nang khác nhau đề thao tác với mảng và thực hiện các phép toán khoa học Dưới đây là một số module chính của NumPy:
Module numpy.core là phần cốt lõi của NumPy, bao gồm các lớp và hàm cơ bản như ndarray, các loại dữ liệu (dtype) và các phép toán cơ bản trên mảng Ngoài ra, numpy.linalg cung cấp các hàm liên quan đến đại số tuyến tính, hỗ trợ người dùng trong việc thực hiện các phép toán phức tạp trên mảng.
Module này cung cấp các công cụ mạnh mẽ cho đại số tuyến tính, bao gồm các phép toán ma trận, tính định thức, giá trị riêng và phân rã ma trận.
Module này cung cấp hỗ trợ cho các phép biến đổi Fourier nhanh (FFT) và các biến thể của chúng, đóng vai trò quan trọng trong xử lý tín hiệu số.
Module này cung cấp các công cụ để làm việc với đa thức, bao gồm việc tạo, đánh giá và thực hiện các phép toán trên đa thức Nó hỗ trợ nhiều lớp đa thức như Polynomial, Chebyshev, Legendre, Laguerre và Hermite Ngoài ra, numpy.random là module dùng để sinh số ngẫu nhiên và các mảng ngẫu nhiên.
Nó cung cấp các hàm tạo màu ngẫu nhiên từ các phân phối xác suất khác nhau, bao gồm phân phối chuẩn, phân phối đều, phân phối nhị thức và nhiều loại khác.
Bang 1.2.3.3 Cac module sử dụng trong thư viện NuinPy
1.2.4.1 Tổng quan về #z viện OpenCV
OpenCV (Thư viện Thị giác Máy tính Mã nguồn Mở) là một thư viện phổ biến cho xử lý ảnh và thị giác máy tính Thư viện này cung cấp nhiều công cụ và thuật toán hữu ích cho việc phân tích, nhận dạng, và xử lý hình ảnh cũng như video.
Hình 1.2.4.1 Thu vién OpenCV (OpenSource Computer Vision Library) Dưới đây là các ưu điểm và nhuge diém của thư viện OpenCV: Ưu điểm Nhược điễm
Mã nguồn mở và miên phí Độ phức tạp và đường cong học táp cao
Pa nên tảng và linh hoạt Giới hạn trong xz lý học sâu
Hiệu suát cao và tới ưu hóa rốt Quan lý bó nhớ th¿ công
Thư viện phong phú và đa dạng thuạt| Hạn chế trong xz lý âm thanh và video ph toán tạp
Tích hợp dể dàng với các ngôn ngữ l¿ Không hố trợ phân tích dz liệu nâng cao trình
Bảng 1.2.4.1 Các ưu nhược điểm của thư viện QpenCV
Xử lý ngôn ngữ tự nhiên (Natural Language Processing) là gì?
Hệ thống Xử lý ngôn ngữ tự nhiên (NLP) nhằm phân tích và "hiểu" ngôn ngữ con người, bao gồm việc nhận dạng giọng nói, hiểu bối cảnh và tạo phản hồi ngôn ngữ tự nhiên Với sự hỗ trợ của các thuật toán phức tạp, NLP đang định hình lại cách chúng ta tương tác với thế giới, mở ra cơ hội cho các trợ lý kỹ thuật số, chatbot và tìm kiếm bằng giọng nói Mặc dù chúng ta đã đạt được nhiều tiến bộ đáng kể trong công nghệ này, vẫn còn nhiều thách thức cần vượt qua.
Mặc dù NLP chưa đạt được sự phát triển không giới hạn, các nhà phát triển vẫn đang đối mặt với nhiều thách thức Tuy nhiên, chúng ta đã bắt đầu tìm ra những giải pháp khả thi Một trong những vấn đề chính mà họ gặp phải là sự khác biệt về ngôn ngữ, đặc biệt là tại Hoa Kỳ, nơi phần lớn dân số sử dụng tiếng Anh.
Nếu bạn muốn tiếp cận đối tượng quốc tế và đa văn hóa, việc cung cấp hỗ trợ đa ngôn ngữ là điều cần thiết.
Các ngôn ngữ khác nhau không chỉ có từ vựng phong phú mà còn có cấu trúc cụm từ, chế độ biến tố và kỳ vọng văn hóa đa dạng Để giải quyết vấn đề này, bạn có thể sử dụng các mô hình "phô quát" nhằm chuyển giao một phần kiến thức sang các ngôn ngữ khác Tuy nhiên, việc đào tạo lại hệ thống NLP cho từng ngôn ngữ vẫn là điều cần thiết.
Dữ liệu đào tạo là yếu tố quan trọng trong việc phát triển hệ thống NLP, vì khả năng của nó phụ thuộc vào chất lượng dữ liệu được cung cấp Để đạt được sự thành thạo trong ngôn ngữ, cả con người và AI đều cần thời gian dài để tiếp xúc với ngôn ngữ đó Thời gian phát triển cho một hệ thống NLP cũng cần được xem xét kỹ lưỡng, bởi việc xử lý hàng triệu điểm dữ liệu có thể mất rất nhiều thời gian nếu không sử dụng phần cứng mạnh mẽ Sử dụng mô hình học sâu phân tán và nhiều GPU có thể giúp rút ngắn thời gian đào tạo Hệ thống NLP cần khả năng tìm kiếm ngữ cảnh để hiểu rõ ý nghĩa trong các diễn đạt mơ hồ, đồng thời có thể yêu cầu người dùng làm rõ ý kiến của họ Cuối cùng, lỗi chính tả, mặc dù đơn giản với con người, vẫn là thách thức đối với hệ thống NLP, đòi hỏi khả năng liên kết từ viết sai chính tả với từ đúng.
Để xác định lỗi chính tả trong văn bản, đặc biệt là khi sử dụng máy móc, bạn cần một công cụ NLP có khả năng nhận diện các lỗi phổ biến Việc này sẽ giúp bạn vượt qua những trở ngại trong việc chỉnh sửa văn bản.
Các công cụ NLP có thể mang theo những thành kiến từ lập trình viên và dữ liệu đào tạo, dẫn đến việc khai thác hoặc củng cố các thành kiến xã hội nhất định Điều này có thể tạo ra trải nghiệm khác nhau cho các nhóm người dùng Hơn nữa, ngôn ngữ không hoàn hảo và chứa nhiều từ có nghĩa khác nhau, như câu hỏi "bạn khỏe không" và "làm thế nào để thêm thẻ tín dụng mới" có mục đích khác nhau, đòi hỏi NLP phải hiểu ngữ cảnh Ngoài ra, một số cụm từ có nhiều ý định, như "Tôi cần hủy đơn hàng trước đó và cập nhật thẻ trong hồ sơ", yêu cầu hệ thống NLP phân biệt rõ ràng các ý định riêng biệt.
24 e_ Kết qua dwong tinh gia va su khong chac chan
Kết quả dương tính giả trong NLP xảy ra khi hệ thống không thể hiểu hoặc giải quyết một cụm từ đơn giản Để khắc phục vấn đề này, cần phát triển một hệ thống NLP có khả năng nhận diện những hạn chế của nó và áp dụng các câu hỏi hoặc lời nhắc để mở rộng khả năng trả lời.
Nhiều ứng dụng NLP hiện đại được phát triển dựa trên khả năng duy trì cuộc trò chuyện giữa con người và máy móc Để đạt được điều này, AI NLP cần có khả năng duy trì giao tiếp, đặt thêm câu hỏi nhằm thu thập thông tin bổ sung và luôn hướng tới việc cung cấp giải pháp hiệu quả.
Thuật toán và tập dữ liệu ch ng kh kết 25 2.1.3 InpUt & OU[DUI TT HH TH TH TH HH KH kg 25 2.1.4 _ Quy trình bài tOÁP c LH KH KH kg KH tk hykt 26 2.2 Mô hình thuật toán sử dụng cho bài toán - che 27 2.1.1 Convolution là GÌ? - ch TH Tnhh KH kh ĐH KH 27 Vậy tính tích chập để làm gì? S522 2tS St xe 3S 2xx sxrxerrrrerrre 27 2.1.3 Mạng nơ-ron tích chập là gÌ? nh nh kh kh kh 29 2.1.4 CNN áp dụng như thế nào vào nhận diện ngôn ngữ tự nhiên (NLP)?
Đề tài nhận diện chữ viết tay là một bài toán cơ bản trong trí tuệ nhân tạo và học máy, với mục tiêu phát triển mô hình nhận diện và phân loại chữ viết tay thành các lớp từ A-Z Hệ thống sẽ sử dụng mô hình mạng nơ-ron tích chập (CNN) kết hợp với Tensorflow và Keras để thực hiện nhiệm vụ này Mạng nơ-ron tích chập, phổ biến trong nhận dạng và xử lý hình ảnh, được thiết kế đặc biệt để xử lý dữ liệu pixel, chính vì vậy hệ thống sẽ xây dựng mô hình CNN để nhận dạng ký tự hiệu quả.
Bộ dữ liệu "A_Z Handwritten Data.csv" do Sachin Patel cung cấp chứa 372450 hình ảnh của bảng chữ cái tiếng Anh, với kích thước mỗi hình ảnh là 28x28 pixel.
Input Output e Mot hinh anh 28x28 thang dé xam cua một ký tự viết tay (ví dụ một chữ A-
2) e Hinh ảnh được biểu diễn dưới dạng một mảng 2D của gia tri pixel, trong
Một nhãn lớp dự đoán (ví dụ "A", "B",
"C" etc.) tương ứng với ký tự viết tay trong hỉnh ảnh đầu vào
Nhãn lớp dự đoán được biểu diễn dưới dạng một chuỗi hoặc một chỉ số (ví dụ
25 đó mối giá trị pixel là một sô thực grữa
Bảng 2.1.1 Bảng mô ta Input & Output cia bai todn
1) Xử lý dữ liệu Tải tập dữ liệu và chuyên đôi nó thành định dạng phủ hợp cho việc đảo tạo
Chia tập dữ liệu thành hai phần: tập đào tạo (80%) và tập kiểm tra (20%)
Chuyên đổi dữ liệu thành ảnh 28x28x1
Chuẩn hóa dữ liệu bằng cách chuyên đổi nó thành float32
2) Kiến trúc mô hình Sử dụng mạng nơ-ron tích chập (CNN) để nhận diện các mẫu trong chữ viết tay
Mô hình bao gồm nhiều lớp tích chập và lớp gộp tối đa, sau đó là các lớp flatten và lớp dày
Lớp đầu ra có 26 nơ-ron, mỗi nơ-ron tương ứng với một lớp (A-Z)
3) Đào tạo mô hình Đào tạo mô hình sử dụng thuật toán Adam và hàm mất mát entropy chéo phân loại Đào tạo mô hỉnh trong I epoch với kích thước lô là
Theo dõi độ chính xác và mất mát trên tập kiểm tra trong quá trình đảo tạo
4) Đánh giá mô hình Đánh giá mô hình trên tập kiểm tra và tính toán độ chính xác và mật mát Kiểm tra mô hình trên một ảnh
26 chữ viết tay riêng biệt dé chứng minh khả năng nhận diện của mô hình
Bang 2.1.2 Bang m6 ta QUY trình bài toán
2.2.Mô hình thuật toán sử dụng cho bài toán
Khi nhắc đến Mạng Nơ-ron Tích chập (CNNs), chúng ta thường liên tưởng đến Thị giác Máy tính, vì CNNs đóng vai trò quan trọng trong việc phân loại hình ảnh và là nền tảng của hầu hết các ứng dụng Thị giác Máy tính hiện nay, từ tự động gán thẻ trên Facebook đến lái xe tự động Gần đây, CNNs cũng đã được áp dụng trong xử lý ngôn ngữ tự nhiên, mang lại nhiều kết quả ấn tượng.
Cach dé hiéu nhat vé "Convolution" la no giéng nhu một cửa sô truot (Sliding Windows) dưới một ma trận Bạn có thê xem bên dưới:
Image patch Kernel (Local receptive field) (filter)
Hình 2.1.1 minh họa hoạt động của Convolution, trong đó ma trận bên trái là một ảnh trắng đen với các giá trị từ 0 (đen) đến 1 (trắng), mỗi giá trị tương ứng với một điểm ảnh Sliding Windows là ma trận nhỏ hơn, thường được gọi là kernel, filter hoặc feature detector, trong ví dụ này có kích thước 3x3 Tiến hành tính tích chập bằng cách nhân từng phần tử trong ma trận 3x3 với ma trận đầu vào bên trái, kết quả thu được sẽ là một ma trận mới, được gọi là Convolved Feature.
2.1.2 Vậy tính tích chập để làm gì?
Chúng ta thực hiện điều này với hai mục đích: đầu tiên, để làm mờ bức ảnh ban đầu; thứ hai, nếu chúng ta tính giá trị trung bình của mỗi điểm ảnh trung tâm với các điểm lân cận, điều này sẽ giúp cải thiện chất lượng hình ảnh.
Quá trình xử lý ảnh bằng cách nhận diện các đường cạnh là rất quan trọng để tạo ra kết quả trung bình, giúp làm nổi bật các đặc trưng của từng khối Bằng cách thêm hoặc loại bỏ các giá trị bằng 0 trong ma trận, chúng ta có thể xác định các đường nét Nếu hình dung đây là một đường nét, giá trị điểm ảnh tại các vị trí trên đường nét sẽ cao, dẫn đến sự khác biệt về màu sắc giữa trắng (1) và đen (0) trong ma trận, từ đó cho ra kết quả ảnh sau khi biến đổi giá trị.
2.1.3 Mạng nơ-ron tích chập là gì?
CNNs, hay Mạng Nơ-ron Tích Chập, là một cấu trúc mạng bao gồm nhiều lớp Convolution chồng lên nhau, sử dụng các hàm phi tuyến tính như ReLU và tanh để xử lý và phân tích dữ liệu.
Trong mô hình mạng nơ-ron truyền ngược (Feedforward neural network), mỗi nơ-ron đầu vào được kết nối với tất cả nơ-ron đầu ra của lớp kế tiếp, tạo thành một mạng liên kết đầy đủ.
Input Hidden Output layer layer layer
Hình 2.1.3 Sơ đồ mô tả hoạt động của các Lớp trong CNNs
Trong mạng nơ-ron tích chập (CNN), chúng ta sử dụng các phép tích chập tại lớp đầu vào để tính toán đầu ra, với hàng trăm đến hàng ngàn bộ lọc khác nhau được áp dụng tại mỗi lớp Kết quả từ các bộ lọc này được tổng hợp lại, trong khi các lớp pooling giúp giảm thiểu số lượng đầu vào cho lớp tiếp theo Trong quá trình huấn luyện, CNN tự học để nhận diện các đường cạnh từ các pixel ở lớp đầu tiên, sau đó nhận biết các hình khối đơn giản từ những đường cạnh này ở lớp tiếp theo, cho đến khi có thể nhận diện các thực thể phức tạp hơn Lớp cuối cùng được sử dụng để trích xuất các kết quả nhận diện cao nhất.
2.1.4 CNN áp dụng như thế nào vào nhận diện ngôn ngữ tự nhiên (NLP)? CNNs trông chỉ phù hợp với Computer Vision, vậy làm sao áp dụng nó trong việc xử lí ngôn ngữ tự nhiên? Thay vì lnput đầu vào là các điểm ảnh trong Computer Vision, đầu vào của phân tích ngôn ngữ tự nhiên là các mệnh đề, các văn bản được biểu diễn như một ma trận
Mỗi dòng trong một ma trận biểu thị cho một mã, thường là từ hoặc ký tự, với mỗi hàng đại diện cho một vector từ Các vector này thường được thể hiện ở dạng thấp như word2vec hoặc Glove, hoặc có thể được đánh chỉ số theo một bộ từ vựng Khi ánh xạ nhiều chiều một câu, chúng ta tạo ra một ma trận nhiều chiều, biến đổi thành input image Trong NLP, các bộ lọc thường trượt qua tất cả các dòng của ma trận (các từ) để xử lý thông tin.
Bộ lọc của chúng ta có độ rộng bằng độ rộng của ma trận, trong khi chiều dài có thể thay đổi, thường từ 2 đến 5 từ Như vậy, bạn đã có thể hình dung rõ ràng về việc áp dụng CNNs vào lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
Chúng ta sẽ xem mô tả hình bên dưới để dé hình dung hơn nữa nhé
30 ị activation function convolution 1-max softmax function oolin regularization Ỷ P 3) A inthis layer
3 region sizes: (2,3,4) 2 feature —— Ỷ Sentence matrix 2 filters for each region maps for 6 univariate 2 classes totally 6 filters region size concatenated together to form a single feature vector like this movie very much
Hình 2.1.4 Sơ đô mô tả quá trình CNNs nhận dạng chữ viết
Bài viết mô tả quy trình xử lý một ma trận đầu vào với câu "Tôi rất thích bộ phim này!" thông qua các bước phân tích Đầu tiên, ma trận có kích thước 5x7 sẽ được chia thành các vùng với kích thước width-7 và chiều cao tùy biến (2, 3, 4) Mỗi vùng sẽ áp dụng 2 bộ lọc, dẫn đến 6 đầu ra sau bước convolution đầu tiên Tiếp theo, quá trình max-pooling sẽ được thực hiện để tìm đặc trưng cao nhất cho mỗi vùng, tạo ra 3 đầu ra cho lớp thứ hai Cuối cùng, chúng ta sẽ biến đổi 3 vector đơn này thành một vector chung cho chức năng phân tích, và sử dụng softmax để đưa ra 2 lớp đầu ra cuối cùng.
Các mô hình phù hợp nhất với CNNs thường được sử dụng trong các chức năng phân loại như Phân tích Cảm xúc, Phát hiện Spam và Phân loại Chủ đề Như đã đề cập, quá trình Convolution và Pooling có thể làm mất thông tin về vị trí xuất hiện của từ, vì vậy việc gán thẻ theo thứ tự là rất quan trọng.
Các lớp CNN được xây dựng trong bài toán Ăn nhnnnhehhheee 32 2.3 Mô tả quá trình đào tạo máy với CNNs và Tensorflow
e© Kích thước hạt nhãn: 3x3 e Ham kich hoat: ReLU (Rectified Linear Unit) e L6p Conv2D dau tién 4p dung 32 bé loc vao hinh anh dau vào, kết quả là 32 bản đồ đặc trưng
Lớp MaxPool2D 1 với kích thước lấy mẫu 2x2 và bước lấy mẫu 2 thực hiện việc lấy mẫu các bản đồ đặc trưng bằng cách chọn giá trị tối đa trong mỗi vùng 2x2.
Số bộ lọc: 64 e© Kích thước hạt nhãn: 3x3 e© Hàm kích hoạt: ReLU
Lớp Conv2D 2: e Lớp Conv2D thứ hai áp dụng 64 bộ lọc vào kết quả của lớp
Lớp MaxPool2D đầu tiên tạo ra 64 bản đồ đặc trưng Lớp MaxPool2D thứ hai sử dụng kích thước lấy mẫu 2x2 và bước lấy mẫu 2, tiến hành lấy giá trị tối đa từ mỗi vùng 2x2 của các bản đồ đặc trưng.
Lớp Conv2D 3: Số bộ lọc: 128
Kích thước hạt nhân được sử dụng là 3x3 với hàm kích hoạt ReLU Lớp Conv2D thứ ba áp dụng 128 bộ lọc cho kết quả của lớp MaxPool2D thứ hai, tạo ra 128 bản đồ đặc trưng Lớp MaxPool2D thứ ba có kích thước lấy mẫu là 2x2.
Bước lấy mẫu: 2 Lớp MaxPool2D thứ ba lấy mẫu các bản đồ đặc trưng băng cách lấy giá trị tối đa trên mỗi vùng 2x2
Lớp Flatten: Lớp Flatten phẳng hóa kết quả của lớp MaxPool2D thứ ba thành một vectơ đặc trưng ID
Lớp Dense 1: Số đơn vị: 64
Hàm kích hoạt: ReLU Lớp Dense đầu tiên bao gồm 64 đơn vị với hàm kích hoạt
Lớp Dense 2: Số đơn vị: 128
Hàm kích hoạt: ReLU Lớp Dense thứ hai bao gồm 128 đơn vị với hàm kích hoạt
Hàm kích hoạt: Softnax Lớp Dense thứ ba bao gồm 26 đơn vị với hàm kích hoạt softmax, trong đó mối đơn vị đại diện cho một xác suất lớp
Bảng 2.2.1 Bảng mô tả các lớp của thuật toán CNN
Mô hình được đào tạo trên tập dữ liệu các ký tự viết tay, với mỗi ký tự được biểu diễn dưới dạng hình ảnh grayscale 28x28 Quá trình đào tạo nhằm giảm thiểu hàm mất mát cross-entropy giữa xác suất dự đoán và nhãn thực Sử dụng CNNs và TensorFlow, quá trình đào tạo máy được thực hiện để tối ưu hóa hiệu suất nhận diện ký tự.
1 Đọc bộ đữ liệu Bây giờ chúng ta sẽ đọc tập đữ liệu của mình là tệp csv bằng phương thức pandas read csv() Chung ta sé doc đữ liệu đưới dạng kiểu dữ liệu float32 vì tệp csv rất lớn và sẽ tốt hơn nếu đọc dưới dạng float: data = pd.read_csv(r"datas/A_Z Handwritten Data.csv").astype('fLoat52') print(data.head(10))
0.0 0.0 0.0 0.0 0.0 09.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 09.0 0.0 0.0 0.0 0.0 œ oo oO 020 CC C CC C â œ ơ1 ⌜ ƯŒ h ƠI hồ B @ oo oO 02 0 C CC CC C oo ĐC CC 0 C CC CC C oo o CC 020000 0 oo ĐC CC CC 0 0 CC âđ oo o CC CC 00 O20
2 Phân chia đữ liệu Tiếp tục phân chia dữ liệu thành X và y Trong đó X sẽ chứa hình ảnh ký tự và y sẽ chứa nhãn của hình ảnh đó
3 Thuc hién Split bang Sklearn Hãy thực hiện train test split trén X va y, để có được đữ liệu đào tạo (X_ train, y_train) va thử nghiệm (x test, y_ test) train_x, test_x, train_y, test_y = train_test_split(X, y, test_size=0.2)
4 Định hình lại dữ liệu đào tạo và thử nghiệm Trong phần nảy, định hình lại dữ liệu hình ảnh đào tạo và thử nghiệm bằng numpy, đề có thê hiển thị dưới đạng hình ảnh, vì ban đầu trong tệp csv, chúng có trong 784 cột dit liéu pixel Vi vậy, chúng tôi chuyền đôi chúng thành 28x28 pixel
34 train_x = np.reshape(train_x.values, (train_x.shape[9], 28, 28)) test_x = np.reshape(test_x.values, (test_x.shape[0], 28, 28)) train_x.shape
5 Tron dit liéu dao tao
Sau khi định hình lại dữ liệu, hãy tiến hành trộn dữ liệu để quan sát các ký tự đã được trộn lẫn Sử dụng hàm `shuffle(train_x[:100])` để thực hiện việc này Tiếp theo, tạo một biểu đồ với kích thước 10x10 bằng cách sử dụng `fig, ax = plt.subplots(3, 3)`, sau đó làm phẳng các trục biểu đồ bằng cách gọi `axes = ax.flatten()` Cuối cùng, lặp qua 9 lần để hiển thị các kết quả.
_, shu = cv2.threshold(shuff[i], 30, 200, cv2.THRESH_BINARY) axes[i].imshow(np.reshape(shuff[i], (28, 28)), cmap="Greys") plt.show()
6 Hinh dung dit liéu dao tao
Hãy hình dung dữ liệu đào tạo và kiểm tra xem chúng ta đã chuyển đổi thành công thành hình ảnh hay chưa Sử dụng mã lệnh fig, ax = plt.subplots(3, 3, figsize=(10, 19)) để tạo ra một lưới hình ảnh 3x3 Các trục được lưu trữ trong biến axes bằng cách sử dụng ax.flatten() Chúng ta sẽ lặp qua 9 lần để hiển thị kết quả.
-, Shu = cv2.threshold(shuff[i], 39, 209, cv2.THRESH_BINARY) axes[ 1] inshow(np neshape(shuff[i], (28, 28)), cmap="&reys") plt.show()
7 Một lân nữa định hình lại dữ liệu Và Chuyên đổi sang _ categorical
Trong phần này, chúng tôi đã chuẩn bị dữ liệu hình ảnh để phục vụ cho việc đào tạo mô hình Hiện tại, chúng ta cần chuyển đổi các giá trị float đơn thành các giá trị phân loại bằng phương thức `to_categorical` mà TensorFlow và Keras cung cấp.
To reshape the training and testing data for a neural network, use the following code: `train_X = train_x.reshape(train_x.shape[0], train_x.shape[1], train_x.shape[2], 1)` and `test_X = test_x.reshape(test_x.shape[0], test_x.shape[1], test_x.shape[2], 1)` This process adjusts the dimensions of the datasets, ensuring they are compatible with the model's input requirements After reshaping, you can confirm the new dimensions by printing them: `print("New shape of train data: ", train_X.shape)` and `print("New shape of test data: ", test_X.shape)`.
New shape of train data: (297968, 28, 28, 1)
The new shape of the training data is (74490, 28, 28, 1), indicating a dataset consisting of 74,490 samples with dimensions of 28 by 28 pixels and a single color channel The training labels have been converted to a one-hot encoded format using `to_categorical`, resulting in a new shape of train_yOHE that corresponds to 26 classes Similarly, the test labels have also been one-hot encoded, producing a new shape for test_yOHE that reflects the same 26 classes.
New shape of train labels: (297969, 26)
New shape of test labels: (74490, 26)
In this article, we will develop a popular Convolutional Neural Network (CNN) model for image classification, which effectively extracts image features through multiple convolutional layers, also known as filter layers The model architecture begins with a Sequential model, adding layers such as Conv2D with 32 filters of size (3, 3) and ReLU activation, followed by MaxPooling2D for downsampling This is followed by additional Conv2D layers with 64 and 128 filters, incorporating both 'same' and 'valid' padding, and further MaxPooling2D layers The model is then flattened and includes two Dense layers with 64 and 128 units, culminating in a final Dense layer with 26 units and softmax activation for multi-class classification The model is compiled using an Adam optimizer with a learning rate of 0.001, categorical crossentropy as the loss function, and accuracy as a performance metric, ensuring a comprehensive summary of the model's structure.
Từ điên từ này tương ứng với khóa cua các giá trị của nó word_dict = {0:°A',1:°B',2:°C',3:'D',4:'E',5:'F',6:°G',7:'H',8:°1',9:'J*,10:'K*,122'L',122°M',13:°N',14:'0',15:'P*,16:'Q',17:'R',18:'S", 19: °T" ,20: "U°,21:'Y',22:"W",25:"X", 24:"Y",25:'Z"}
Hãy xem mô hình hoạt động như thế nào băng cách dự đoán các chữ cái có trong hình ảnh
In this article, we demonstrate how to visualize predictions from a neural network using Matplotlib We create a 3x3 grid of subplots with a specified figure size of 8 by 9 inches Each subplot displays a reshaped 28x28 image from the test dataset, utilizing a grayscale color map The predicted labels are derived from the one-hot encoded output, and each subplot is titled with the corresponding prediction Additionally, a grid is added to each subplot for better clarity.