mo hinh ai

Mô hình mạng thần kinh của chúng tôi sẽ bao gồm một chồng các lớp tuyến tính. Để xác định một mô hình như vậy, chúng ta gọi hàm 

Sequential – model = Sequential()

Lp đầu vào

Chúng tôi xác định lớp đầu vào, là lớp đầu tiên trong mạng của chúng tôi bằng cách sử dụng câu lệnh chương trình sau –

model.add(Dense(512, input_shape=(784,)))

Điều này tạo ra một lớp có 512 nút (nơ-ron) với 784 nút đầu vào. Điều này được mô tả trong hình dưới đây

mo hinh ai

Lưu ý rằng tất cả các nút đầu vào được kết nối đầy đủ với Lớp 1, nghĩa là mỗi nút đầu vào được kết nối với tất cả 512 nút của Lớp 1.

Tiếp theo, chúng ta cần thêm chức năng kích hoạt cho đầu ra của Lớp 1. Chúng ta sẽ sử dụng ReLU để kích hoạt. Chức năng kích hoạt được thêm bằng cách sử dụng câu lệnh chương trình sau – model.add(Activation(‘relu’))

Tiếp theo, chúng tôi thêm Dropout 20% bằng cách sử dụng câu lệnh bên dưới. Dropout là một kỹ thuật được sử dụng để ngăn không cho mô hình khớp quá mức.

model.add(Dropout(0.2))

Tại thời điểm này, lớp đầu vào của chúng tôi được xác định đầy đủ. Tiếp theo, chúng ta sẽ thêm một lớp ẩn.

Lp n

Lớp ẩn của chúng tôi sẽ bao gồm 512 nút. Đầu vào của lớp ẩn đến từ lớp đầu vào đã xác định trước đó của chúng tôi. Tất cả các nút được kết nối đầy đủ như trong trường hợp trước đó. Đầu ra của lớp ẩn sẽ chuyển đến lớp tiếp theo trong mạng, lớp này sẽ là lớp cuối cùng và lớp đầu ra của chúng tôi. Chúng tôi sẽ sử dụng kích hoạt ReLU tương tự như đối với lớp trước đó và tỷ lệ bỏ học là 20%. Mã để thêm lớp này được đưa ra ở đây –

model.add(Dense(512))

model.add(Activation('relu'))

model.add(Dropout(0.2))

Mạng ở giai đoạn này có thể được hình dung như sau

trí tuệ nhân tạo

Tiếp theo, chúng tôi sẽ thêm lớp cuối cùng vào mạng của mình, đây là lớp đầu ra. Lưu ý rằng bạn có thể thêm bất kỳ số lớp ẩn nào bằng cách sử dụng mã tương tự như mã mà bạn đã sử dụng ở đây. Thêm nhiều lớp hơn sẽ làm cho mạng trở nên phức tạp để đào tạo; tuy nhiên, mang lại lợi thế rõ ràng về kết quả tốt hơn trong nhiều trường hợp mặc dù không phải tất cả.

Lp đầu ra

Lớp đầu ra chỉ bao gồm 10 nút vì chúng tôi muốn phân loại các hình ảnh đã cho thành 10 chữ số riêng biệt. Chúng tôi thêm lớp này, sử dụng câu lệnh sau –

model.add(Dense(10))

Vì chúng tôi muốn phân loại đầu ra thành 10 đơn vị riêng biệt, chúng tôi sử dụng kích hoạt softmax. Trong trường hợp của ReLU, đầu ra là nhị phân. Chúng tôi thêm kích hoạt bằng cách sử dụng câu lệnh sau –

model.add(Activation(‘softmax’))

Tại thời điểm này, mạng của chúng ta có thể được hiển thị như trong sơ đồ bên dưới

mô hình AI

Tại thời điểm này, mô hình mạng của chúng tôi đã được xác định đầy đủ trong phần mềm. Chạy ô mã và nếu không có lỗi, bạn sẽ nhận được thông báo xác nhận trên màn hình như trong ảnh

Deep Learning – Biên dịch mô hình

Quá trình biên dịch được thực hiện bằng một lệnh gọi phương thức duy nhất được gọi là biên dịch .
model.compile(loss=’categorical_crossentropy’, metrics=[‘accuracy’], optimizer=’adam’)
Phương thức biên dịch yêu cầu một số tham số. Tham số mất mát được chỉ định để có loại ‘categorical_crossentropy’ . Tham số số liệu được đặt thành ‘độ chính xác’ và cuối cùng chúng tôi sử dụng trình tối ưu hóa adam để huấn luyện mạng. Đầu ra ở giai đoạn này được hiển thị bên dưới

tham số trí tuệ nhân tạo

Bây giờ, chúng tôi đã sẵn sàng cung cấp dữ liệu cho mạng của mình.

Đang ti d liu

Như đã nói trước đó, chúng tôi sẽ sử dụng bộ dữ liệu mnist do Keras cung cấp. Khi chúng tôi tải dữ liệu vào hệ thống của mình, chúng tôi sẽ chia dữ liệu đó thành dữ liệu huấn luyện và kiểm tra. Dữ liệu được tải bằng cách gọi phương thức load_data như sau –

(X_train, y_train), (X_test, y_test) = mnist.load_data()

Đầu ra ở giai đoạn này trông giống như sau

tham số AI

Bây giờ, chúng ta sẽ tìm hiểu cấu trúc của tập dữ liệu đã tải. Dữ liệu được cung cấp cho chúng tôi là các hình ảnh đồ họa có kích thước 28 x 28 pixel, mỗi hình ảnh chứa một chữ số duy nhất từ ​​0 đến 9. Chúng tôi sẽ hiển thị mười hình ảnh đầu tiên trên bảng điều khiển. Mã để làm như vậy được đưa ra dưới đây

# printing first 10 images
for i in range(10):

plot.subplot(3,5,i+1)
plot.tight_layout()
plot.imshow(X_train[i], cmap='gray', interpolation='none')
plot.title("Digit: {}".format(y_train[i]))
plot.xticks([])
plot.yticks([])

Trong một vòng lặp lặp gồm 10 lần đếm, chúng tôi tạo một ô con trên mỗi lần lặp và hiển thị hình ảnh từ vectơ X_train trong đó. Chúng tôi đặt tiêu đề cho mỗi hình ảnh từ vectơ y_train tương ứng . Lưu ý rằng vectơ y_train chứa các giá trị thực cho hình ảnh tương ứng trong vectơ X_train . Chúng tôi loại bỏ các đánh dấu trục x và y bằng cách gọi hai phương thức xticks và yticks với đối số null. Khi bạn chạy mã, bạn sẽ thấy đầu ra sau –

gọi hàm trí tuệ nhân tạo

Xem thêm : Deep Learning – Chuẩn bị dữ liệu

Để lại một bình luận