GIỚI THIỆU
Giới thiệu về Artificial Neural Network
1.1.1 Lịch sử hình thành và phát triển
Mạng neuron nhân tạo (ANN) hay còn gọi là Neural Network, là một lĩnh vực khoa học có lịch sử phát triển đầy biến động Cuốn sách trực tuyến "A brief introduction to neural network" đã chỉ ra những mốc thời gian quan trọng trong quá trình hình thành và phát triển của mạng neuron.
Mạng nơ-ron được phát triển từ những năm 1940, cùng thời điểm với sự ra đời của lập trình máy tính điện tử Năm 1943, Warren McCulloch và Walter Pitts đã giới thiệu mô hình mạng nơ-ron, chứng minh rằng loại mạng đơn giản này có khả năng tính toán gần chính xác các hàm logic và toán học Đặc biệt, dưới sự hỗ trợ của Konrad Zuse, các thiết bị điện tử đầu tiên sử dụng mạng nơ-ron cũng đã được phát triển.
Năm 1949, Donald O Hebb đã phát triển công thức luật Hebbian, một quy tắc cơ bản cho quá trình học tập của mạng neuron Luật này cho rằng liên kết giữa hai neuron sẽ được củng cố khi cả hai đều được kích hoạt đồng thời Mặc dù Hebb tin tưởng vào tính chính xác của quy tắc này, ông không thể chứng minh nó do thiếu nghiên cứu về mạng neuron vào thời điểm đó.
Vào năm 1957-1958, tại MIT, Frank Rosenblatt và Charles Wightman cùng các đồng nghiệp đã phát triển thành công máy tính Mark I perceptron, sử dụng mạng neuron để nhận dạng các số đơn giản Máy tính này được trang bị cảm biến hình ảnh với độ phân giải 20x20 pixel và hoạt động dựa trên 512 chiết áp điều khiển động cơ, mỗi chiết áp đại diện cho một tham số có thể thay đổi trong mạng.
Năm 1959, Frank Rosenblatt đã phát triển perceptron trong mạng neuron, xây dựng công thức và chứng minh định lý gọi là định lý hội tụ perceptron Ông mô phỏng các lớp neuron giống như võng mạc, thiết lập các ngưỡng chuyển đổi và áp dụng một nguyên tắc học tập để điều chỉnh các tham số kết nối trong mạng.
Vào năm 1965, Nils Nilsson trong cuốn sách "Machine Learning" đã trình bày cái nhìn tổng quát về sự phát triển và những thành tựu đạt được trong nghiên cứu về mạng nơ-ron nhân tạo (ANN).
2 download by : skknchat@gmail.com trong thời kì này Nó được coi là lý thuyết cơ bản cho việc tự học của các trí thông minh nhân tạo [1].
Khoảng thời gian từ những năm 1970 đến giữa thập niên 1980 là giai đoạn trầm lặng cho nghiên cứu Neural Network do thiếu tài trợ và ít công bố, khiến các nhà nghiên cứu hoạt động riêng lẻ mà không có sự trao đổi Tuy nhiên, năm 1985 đánh dấu sự phục hưng của Neural Network khi John Hopfield giải quyết thành công bài toán Travelling Salesman Problem (TSP) bằng mạng Hopfield Bài toán TSP, liên quan đến việc tìm con đường ngắn nhất để thăm tất cả các thành phố và trở về điểm xuất phát, là một vấn đề quan trọng trong lĩnh vực khoa học máy tính.
Năm 1986, quy tắc học lan truyền ngược trong mạng neuron được phát triển và công bố, đánh dấu sự khởi đầu cho một cuộc bùng nổ trong nghiên cứu về Neural Network Từ thời điểm đó, lĩnh vực này đã chứng kiến sự gia tăng mạnh mẽ với nhiều nghiên cứu đa dạng và phong phú.
Mạng nơ-ron nhân tạo (Artificial Neural Network) là thuật ngữ chỉ các loại mạng nơ-ron khác nhau được phát triển qua nhiều giai đoạn Nhiều nghiên cứu đã giới thiệu các loại mạng nơ-ron nhân tạo đa dạng, và nguyên lý hoạt động chung của chúng được trình bày bởi tổ chức LSI Design Contest.
Não người có rất nhiều neuron, nó nhận tín hiệu đầu vào và tạo tín hiệu đầu ra.
Khi tay chạm vào vật nóng, tín hiệu nhiệt được truyền qua tế bào thần kinh đến tủy sống, dẫn đến phản xạ rút tay lại Mạng nơ-ron (Neural Network) là mô hình toán học mô phỏng hoạt động của hệ thần kinh con người, bao gồm ba lớp chính: lớp đầu vào, lớp ẩn và lớp đầu ra.
Cấu trúc 3 lớp của mạng nơ-ron được minh họa trong Hình 1.1, bao gồm lớp đầu vào, lớp ẩn và lớp đầu ra Đối với các mạng phức tạp hơn, có thể xuất hiện nhiều lớp ẩn.
3 download by : skknchat@gmail.com
Tín hiệu được đưa vào ở lớp (1) và đi ra ở lớp (3) Trước khi đưa tín hiệu vào
Giám sát viên (supervisor) là đầu ra kỳ vọng của mạng, với mục tiêu điều chỉnh các tham số trong mạng để giảm thiểu sai lệch giữa đầu ra thực tế và giám sát viên.
4 download by : skknchat@gmail.com
Hình 1.2 Cấu trúc 3 lớp với các tham số [2]
Hình 1.2 minh họa một mạng neuron với cấu trúc 3 lớp, bao gồm các tham số quan trọng như tín hiệu vào tại lớp đầu vào (t_i), trọng số (weight) nối từ lớp đầu vào đến lớp ẩn (w_ij^2), và độ lệch (bias) của lớp ẩn (b_2) Đầu vào của lớp ẩn được ký hiệu là z_i^2, trong khi đầu ra của lớp ẩn được ký hiệu là a_i^2 Tương tự, trọng số nối từ lớp ẩn đến lớp đầu ra được ký hiệu là w_ij^3, và độ lệch của lớp đầu ra là b_3 Đầu vào của lớp đầu ra là z_i^3, với đầu ra cuối cùng được ký hiệu là a_i^3 Cuối cùng, giám sát viên được đánh dấu với t_1 = 1 và t_2 = 0.
Mối liên hệ giữa các tham số trên được biểu diễn theo chiều thuận và chiều nghịch.
5 download by : skknchat@gmail.com
Theo chiều thuận, ta coi tín hiệu vào tại lớp đầu vào ( k i ), các weight và bias (
, b 2 i , , b 3 i ) là các số đã biết, mục tiêu là tính đầu ra a 3 i của lớp đầu ra theo các công thức (1.1), (1.2), (1.3) và (1.4). z 2 1 w 2 11 w 2 21 z 2 2 = w 2 12 w 2 22
Trong các công thức (1.2) và (1.4), bất kỳ hàm nào có khả năng phân biệt và chuẩn hóa đều có thể được sử dụng làm hàm kích hoạt Ví dụ, khi áp dụng hàm tansig, công thức (1.2) sẽ được chuyển thành (1.5).
6 w 3 ij w 2 ij download by : skknchat@gmail.com z
Các công thức (1.1), (1.2), (1.3), (1.4) trở thành:
Với mỗi vector K thứ n đưa vào lớp đầu vào ta sẽ tính được một hàm lỗi bình phương (square error function) như công thức (1.10)
Khi n đưa một vector vào lớp đầu vào, hàm giá (cost function) C được tính bằng tổng các hàm lỗi bình phương, theo công thức (1.11), với C n được xác định theo công thức (1.10).
7 download by : skknchat@gmail.com
Từ bây giờ chúng ta bắt đầu xây dựng công thức theo chiều nghịch sử dụng thuật toán lan truyền ngược (backpropagation) Từ các công thức (1.1), (1.2), (1.3), (1.4),
Giới thiệu về FPGA
Field Programmable Gate Array (FPGA) là một loại mạch tích hợp cho phép cấu hình và lập trình các khối bên trong cũng như các liên kết giữa chúng Kỹ sư có thể tùy chỉnh FPGA để thực hiện nhiều tác vụ phức tạp, mang lại tính linh hoạt cao trong thiết kế và ứng dụng.
Một số thiết bị FPGA có khả năng lập trình một lần, được gọi là OTP (one-time programmable), trong khi những thiết bị khác cho phép lập trình nhiều lần Cách triển khai của các thiết bị này quyết định tính năng lập trình của chúng.
Cái tên "field programmable" trong FPGA chỉ việc lập trình thiết bị tại hiện trường, khác với việc thiết bị đã được lập trình sẵn bởi nhà sản xuất Điều này cho phép FPGA được lập trình trong phòng thí nghiệm và thay đổi chức năng ngay cả khi đã được triển khai trong hệ thống điện tử thực tế Khi một thiết bị có khả năng lập trình mà vẫn giữ nguyên vị trí trong hệ thống cao cấp hơn, nó được gọi là ISP (in-system programmable).
FPGA được cấu tạo từ các khối logic có thể lập trình, được gọi là CLB (configurable logic block) Mỗi CLB bao gồm một số LUT (look up table) và các thanh ghi (registers).
Vào những năm 1960, thiết kế mạch điện tử chủ yếu dựa trên sơ đồ nguyên lý, với việc vẽ tay và kiểm chứng timing được thực hiện thủ công, dẫn đến quy trình rất tốn thời gian Để cải thiện hiệu quả, vào những năm 1970, các công cụ mô phỏng đã được phát triển, cho phép kỹ sư mô tả mạch dưới dạng file text ở mức độ cổng logic, gọi là gate-level netlist Năm 1984 đánh dấu sự ra đời của các thiết bị FPGA đầu tiên, được thiết kế theo luồng schematic-based flow.
11 download by : skknchat@gmail.com
Hình 1.4 Thiết kế FPGA theo schematic-based flow [4]
Các kỹ sư sử dụng phần mềm để thiết kế sơ đồ mạch và tạo ra danh sách netlist cấp cổng Bước ánh xạ, hay mapping, liên quan đến việc kết nối các thực thể trong netlist với các LUT có sẵn trong thiết bị Mỗi LUT có khả năng đại diện cho nhiều cổng logic, cho phép ánh xạ nhiều cổng logic liên kết trong netlist vào một LUT duy nhất, như minh họa trong Hình 1.5, nơi một nhóm cổng logic được ánh xạ vào một LUT với ba đầu vào.
Hình 1.5 Mapping các cổng logic vào LUT [4]
12 download by : skknchat@gmail.com
Việc mapping trong thiết kế rất phức tạp do có nhiều phương pháp chia nhỏ thiết kế Sau đó, quá trình packing diễn ra, trong đó các LUT và thanh ghi được gói vào các CLB Cuối cùng, bước place-and-route đảm bảo rằng các CLB được đặt ở vị trí hợp lý.
Để kiểm tra xem các kết nối trong mạch có đáp ứng yêu cầu về timing hay không, chúng ta sử dụng phương pháp phân tích thời gian tĩnh (static timing analysis) để đánh giá độ trễ của các đường trong mạch, từ đó tạo ra các file kết quả tương ứng.
Phân tích thời gian và báo cáo thời gian là tài liệu quan trọng liên quan đến thời gian thiết lập, thời gian giữ, đường đi quan trọng và một số tham số khác Đối với thanh ghi, dữ liệu được đồng bộ hóa theo sườn lên của đồng hồ; thời gian thiết lập là khoảng thời gian tối thiểu mà đầu vào dữ liệu phải ổn định trước sườn lên của đồng hồ, trong khi thời gian giữ là khoảng thời gian tối thiểu mà đầu vào dữ liệu phải không thay đổi sau sườn lên của đồng hồ Đường đi quan trọng là con đường từ một đầu vào đến một đầu ra có độ trễ lớn nhất.
A gate-level netlist for simulation is a file that describes a circuit at the cell level for simulation purposes This gate-level netlist differs from the one generated during the previous mapping step.
SDF for simulation là file chứa thông tin về timing của từng cell trong gate-level netlist for simulation.
Today, FPGA manufacturers provide pre-built tools that encompass all essential steps, including schematic capture, gate-level netlist, mapping, packing, place-and-route, along with timing analysis.
1.2.3 HDL-based flow Đến khoảng cuối những năm 1980, các thiết kế không ngừng phát triển về kích thước và độ phức tạp, khiến cho việc thiết kế theo schematic-based flow không đáp ứng đủ nhu cầu bởi việc tưởng tượng, debug, hiểu, bảo trì,… một mạch ở cấp độ gồm toàn những cổng logic cơ bản là một điều rất khó khăn Do đó người ta phát minh ra một thứ có thể mô tả mạch ở mức độ trừu tượng hơn, gọi là hardware discription language (HDL), nghĩa là ngôn ngữ mô tả phần cứng [4].
13 download by : skknchat@gmail.com
Hình 1.6 Thiết kế FPGA theo HDL-based flow [4]
Thiết kế FPGA theo luồng HDL-based được minh họa trong Hình 1.6, cho thấy việc sử dụng ngôn ngữ mô tả phần cứng để mô tả mạch ở mức độ thanh ghi (RTL) Quá trình mô phỏng logic giúp kiểm chứng chức năng của mạch, trong khi logic synthesis chuyển đổi mô tả RTL thành các cổng logic cơ bản trong gate-level netlist Các bước mapping, packing, và place-and-route vẫn giữ nguyên như trong luồng thiết kế dựa trên sơ đồ.
Currently, Quartus and Xilinx tools can automatically perform logic synthesis, mapping, packing, and place-and-route processes without human intervention.
14 download by : skknchat@gmail.com
Giới thiệu về SystemVerilog
SystemVerilog là một ngôn ngữ mô tả phần cứng (HDL) được phát triển từ Verilog-2005, tích hợp nhiều tính năng từ các ngôn ngữ lập trình như C, C++ và Superlog Ngôn ngữ này cung cấp các đặc điểm hỗ trợ việc viết các mô hình phần cứng có khả năng tổng hợp (synthesis) hiệu quả.
- Có kiểu dữ liệu interface để đóng gói sự giao tiếp và kiểm tra giao thức giữa các khối trong thiết kế.
- Có các kiểu dữ liệu giống như C, ví dụ như int.
- Có kiểu dữ liệu người dùng tự định nghĩa là typedef.
- Có thể ép kiểu dữ liệu.
- Có kiểu dữ liệu là package được chia sẻ bởi nhiều khối thiết kế.
- Có lựa chọn ưu tiên hoặc duy nhất trong case.
- Có thể truyền tham chiếu trong task, function hoặc module.
SystemVerilog kết hợp nhiều ưu điểm của các ngôn ngữ mô tả và kiểm chứng phần cứng, mở rộng từ Verilog, mang lại khả năng xây dựng và mô phỏng RTL mạnh mẽ Do đó, tôi đã chọn SystemVerilog làm ngôn ngữ thiết kế cho sản phẩm trong đồ án này.
Giới thiệu về mô hình FSMD
FSMD là sự kết hợp giữa FSM và mạch tuần tự thông thường, trong đó mạch tuần tự được gọi là data path, với chữ D trong FSMD đại diện cho data path FSM, thường được xem như control path, theo dõi các yêu cầu bên ngoài và trạng thái của mạch để đưa ra lệnh hoạt động cho mạch tuần tự FSMD được áp dụng để triển khai các hệ thống mô tả ở mức RTL, nơi dữ liệu được di chuyển giữa các thanh ghi Sơ đồ khối của FSMD được thể hiện trong Hình 1.7.
15 download by : skknchat@gmail.com
Hình 1.7 Sơ đồ khối của FSMD [6]
Sơ đồ khối FSMD, như hình 1.7, được chia thành hai phần chính: data path và control path Phần data path có chức năng vận chuyển dữ liệu giữa các thanh ghi và bao gồm nhiều khối con khác nhau.
- Data registers: chứa các kết quả trung gian trong việc tính toán.
- Functional units: thực hiện các hàm để tính toán với dữ liệu.
- Routing network: phân luồng dữ liệu giữa data registers và functional unit.
The control path generates control signals to manage the data path, while the data path produces internal status feedback for the control path It operates based on external commands and internal status to transition states and issue control signals The control path functions as a finite state machine (FSM), featuring a state register for the current state, next-state logic for determining the subsequent state, and output logic that produces control signals and external status based on the current state and commands The external status indicates the current state of the circuit.
Sản phẩm của đồ án này được phát triển dựa trên mô hình FSMD của Pong P Chu, với nền tảng lý thuyết đã được trình bày trước đó Chi tiết về thiết kế sẽ được đề cập trong phần tiếp theo.
16 download by : skknchat@gmail.com
Giới thiệu về kiểm chứng thiết kế
Mục đích của kiểm chứng thiết kế là đảm bảo thiết bị hoàn thành tất cả các nhiệm vụ theo yêu cầu kỹ thuật Kỹ sư kiểm chứng cần đọc và hiểu yêu cầu kỹ thuật, sau đó xây dựng kế hoạch kiểm chứng để tạo testbench, nhằm kiểm tra xem mã RTL có đáp ứng đúng các đặc điểm kỹ thuật hay không Kế hoạch kiểm chứng liên quan chặt chẽ đến yêu cầu kỹ thuật, mô tả các đặc điểm cần kiểm tra và phương pháp kiểm tra Testbench được sử dụng để đánh giá tính đúng đắn của thiết kế trong quá trình kiểm tra, được gọi là DUT (design under test).
- Thu nhận phản hồi từ DUT
- Kiểm tra sự đúng đắn
- Đo đạc tiến độ so với các mục tiêu đã đề ra
Trong quá trình phát triển testbench, một số bước có thể được tự động tạo ra, trong khi những bước khác cần sự tùy chỉnh và xem xét từ người viết testbench.
Testbench có thể được xây dựng theo kiến trúc phân lớp như Hình 1.8.
Hình 1.8 Mô hình testbench đủ các lớp [7]
17 download by : skknchat@gmail.com
Hình 1.8 minh họa mô hình testbench với đầy đủ các lớp, tuy nhiên, một testbench có thể không cần tất cả các lớp này hoặc có thể bao gồm thêm một số lớp khác, tùy thuộc vào DUT cụ thể Chức năng của mỗi lớp trong hình được mô tả ngắn gọn, với chiều mũi tên chỉ ra hướng luồng dữ liệu.
Lớp Functional Coverage có vai trò quan trọng trong việc đo lường tiến độ kiểm chứng, xác định số lượng đặc điểm đã được kiểm tra theo kế hoạch Tuy nhiên, ngay cả khi đạt 100% độ bao phủ chức năng, thiết kế vẫn có thể chứa lỗi do kế hoạch kiểm chứng có thể không bao quát hết các tình huống phát sinh lỗi Do đó, việc cập nhật kế hoạch kiểm chứng mới là cần thiết để đảm bảo tính toàn diện Một kế hoạch kiểm chứng chỉ được coi là hoàn tất khi functional coverage đạt 100%.
- Lớp Generator tạo ra các stimulus ở cấp độ trừu tượng.
- Lớp Agent biến đổi các stimulus thành các lệnh ít trừu tượng hơn.
- Lớp Driver nhận lệnh từ Agent và biến đổi lệnh thành các tín hiệu logic để gán vào các input của DUT.
- Lớp Monitor thu nhận output của DUT.
- Lớp Checker biến đổi giá trị của output mà monitor thu được thành các giá trị ở mức trừu tượng hơn.
Lớp Assertion thực hiện kiểm tra tính hợp lệ về thời gian cho các giao thức của DUT, đảm bảo rằng các tín hiệu trong DUT thay đổi phù hợp với các quan hệ thời gian đã định.
- Lớp Scoreboard so sánh đầu ra với giá trị kỳ vọng.
- Lớp Environment là lớp bao gồm Generator, Agent, Driver, Monitor, Assertion, Checker và Scoreboard.
- Lớp Test điều khiển hoạt động của Environment.
- Khối DUT là thiết kế đang cần kiểm chứng.
Kết luận chương
Chương này cung cấp kiến thức tổng quát về Mạng Nơ-ron, FPGA, ngôn ngữ SystemVerilog, mô hình FSMD và quy trình kiểm chứng thiết kế, tạo nền tảng cho việc thiết kế và kiểm chứng trong các chương tiếp theo.
18 download by : skknchat@gmail.com
THIẾT KẾ NEURAL NETWORK VỚI MATLAB
Thuật toán thiết kế
Việc thiết kế được thực hiện theo lưu đồ thuật toán như Hình 2.1.
Hình 2.9 Lưu đồ thuật toán thiết kế trên Matlab
19 download by : skknchat@gmail.com
Sau khi đạt được độ chính xác trên 90% cho mạng, chúng ta tiến hành giảm kích thước của mạng và huấn luyện lại để kiểm tra độ chính xác Nếu sau 10 lần huấn luyện mà độ chính xác không đạt 90%, chúng ta sẽ dừng lại và chọn mạng gần nhất có độ chính xác trên 90% làm kết quả Điều này cho thấy việc huấn luyện nhiều lần là cần thiết để xác định kích thước nhỏ nhất của mạng mà vẫn duy trì độ chính xác mong muốn.
Mạng ban đầu được thiết lập với 100 nút ở lớp ẩn, và để giảm kích thước mạng, chúng ta giảm 5 nút ở lớp ẩn mỗi lần Cuối cùng, mạng đạt được kích thước 15 nút tại lớp ẩn.
Bước Huấn luyện Neural Network được trình bày trong phần 2.2 Bước kiểm tra cho Độ chính xác trên 90% được trình bày trong phần 2.3.
Huấn luyện trên Matlab
2.2.1 Chuẩn bị cơ sở dữ liệu
Cơ sở dữ liệu MNIST là một tập dữ liệu chữ số viết tay được thu thập từ Internet, bao gồm 60.000 mẫu cho tập huấn luyện và 10.000 mẫu cho tập kiểm tra Mỗi hình ảnh trong tập dữ liệu có kích thước chuẩn 28x28 pixel, được định dạng màu xám, với mỗi chữ số được căn giữa trong ảnh.
Cơ sở dữ liệu MNIST được hình thành từ Special Database 3 (SD-3) và Special Database 1 (SD-1) của tổ chức NIST, chứa các hình ảnh nhị phân của chữ số viết tay Ban đầu, SD-3 được sử dụng làm tập huấn luyện và SD-1 làm tập kiểm tra Tuy nhiên, SD-3 có độ chính xác cao hơn do được thu thập từ nhân viên công ty, trong khi SD-1 từ học sinh phổ thông Do đó, NIST đã kết hợp hai cơ sở dữ liệu này, với tập huấn luyện gồm 30,000 mẫu từ mỗi SD-3 và SD-1, và tập kiểm tra cũng gồm 5,000 mẫu từ mỗi nguồn Tổng cộng, tập huấn luyện có 60,000 mẫu được thu thập từ khoảng 250 người viết, đảm bảo không có người nào viết cho cả hai tập.
20 download by : skknchat@gmail.com
Hình 2.10 Cơ sở dữ liệu MNIST
Tập huấn luyện trong cơ sở dữ liệu chữ số viết tay MNIST bao gồm 60,000 hình ảnh, với Hình 2.2 hiển thị 36 chữ số đầu tiên từ tập dữ liệu này.
2.2.2 Tiền xử lý huấn luyện
Mục tiêu của tiền xử lý huấn luyện là chuyển đổi 60,000 bức ảnh trong tập huấn luyện MNIST thành định dạng phù hợp cho Neural Network Quá trình này bao gồm nhiều bước quan trọng để đảm bảo dữ liệu đầu vào đạt tiêu chuẩn tối ưu cho việc huấn luyện mô hình.
Bước 1: Xếp ảnh từ ma trận 28x28 thành một vector 784x1.
Bước 2: Chia mỗi phần tử trong vector cho 255.
Bước 3: Mapminmax để chuẩn hóa.
Bước 4: Loại bỏ các hàng hằng số.
Ta cần có Bước 1 là để đưa ảnh từ một ma trận vuông thành một vector, phù hợp với đầu vào tại lớp đầu vào của Neural Network.
Ảnh xám 8 bit có giá trị điểm ảnh ban đầu là các số nguyên từ 0 đến 255 Sau khi thực hiện bước 2, giá trị điểm ảnh chuyển thành các số thực trong khoảng từ 0 đến 1.
Nếu không chuẩn hóa, giá trị các tham số weight và bias sau quá trình huấn luyện sẽ rất nhỏ, điều này gây khó khăn trong việc biểu diễn dữ liệu trên FPGA.
Tại Bước 3, mapminmax là việc biến đổi một vector X =[ x 1 , x 2 , …, x N ] thành vector Y = [ y 1 , y 2 , … , y N ] theo công thức sau: y i − y min x i −x min với i=1,2 , … , N (2.1) y max − y min x max −x min
Trong công thức (1.20), x max đại diện cho phần tử lớn nhất của tập hợp X, trong khi x min là phần tử nhỏ nhất Bằng cách chọn y max = 1 và y min = −1, các phần tử của Y sẽ được giới hạn trong khoảng từ -1 đến 1 Do đó, sau Bước 3, 60,000 vector ảnh huấn luyện sẽ được chuẩn hóa trong khoảng từ -1 đến 1.
Tại Bước 4, chúng ta kết hợp 60,000 vector thành một ma trận kích thước 784x60,000 và tiến hành loại bỏ các hàng có giá trị không thay đổi Các điểm nằm trên cùng một hàng của ma trận biểu thị cho các tọa độ giống nhau trên các ảnh; nếu chúng giống nhau, chúng không có giá trị phân biệt Quá trình này giúp loại bỏ dữ liệu không cần thiết cho việc nhận dạng, từ đó giảm kích thước của neural network Sau khi loại bỏ các hàng hằng số, ma trận được giảm xuống còn 717x60,000, cho thấy chỉ có 717 điểm ảnh có tác dụng nhận dạng trong tổng số 784 điểm ảnh.
Kết quả khi thực hiện 4 bước trên là:
- Ma trận I cỡ 717x60000, mỗi cột là một đầu vào của neural network.
- Vector C lưu số thứ tự các hàng bị loại bỏ tại bước loại bỏ các hàng hằng số.
Ma trận I sẽ được dùng cho việc huấn luyện Neural Network, còn vector C sẽ được dùng cho quá trình tiền xử lý ảnh khi kiểm tra.
Mục tiêu của việc huấn luyện Mạng Nơ-ron là tối ưu hóa các tham số trọng số và độ thiên (weight và bias) để cải thiện khả năng nhận dạng Quá trình huấn luyện được thực hiện trên Matlab và có thể chia thành các bước cụ thể.
Bước 1: Tạo đầu vào và kỳ vọng cho Neural Network.
Bước 2: Cấu hình Neural Network.
Bước 3: Phân chia đầu vào.
Bước 1 của quá trình huấn luyện Neural Network bắt đầu với ma trận I kích thước 717x60000, được tạo ra từ bước tiền xử lý Mỗi cột trong ma trận này tương ứng với một hình ảnh trong tập huấn luyện, với nhãn số đã được xác định trước.
Dựa trên thông tin từ hình ảnh, chúng ta thực hiện mã hóa giám sát viên theo phương pháp one-hot, như trình bày trong Bảng 2.1 Kết quả là, với 60,000 đầu vào, chúng ta sẽ có 60,000 vector mã hóa one-hot, mỗi vector có kích thước 10x1.
Bảng 2.1 Mã hóa giám sát viên theo chữ số
Chữ Giám sát viên số [10:1]
Tại Bước 2, chúng ta tiến hành cấu hình Neural Network theo mô hình 3 lớp đã nêu trong phần 1.2 Các tham số như kích thước lớp, trọng số (weight), độ lệch (bias) và hàm kích hoạt sẽ được điều chỉnh để tối ưu hóa khả năng nhận dạng chữ số viết tay.
Lớp đầu vào là vector có 717 phần tử:
Lớp ẩn có đầu vào và đầu ra là các vector có 15 phần tử:
23 download by : skknchat@gmail.com
Hàm kích hoạt tại lớp ẩn được sử dụng là hàm tansig có công thức như (2.2):
1+e −2 z i Lớp đầu ra có đầu vào và đầu ra là các vector có 10 phần tử: z 3
Hàm kích hoạt tại lớp đầu ra là hàm softmax có công thức như (2.3): a i 3 =softmax ( z 3 i )= e z i 3
Hình 2.3 là minh họa cho hàm a=softmax (n) Cách tính như sau: a 1= e 0
Hình 2.11 Hàm softmax với vector 4 phần tử
24 download by : skknchat@gmail.com
Các weight và bias có kích thước như sau:
Ở Bước 3, chúng ta cần chia 60,000 vector đầu vào thành ba bộ: 70% cho bộ huấn luyện, 15% cho bộ xác nhận và 15% cho bộ kiểm tra Quá trình huấn luyện sẽ diễn ra trên bộ huấn luyện, sau đó kiểm tra sai lệch trên cả ba bộ Huấn luyện sẽ dừng lại khi sai lệch trên bộ xác nhận và bộ kiểm tra đạt mức ổn định.
25 download by : skknchat@gmail.com
Hình 2.12 Hiệu suất huấn luyện
Tại Bước 4, quá trình huấn luyện dựa trên thuật toán lan truyền ngược đã được trình bày ở phần 1.1 Sau khi huấn luyện, hiệu suất được thể hiện qua Hình 2.4, trong đó đường màu xanh lá cây biểu thị sai lệch của bộ xác nhận, đường màu đỏ là sai lệch của bộ kiểm tra, và đường màu xanh lam là sai lệch của bộ huấn luyện Huấn luyện dừng lại sau 153 epoch, với bộ tham số tốt nhất tại epoch thứ 147, do từ epoch 148 trở đi, mặc dù sai lệch của bộ huấn luyện giảm, nhưng sai lệch của bộ xác nhận và bộ kiểm tra không thay đổi, cho thấy mạng đã đạt được tính tổng quát Nếu tiếp tục huấn luyện, mạng có thể nhận dạng chính xác với bộ huấn luyện nhưng không đảm bảo tính tổng quát, dẫn đến hiện tượng overfitting Việc phân chia 60,000 ảnh huấn luyện thành 3 tập con nhằm mục đích tránh tình trạng overfitting này.
Kiểm tra trên Matlab
2.3.1 Chuẩn bị cơ sở dữ liệu
Cơ sở dữ liệu MNIST bao gồm 60.000 ảnh huấn luyện và 10.000 ảnh kiểm tra, với 10.000 ảnh này được sử dụng để đánh giá Đặc biệt, không có người nào tham gia viết trong cả hai tập, đảm bảo rằng kết quả kiểm tra là khách quan và đáng tin cậy.
26 download by : skknchat@gmail.com
2.3.2 Tiền xử lý kiểm tra
Công việc chính của việc kiểm tra là đưa các hình ảnh trong tập dữ liệu MNIST vào Neural Network và thống kê kết quả để xác định độ chính xác có đạt trên 90% hay không Trước khi đưa hình ảnh vào mạng, cần thực hiện quá trình tiền xử lý để chuyển đổi hình ảnh về định dạng phù hợp với đầu vào của mạng Quá trình tiền xử lý này bao gồm nhiều bước cần thiết để đảm bảo chất lượng dữ liệu.
Bước 1: Xếp ảnh từ ma trận 28x28 thành một vector 784x1.
Bước 2: Chia mỗi phần tử trong vector cho 255
Bước 4: Mapminmax để chuẩn hóa
Bước 5: Loại bỏ các hàng hằng số.
Trong Bước 1, Bước 2 và Bước 3, chúng ta thực hiện quy trình tương tự như trong tiền xử lý huấn luyện Kết quả cuối cùng là một vector T có kích thước 784x10000, tương ứng với 10,000 bức ảnh, mỗi bức ảnh có 28x28 = 784 điểm ảnh.
Tại Bước 4, chúng ta thực hiện một bước khác biệt so với quá trình tiền xử lý huấn luyện bằng cách loại bỏ các hàng hằng số trong ma trận I Sau khi thực hiện, chúng ta có một vector C để lưu trữ vị trí các hàng sẽ bị loại bỏ, nhằm tránh sự dư thừa dữ liệu.
Sau khi thực hiện 4 bước tiền xử lý, chúng ta thu được ma trận M có kích thước 717x10000, trong đó mỗi cột đại diện cho một ảnh kiểm tra, đồng thời loại bỏ các hàng của T có vị trí nằm trong C.
Trong bước kiểm tra, mỗi cột của ma trận M sẽ được đưa qua Neural Network đã được huấn luyện ở Chương 2 Quá trình này được thực hiện thông qua các phép nhân ma trận kết hợp với hàm kích hoạt theo các công thức (2.8), (2.9), (2.10), và (2.11).
A 3=softmax(Z 3) (2.11) trong đó K là vector đầu vào cỡ 717x1 Các tham số đã có được do huấn luyện là gồm: W2 là ma trận chứa các weight tại lớp ẩn, cỡ 15x717
B2 là ma trận chứa các bias tại lớp ẩn, cỡ 15x1
W3 là ma trận chứa các weight tại lớp đầu ra, cỡ 10x15
B3 là ma trận chứa các bias tại lớp đầu ra, cỡ 10x1.
27 download by : skknchat@gmail.com
Các công thức (2.8), (2.9), (2.10), (2.11) tương tự như các công thức (1.6), (1.7), (1.8), (1.9) trong nguyên lý hoạt động của Neural Network Đầu ra của Neural Network được xác định bởi hàm softmax, nhưng do hàm này không bao giờ đạt giá trị 1, nên kết quả kiểm tra không thể bằng với giám sát viên (mã hóa kiểu one-hot) Để đánh giá kết quả, chúng ta sử dụng hàm “hardmax” để làm tròn đầu ra của hàm softmax, trong đó phần tử lớn nhất trong 10 phần tử của vector sẽ được làm tròn thành 1, trong khi 9 phần tử còn lại sẽ được làm tròn về 0 Nếu kết quả sau khi làm tròn trùng với giám sát viên, thì đó được coi là nhận dạng đúng.
Kết quả kiểm tra trên 10.000 ảnh trong tập dữ liệu MNIST được trình bày trong Bảng 2.2, trong đó cột PASS thể hiện số lượng mẫu được nhận diện chính xác, còn cột FAIL thể hiện số lượng mẫu bị nhận diện sai.
28 download by : skknchat@gmail.com
Bảng 2.2 Kết quả kiểm tra Neural Network trên Matlab
Chữ SU PASS FAIL số M
Độ chính xác trung bình của mô hình đạt 94.08% khi lấy theo trung bình cộng của cột (% PASS) Điều này cho thấy việc huấn luyện đã thành công với độ chính xác trên 90% đối với tập kiểm tra MNIST Chúng tôi sẽ triển khai Neural Network này trên FPGA với mục tiêu duy trì độ chính xác trên 90% khi hoạt động trên nền tảng FPGA.
Kết luận chương
Mạng Neural Network đạt độ chính xác trên 90% với tập dữ liệu MNIST là mục tiêu quan trọng trong việc xây dựng mạng trên FPGA Để đảm bảo tính khả thi của việc triển khai trên FPGA, kích thước của mạng cũng đóng vai trò then chốt Qua quá trình nghiên cứu và thử nghiệm, mạng đã được điều chỉnh kích thước và huấn luyện lại nhiều lần để tìm ra kích thước tối ưu nhất mà vẫn duy trì được độ chính xác trên 90%.
29 download by : skknchat@gmail.com
THIẾT KẾ NEURAL NETWORK TRÊN FPGA
Yêu cầu kỹ thuật
3.1.1 Đầu vào và đầu ra
DUT có các chân I/O (Input/Output) như trên Hình 3.1.
Hình 3.13 Các chân I/O của DUT
Chức năng của từng chân được trình bày sơ lược trên Bảng 3.1 Thiết kế có 6 đầu vào và 2 đầu ra.
Bảng 3.3 Chức năng của các chân I/O
Bảng tín hiệu của hệ thống bao gồm các chân đầu vào và đầu ra như sau: chân clk (1 bit) dùng để đồng bộ hóa, chân rst_n (1 bit) cho phép reset bất đồng bộ mức thấp, chân start (1 bit) khởi động quá trình nhận dạng, chân we (1 bit) cho phép ghi vào bộ nhớ, chân wr_data (16 bit) chứa giá trị sẽ ghi vào bộ nhớ, và chân wr_addr (14 bit) xác định địa chỉ trên bộ nhớ để ghi giá trị của wr_data Đầu ra bao gồm chân digit (10 bit) hiển thị kết quả chữ số nhận dạng và chân t (1 bit) thông báo quá trình nhận dạng đã hoàn tất.
30 download by : skknchat@gmail.com
Khi tín hiệu rst_n giảm xuống mức 0, tất cả các đầu ra sẽ duy trì ở mức 0 trong suốt thời gian này Hệ thống được phân chia thành hai hoạt động chính: ghi dữ liệu vào bộ nhớ và nhận dạng thông tin.
Hệ thống lưu trữ một bức ảnh cần nhận dạng cùng với các tham số (weight và bias) thiết yếu cho quá trình nhận dạng Trước khi lưu trữ, bức ảnh cần được tiền xử lý theo quy trình đã nêu trong Chương 3, nhằm chuyển đổi thành một vector gồm 717 số Quá trình ghi vào bộ nhớ được minh họa trong Hình 3.2.
Hình 3.14 Hoạt động ghi vào bộ nhớ
Hoạt động ghi vào bộ nhớ chỉ xảy ra khi tín hiệu we bằng 1; nếu we bằng 0, bộ nhớ sẽ giữ nguyên giá trị hiện tại Tại sườn lên của tín hiệu clk, giá trị tại địa chỉ wr_addr sẽ được cập nhật bằng giá trị của wr_data tại thời điểm đó Các giá trị khởi tạo của bộ nhớ bao gồm A1_init, A2_init, A3_init, A4_init, A5_init và A6_init.
31 download by : skknchat@gmail.com
Hoạt động nhận dạng chỉ bắt đầu khi we = 0 và start = 1, sau đó trở về 0 Quá trình này kết thúc khi tín hiệu done = 1 trong một chu kỳ, lúc này giá trị digit sẽ là kết quả nhận dạng ảnh đã được lưu trữ Bảng 3.2 cung cấp thông tin về đầu ra bắt buộc tương ứng với mỗi chữ số Ví dụ, trong Bảng 3.2, chúng ta có thể thấy đầu ra cụ thể cho từng chữ số.
Kết quả nhận dạng "0000000100" tương ứng với chữ số 3 Nếu không có giá trị nào trong bảng, điều đó cho thấy thiết kế gặp lỗi Phương pháp mã hóa này tương tự như cách mã hóa giám sát viên đã được trình bày trong Chương 3 của Matlab.
Bảng 3.4 Chữ số biểu thị ứng với đầu ra
Kết quả Chữ số biểu digit thị
Trong quá trình nhận dạng, giá trị đầu ra digit có thể thay đổi Tuy nhiên, khi tín hiệu done = 1 và chưa bắt đầu quá trình nhận dạng tiếp theo, giá trị digit không được phép thay đổi.
Hoạt động nhận dạng được mô tả chi tiết qua Hình 3.3, trong đó t1 và t3 là thời điểm sườn lên của tín hiệu clk ghi nhận sự kiện start trở về 0, trong khi t2 và t4 là thời điểm ghi nhận sự kiện done lên 1 Khoảng thời gian từ t1 đến t2 và từ t3 đến t4 được xem là độ trễ xử lý (latency), thể hiện số chu kỳ clk mà quá trình nhận dạng tiêu tốn Trong khoảng thời gian từ t2 đến t3, giá trị của digit đại diện cho kết quả nhận dạng và không được phép thay đổi.
32 download by : skknchat@gmail.com
Hình 3.15 Hoạt động nhận dạng chữ số
Hệ thống cần đạt độ chính xác nhận dạng trên 90% cho tập kiểm tra MNIST, theo cách tính được mô tả trong Chương 3 Sau khi hoàn thành thiết kế, hệ thống sẽ được triển khai trên kit DE2 – 2C35F672C6N của Altera.
Kế hoạch kiểm chứng
Để đảm bảo việc kiểm chứng hiệu quả, cần phát triển kế hoạch kiểm chứng ngay sau khi nhận được yêu cầu kỹ thuật Dựa trên các yêu cầu kỹ thuật đã nêu, chúng ta sẽ xác định các đặc tính cần kiểm chứng và phương pháp tương ứng để thực hiện kiểm chứng các đặc tính này.
- Đặc tính 1: Khi rst_n = 0 thì đầu ra bằng 0, phương pháp kiểm chứng là quan sát sóng thủ công bằng mắt.
- Đặc tính 2: Khi we = 1 thì bộ nhớ tại địa chỉ wr_addr được ghi giá trị bằng wr_data.
- Đặc tính 3: Khi we = 0 thì bộ nhớ giữ nguyên giá trị hiện có.
- Đặc tính 4: Tất cả các mẫu trong tập kiểm tra của MNIST đều phải được kiểm tra với độ chính xác trên 90%.
Khi giá trị we bằng 0, quá trình nhận dạng sẽ được thực hiện Từ thời điểm hoàn thành nhận dạng (done = 1) cho đến khi giá trị start trở về 0, giá trị của digit sẽ không được thay đổi.
- Đặc tính 6: Thiết kế nạp được trên kit DE2 – EP2C35F672C6.
Các đặc tính 2, 3, 4, 5 được kiểm chứng theo một kịch bản gồm các bước sau:
Bước đầu tiên là ghi lại giá trị của các điểm ảnh từ tất cả các ảnh trong tập kiểm tra của MNIST vào các file text, tạo thành một tập hợp các file text.
Bước 2: Lấy file text đầu tiên trong tập hợp làm file text hiện tại.
33 download by : skknchat@gmail.com
Bước 4: Ghi các giá trị của file text hiện tại vào bộ nhớ (coi như ghi ảnh cần nhận dạng vào bộ nhớ).
Bước 5: Tiến hành hoạt động nhận dạng.
Nếu file text hiện tại là file cuối cùng, quá trình sẽ dừng lại Ngược lại, nếu chưa phải là file cuối, hãy lấy file text tiếp theo làm file hiện tại và quay lại Bước 3.
Kịch bản trên sẽ tạo ra một vòng lặp để duyệt qua tất cả các mẫu trong tập kiểm tra MNIST, ghi lại kết quả nhận dạng chữ số Chúng ta sẽ thống kê xem độ chính xác có đạt trên 90% hay không để kiểm tra các đặc tính 2, 3 và 4 Nếu độ chính xác vượt quá 90%, điều này chứng tỏ đặc tính 2 đúng, vì nếu ghi sai vào bộ nhớ, nhận dạng cũng sẽ sai, dẫn đến độ chính xác không thể cao Tương tự, đặc tính 3 cũng đúng, vì nếu bộ nhớ thay đổi trong quá trình nhận dạng, kết quả sẽ không chính xác, không thể đạt trên 90%.
Chúng tôi đã hoàn thành việc kiểm tra tất cả các mẫu trong tập dữ liệu MNIST, đảm bảo tính chính xác của quá trình Đặc tính 1 đã được quan sát một cách thủ công tại Bước 2 Đồng thời, đặc tính 5 được kiểm tra tại mỗi cạnh lên của tín hiệu clk giữa các lần hoàn thành và bắt đầu quá trình nhận dạng tiếp theo.
Trễ xử lý được xác định tại Bước 5 của quá trình nhận dạng Để kiểm tra Đặc tính 6, cần biên dịch mã nguồn RTL bằng phần mềm Quartus của Altera với thiết bị đích là kit DE2 – EP2C35F672C6 Nếu biên dịch thành công, điều này chứng tỏ Đặc tính 6 được thỏa mãn; ngược lại, nếu biên dịch thất bại, Đặc tính 6 không được thỏa mãn.
Công cụ phục vụ cho việc kiểm chứng thiết kế là phần mềm QuestaSim của hãng Synopsys trên hệ điều hành Centos.
Thiết kế RTL
Khối DUT là module cao nhất trong thiết kế RTL có khả năng tổng hợp Dựa vào thuật toán được triển khai trên Matlab và các yêu cầu kỹ thuật, DUT được chia thành hai module con như thể hiện trong Hình 3.4.
34 download by : skknchat@gmail.com
Khối DUT bao gồm 2 khối con là ann và single_port_ram_with init.
Khối single_port_ram_with init là bộ nhớ RAM lưu trữ giá trị các điểm ảnh của một bức ảnh cùng với các tham số cần thiết để nhận diện bức ảnh đó Chức năng của từng dải địa chỉ trong RAM được trình bày rõ ràng trong Bảng 3.3.
Bảng 3.5 Ý nghĩa các dải địa chỉ trong ram Địa chỉ
Các giá trị W2, B2, W3, và B3 được khởi tạo sẵn trong RAM với vai trò là các giá trị mặc định Trong khi đó, K đại diện cho giá trị của các điểm ảnh trong ảnh sau khi đã trải qua quá trình tiền xử lý.
Bảng 3.6 Các chân I/O của single_port_ram_with_init
Châ I/O Độ rộng Ý nghĩa n (bit) clk Input 1 Xung clock để đồng bộ we Input 1 Quyết định ghi vào hay đọc ra tại địa chỉ addr
35 download by : skknchat@gmail.com addr Input 14 Địa chỉ ghi vào hoặc đọc ra data Input 16 Dữ liệu sẽ ghi vào q Outpu 16 Dữ liệu sẽ đọc ra t
Theo Bảng 3.4, chân we sẽ chỉ thực hiện ghi hoặc đọc tại địa chỉ addr tùy thuộc vào giá trị của we Cụ thể, nếu we = 1 thì thực hiện ghi dữ liệu, còn nếu we = 0 thì thực hiện đọc dữ liệu, tất cả đều được đồng bộ theo xung clk như thể hiện trong Hình 3.5.
Hình 3.17 Ghi vào và đọc ra với single_port_ram_with_ini t
Single_port_ram_with_init tích hợp cả chức năng ghi và đọc, cho phép người dùng ghi dữ liệu vào bộ nhớ theo yêu cầu kỹ thuật và tải ảnh từ RAM vào khối ANN để thực hiện nhận dạng Bộ mux được sử dụng để chọn địa chỉ phù hợp cho quá trình ghi hoặc đọc; khi we = 1, địa chỉ của single_port_ram_with_init sẽ tương ứng với wr_addr để ghi dữ liệu, còn khi we = 0, địa chỉ sẽ lấy từ addr của ANN để đọc các điểm ảnh cần thiết cho quá trình nhận dạng.
Khối ann làm nhiệm vụ nhận dạng, có các chân I/O như Bảng 3.5.
Bảng 3.7 Các chân I/O của ann
Châ I/O bao gồm các tín hiệu như clk, rst_n, start, q, addr, và t digit Tín hiệu clk là xung clock đồng bộ, rst_n là reset bất đồng bộ mức thấp, và start là tín hiệu bắt đầu hoạt động nhận dạng Giá trị của một điểm ảnh cần đọc được thể hiện qua tín hiệu q với độ rộng 16 bit Địa chỉ của điểm ảnh cần đọc được xuất ra qua tín hiệu addr, trong khi kết quả chữ số nhận dạng được cung cấp qua tín hiệu t digit.
36 download by : skknchat@gmail.com t done Outpu 1 Báo hiệu hoạt động nhận dạng kết t thúc
Khi we = 0, khối ann sẽ điều chỉnh addr để lấy giá trị điểm ảnh cần thiết qua q để xử lý.
3.3.2.1 Tổng quát về khối ann
Khối ann được thiết kế theo mô hình FSMD, với sơ đồ khối thể hiện trong Hình 3.6 và Hình 3.7 Trong đó, khối ann_fsm đảm nhận vai trò của control path, trong khi khối ann_dp thực hiện chức năng của data path Theo nguyên lý FSMD đã trình bày, control path và data path giao tiếp thông qua các tín hiệu control signal và internal status Hình 3.7 minh họa khối ann_dp, mặc dù không hiển thị chi tiết, nhưng chúng ta có thể mặc định rằng các khối đều có đầu vào là rst_n và clk.
37 download by : skknchat@gmail.com
38 download by : skknchat@gmail.com
39 download by : skknchat@gmail.com
Trong Hình 3.6, chân q lấy số từ single_port_ram_with_init, trong khi chân addr xác định địa chỉ cần lấy số Dữ liệu di chuyển từ q đến digit qua khối ann, và khối addr_blk tính toán low_addr và high_addr tại mỗi thời điểm Khối mem_ctl điều chỉnh addr trong khoảng từ low_addr đến high_addr để đọc số liệu từ single_port_ram_with_init Dữ liệu từ single_port_ram_with_init được truyền từ q đến rd_data, tiếp tục đến các khối khác để tính toán Mỗi lần đọc tối đa 50 số, do đó low_addr và high_addr chênh nhau 50 đơn vị, với độ rộng rd_data là 800 bit (16 x 50).
Về mặt toán học, khối ann sẽ làm hoạt động nhận dạng bằng việc thực hiện các phép toán sau đây:
Trong công thức (3.1), phép nhân giữa ma trận W2 (cỡ 15 x 717) và K (cỡ 717 x 1) là một phép toán phức tạp do kích thước lớn của hai ma trận Để tiết kiệm tài nguyên, cần chia nhỏ ma trận và thực hiện phép nhân hai vector có kích thước 50 x 1 trước, sau đó cộng lại theo công thức (3.5).
40 download by : skknchat@gmail.com
Để thực hiện phép tính nhân W2 với K, ta đọc 50 số từ single_port_ram_with_init để lưu vào thanh ghi data_reg_blk_1_1, sau đó đọc 50 số tiếp theo của K và lưu vào data_reg_blk_1_2 Khối mul_vec sẽ nhân hai vector này và lưu kết quả vào product, trong khi khối add_float_acc sẽ cộng dồn các product Với K có độ dài 717, khối mul_vec và khối add_float_acc sẽ hoạt động tổng cộng [717 50] + 1 lần, và kết quả sum_acc sẽ được lưu vào data_reg_blk_2 Vì W2 có 15 hàng, sau khi thực hiện 15 lần đọc và nhân, kết quả cuối cùng là 15 số được lưu trong thanh ghi data_reg_blk_2, với mỗi số có độ rộng 16 bit.
After completing the W2 operation with K, we use the add_float_parallel block to sum the resulting vector with B2 The add_float_parallel block performs parallel addition of corresponding elements from two vectors The B2 vector is retrieved from the single_port_ram_with_init, and since rd_data stores 50 numbers, we utilize the cut_bit block to extract 15 numbers for input into the add_float_parallel.
Kết quả từ công thức (3.1) được lưu trữ trong thanh ghi vector_sum, kết nối với khối tansig để thực hiện hàm tansig Khối tansig tính toán giá trị tansig cho từng phần tử của ma trận một cách đồng thời Phương pháp này tuyến tính hóa hàm tansig, mặc dù đồ thị của hàm tansig là một đường cong, nhưng có thể được xấp xỉ bằng một đường gấp khúc như mô tả trong công thức (3.6).
41 download by : skknchat@gmail.com y = tansig (x )= 2 −
0.59895 x+ 0.16264(nếu 0.5 ≤ x < 1) 0.28711 x+ 0.47449(nếu 1 ≤ x