Matlab thiết lập môi trường python

Keras là một thư viện Python mã nguồn mở miễn phí mạnh mẽ và dễ sử dụng để phát triển và đánh giá các mô hình học sâu

Nó là một phần của thư viện TensorFlow và cho phép bạn xác định cũng như huấn luyện các mô hình mạng thần kinh chỉ trong một vài dòng mã

Trong hướng dẫn này, bạn sẽ khám phá cách tạo mô hình mạng thần kinh học sâu đầu tiên của mình bằng Python bằng Keras

Bắt đầu dự án của bạn với cuốn sách mới của tôi Học sâu với Python, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python cho tất cả các ví dụ

Bắt đầu nào

  • Cập nhật tháng 2/2017. Cập nhật ví dụ dự đoán, do đó, làm tròn hoạt động trong Python 2 và 3
  • Cập nhật tháng 3/2017. Ví dụ cập nhật cho các phiên bản mới nhất của Keras và TensorFlow
  • Cập nhật tháng 3/2018. Đã thêm liên kết thay thế để tải xuống tập dữ liệu
  • Cập nhật tháng 7/2019. Mở rộng và thêm nhiều tài nguyên hữu ích
  • Cập nhật tháng 9/2019. Đã cập nhật cho Keras v2. 2. 5 API
  • Cập nhật tháng 10/2019. Đã cập nhật cho Keras v2. 3. 0 API và TensorFlow v2. 0. 0
  • Cập nhật tháng 8/2020. Đã cập nhật cho Keras v2. 4. 3 và TensorFlow v2. 3
  • Cập nhật tháng 10/2021. Cú pháp Predict_class không dùng nữa
  • Cập nhật tháng 6/2022. Đã cập nhật lên cú pháp TensorFlow hiện đại

Matlab thiết lập môi trường python

Từng bước phát triển mạng nơ-ron đầu tiên của bạn bằng Python với Keras
Ảnh của Phil Whitehouse, bảo lưu một số quyền.

Tổng quan về hướng dẫn Keras

Không yêu cầu nhiều mã, nhưng chúng tôi sẽ xem xét từ từ để bạn biết cách tạo các mô hình của riêng mình trong tương lai

Các bước bạn sẽ học trong hướng dẫn này như sau

  1. Tải dữ liệu
  2. Xác định mô hình máy ảnh
  3. Biên dịch mô hình máy ảnh
  4. Fit Keras Model
  5. Đánh giá mô hình Keras
  6. Buộc tất cả lại với nhau
  7. Dự đoán

Hướng dẫn Keras này đưa ra một số giả định. Bạn sẽ cần phải có

  1. Đã cài đặt và định cấu hình Python 2 hoặc 3
  2. Đã cài đặt và định cấu hình SciPy (bao gồm cả NumPy)
  3. Đã cài đặt và định cấu hình máy ảnh và phụ trợ (Theano hoặc TensorFlow)

Nếu bạn cần trợ giúp về môi trường của mình, hãy xem hướng dẫn

  • Cách thiết lập môi trường Python cho Deep Learning

Tạo một tệp mới có tên là keras_first_network. py và nhập hoặc sao chép và dán mã vào tệp khi bạn thực hiện

Cần trợ giúp về Deep Learning trong Python?

Tham gia khóa học email 2 tuần miễn phí của tôi và khám phá MLP, CNN và LSTM (có mã)

Nhấp để đăng ký ngay và cũng nhận được phiên bản PDF Ebook miễn phí của khóa học

Bắt đầu khóa học nhỏ MIỄN PHÍ của bạn ngay bây giờ

1. Tải dữ liệu

Bước đầu tiên là xác định các hàm và lớp bạn định sử dụng trong hướng dẫn này

Bạn sẽ sử dụng thư viện NumPy để tải tập dữ liệu của mình và hai lớp từ thư viện Keras để xác định mô hình của bạn

Yêu cầu nhập khẩu được liệt kê dưới đây

1

2

3

4

5

# mạng thần kinh đầu tiên với hướng dẫn máy ảnh

từ numpy nhập loadtxt

từ tensorflow. máy ảnh. mô hình nhập Tuần tự

từ tensorflow. máy ảnh. lớp nhập Mật độ

.. .

Bây giờ bạn có thể tải tập dữ liệu của chúng tôi

Trong hướng dẫn Keras này, bạn sẽ sử dụng bộ dữ liệu khởi phát bệnh tiểu đường của người da đỏ Pima. Đây là bộ dữ liệu máy học tiêu chuẩn từ kho lưu trữ Máy học UCI. Nó mô tả dữ liệu hồ sơ y tế của bệnh nhân đối với người da đỏ Pima và liệu họ có mắc bệnh tiểu đường trong vòng năm năm hay không

Như vậy, đây là một vấn đề phân loại nhị phân (khởi phát bệnh tiểu đường là 1 hoặc không phải là 0). Tất cả các biến đầu vào mô tả từng bệnh nhân là số. Điều này giúp dễ dàng sử dụng trực tiếp với các mạng thần kinh mong đợi các giá trị đầu vào và đầu ra bằng số và là lựa chọn lý tưởng cho mạng thần kinh đầu tiên của chúng tôi trong Keras

Bộ dữ liệu có sẵn ở đây

  • Tệp CSV bộ dữ liệu (pima-indians-diabetes. csv)
  • Chi tiết tập dữ liệu

Tải xuống tập dữ liệu và đặt nó vào thư mục làm việc cục bộ của bạn, cùng vị trí với tệp Python của bạn

Lưu nó với tên tệp

1

pima-indians-diabetes. csv

Hãy xem bên trong tập tin;

1

2

3

4

5

6

6,148,72,35,0,33. 6,0. 627,50,1

1,85,66,29,0,26. 6,0. 351,31,0

8,183,64,0,0,23. 3,0. 672,32,1

1,89,66,23,94,28. 1,0. 167,21,0

0,137,40,35,168,43. 1,2. 288,33,1

...

Bây giờ bạn có thể tải tệp dưới dạng ma trận số bằng cách sử dụng hàm NumPy loadtxt()

Có tám biến đầu vào và một biến đầu ra (cột cuối cùng). Bạn sẽ học một mô hình để ánh xạ các hàng của biến đầu vào (X) thành biến đầu ra (y), thường được tóm tắt là y = f(X)

Các biến có thể được tóm tắt như sau

Biến đầu vào (X)

  1. Số lần mang thai
  2. Nồng độ glucose huyết tương sau 2 giờ trong xét nghiệm dung nạp glucose đường uống
  3. Huyết áp tâm trương (mm Hg)
  4. Độ dày nếp da cơ tam đầu (mm)
  5. Insulin huyết thanh 2 giờ (mu U/ml)
  6. Chỉ số khối cơ thể (cân nặng tính bằng kg/(chiều cao tính bằng m)^2)
  7. chức năng phả hệ bệnh tiểu đường
  8. Tuổi)

Biến đầu ra (y)

  1. Biến lớp (0 hoặc 1)

Khi tệp CSV được tải vào bộ nhớ, bạn có thể chia các cột dữ liệu thành các biến đầu vào và đầu ra

Dữ liệu sẽ được lưu trữ trong một mảng 2D trong đó chiều thứ nhất là hàng và chiều thứ hai là cột, e. g. , [những hàng, những cột]

Bạn có thể chia mảng thành hai mảng bằng cách chọn tập hợp con của các cột bằng cách sử dụng toán tử lát cắt NumPy tiêu chuẩn hoặc “. ”. Bạn có thể chọn tám cột đầu tiên từ chỉ mục 0 đến chỉ mục 7 thông qua lát cắt 0. 8. Sau đó chúng ta có thể chọn cột đầu ra (biến thứ 9) thông qua chỉ số 8

1

2

3

4

5

6

7

.. .

# tải tập dữ liệu

tập dữ liệu = loadtxt('pima-indians- . csv', dấu phân cách=',')

# chia thành các biến đầu vào (X) và đầu ra (y)

X = tập dữ liệu[. ,0. 8]

y = tập dữ liệu[. ,8]

.. .

Bây giờ bạn đã sẵn sàng để xác định mô hình mạng thần kinh của mình

Ghi chú. Tập dữ liệu có chín cột và phạm vi 0. 8 sẽ chọn các cột từ 0 đến 7, dừng trước chỉ số 8. Nếu điều này là mới đối với bạn, thì bạn có thể tìm hiểu thêm về cách cắt mảng và phạm vi trong bài đăng này

  • Cách lập chỉ mục, cắt và định hình lại mảng NumPy cho Machine Learning trong Python

2. Xác định mô hình máy ảnh

Các mô hình trong Keras được định nghĩa là một chuỗi các lớp

Chúng tôi tạo một mô hình Tuần tự và thêm từng lớp một cho đến khi chúng tôi hài lòng với kiến ​​trúc mạng của mình

Điều đầu tiên cần làm đúng là đảm bảo lớp đầu vào có số lượng tính năng đầu vào chính xác. Điều này có thể được chỉ định khi tạo lớp đầu tiên với đối số input_shape và đặt nó thành (8,) để trình bày tám biến đầu vào dưới dạng vectơ

Làm thế nào để chúng ta biết số lượng lớp và loại của chúng?

Đây là một câu hỏi mẹo. Có những kinh nghiệm mà bạn có thể sử dụng và thường thì cấu trúc mạng tốt nhất được tìm thấy thông qua quá trình thử nghiệm và sai sót (tôi giải thích thêm về điều này tại đây). Nói chung, bạn cần một mạng đủ lớn để nắm bắt được cấu trúc của vấn đề

Trong ví dụ này, hãy sử dụng cấu trúc mạng được kết nối đầy đủ với ba lớp

Các lớp được kết nối đầy đủ được xác định bằng lớp Dense. Bạn có thể chỉ định số lượng nơ-ron hoặc nút trong lớp làm đối số đầu tiên và hàm kích hoạt bằng cách sử dụng đối số kích hoạt

Ngoài ra, bạn sẽ sử dụng chức năng kích hoạt đơn vị tuyến tính được chỉnh lưu được gọi là ReLU trên hai lớp đầu tiên và chức năng Sigmoid trong lớp đầu ra

Đã từng có trường hợp các hàm kích hoạt Sigmoid và Tanh được ưu tiên cho tất cả các lớp. Ngày nay, hiệu suất tốt hơn đạt được bằng cách sử dụng chức năng kích hoạt ReLU. Sử dụng sigmoid trên lớp đầu ra đảm bảo đầu ra mạng của bạn nằm trong khoảng từ 0 đến 1 và dễ dàng ánh xạ tới xác suất của lớp 1 hoặc bám vào phân loại cứng của một trong hai lớp với ngưỡng mặc định là 0. 5

Bạn có thể ghép tất cả lại với nhau bằng cách thêm từng lớp

  • Mô hình mong đợi các hàng dữ liệu có 8 biến (đối số input_shape=(8,))
  • Lớp ẩn đầu tiên có 12 nút và sử dụng chức năng kích hoạt relu
  • Lớp ẩn thứ hai có 8 nút và sử dụng chức năng kích hoạt relu
  • Lớp đầu ra có một nút và sử dụng chức năng kích hoạt sigmoid

1

2

3

4

5

6

7

.. .

# xác định mô hình máy ảnh

mô hình = Tuần tự()

mô hình. thêm(Dày đặc(12, input_shape=(8,), activation='relu'))

mô hình. thêm(Dày đặc(8, activation='relu'))

mô hình. thêm(Dày đặc(1, activation='sigmoid'))

.. .

Ghi chú. Điều khó hiểu nhất ở đây là hình dạng của đầu vào cho mô hình được xác định như một đối số trên lớp ẩn đầu tiên. Điều này có nghĩa là dòng mã bổ sung Lớp dày đặc đầu tiên đang thực hiện hai việc, xác định lớp đầu vào hoặc lớp hiển thị và lớp ẩn đầu tiên

3. Biên dịch mô hình máy ảnh

Bây giờ mô hình đã được xác định, bạn có thể biên dịch nó

Biên dịch mô hình sử dụng các thư viện số hiệu quả dưới vỏ bọc (cái gọi là phụ trợ) chẳng hạn như Theano hoặc TensorFlow. Chương trình phụ trợ tự động chọn cách tốt nhất để đại diện cho mạng để đào tạo và đưa ra dự đoán để chạy trên phần cứng của bạn, chẳng hạn như CPU, GPU hoặc thậm chí phân tán

Khi biên dịch phải chỉ định thêm một số thuộc tính cần thiết khi huấn luyện mạng. Hãy nhớ đào tạo một mạng có nghĩa là tìm tập trọng số tốt nhất để ánh xạ đầu vào thành đầu ra trong tập dữ liệu của bạn

Bạn phải chỉ định hàm mất mát sẽ sử dụng để đánh giá một tập hợp các trọng số, trình tối ưu hóa được sử dụng để tìm kiếm thông qua các trọng số khác nhau cho mạng và bất kỳ chỉ số tùy chọn nào bạn muốn thu thập và báo cáo trong quá trình đào tạo

Trong trường hợp này, hãy sử dụng entropy chéo làm đối số mất mát. Sự mất mát này là do sự cố phân loại nhị phân và được định nghĩa trong Keras là “binary_crossentropy“. Bạn có thể tìm hiểu thêm về cách chọn hàm mất mát dựa trên vấn đề của mình tại đây

  • Cách chọn các hàm mất mát khi đào tạo mạng lưới thần kinh học sâu

Chúng tôi sẽ định nghĩa trình tối ưu hóa là thuật toán giảm độ dốc ngẫu nhiên hiệu quả “adam“. Đây là phiên bản phổ biến của giảm dần độ dốc vì nó tự động điều chỉnh chính nó và cho kết quả tốt trong nhiều vấn đề. Để tìm hiểu thêm về phiên bản Adam của giảm dần độ dốc ngẫu nhiên, hãy xem bài đăng

  • Giới thiệu nhẹ nhàng về thuật toán tối ưu hóa Adam cho Deep Learning

Cuối cùng, vì đây là bài toán phân loại nên bạn sẽ thu thập và báo cáo độ chính xác của phân loại được xác định thông qua đối số số liệu

1

2

3

4

.. .

# biên dịch mô hình máy ảnh

mô hình. biên dịch(mất mát=', optimizer='adam', metrics=['accuracy'])

.. .

4. Fit Keras Model

Bạn đã xác định mô hình của mình và biên dịch nó để sẵn sàng cho việc tính toán hiệu quả

Bây giờ là lúc để thực hiện mô hình trên một số dữ liệu

Bạn có thể đào tạo hoặc điều chỉnh mô hình của mình trên dữ liệu đã tải bằng cách gọi hàm fit() trên mô hình

Đào tạo diễn ra trong các kỷ nguyên và mỗi kỷ nguyên được chia thành các đợt

  • kỷ nguyên. Một lượt đi qua tất cả các hàng trong tập dữ liệu huấn luyện
  • Lô hàng. Một hoặc nhiều mẫu được mô hình xem xét trong một kỷ nguyên trước khi trọng số được cập nhật

Một kỷ nguyên bao gồm một hoặc nhiều lô, dựa trên kích thước lô đã chọn và mô hình phù hợp với nhiều kỷ nguyên. Để biết thêm về sự khác biệt giữa kỷ nguyên và đợt, hãy xem bài đăng

  • Sự khác biệt giữa Batch và Epoch trong Mạng nơ-ron là gì?

Quá trình đào tạo sẽ chạy trong một số lượng kỷ nguyên cố định (lặp lại) thông qua tập dữ liệu mà bạn phải chỉ định bằng cách sử dụng đối số kỷ nguyên. Bạn cũng phải đặt số lượng hàng tập dữ liệu được xem xét trước khi trọng số mô hình được cập nhật trong mỗi kỷ nguyên, được gọi là kích thước lô và đặt bằng đối số batch_size

Sự cố này sẽ chạy trong một số lượng nhỏ kỷ nguyên (150) và sử dụng kích thước lô tương đối nhỏ là 10

Các cấu hình này có thể được chọn bằng thử nghiệm và sai sót. Bạn muốn đào tạo mô hình đủ để nó học cách ánh xạ tốt (hoặc đủ tốt) các hàng dữ liệu đầu vào tới phân loại đầu ra. Mô hình sẽ luôn có một số lỗi, nhưng số lượng lỗi sẽ giảm dần sau một thời điểm đối với một cấu hình mô hình nhất định. Điều này được gọi là hội tụ mô hình

1

2

3

4

.. .

# khớp mô hình máy ảnh trên tập dữ liệu

mô hình. phù hợp(X, y, epochs=150, batch_size=10)

.. .

Đây là nơi công việc diễn ra trên CPU hoặc GPU của bạn

Không yêu cầu GPU cho ví dụ này, nhưng nếu bạn quan tâm đến cách chạy các mô hình lớn trên phần cứng GPU với giá rẻ trên đám mây, hãy xem bài đăng này

  • Cách thiết lập GPU Amazon AWS EC2 để đào tạo các mô hình học sâu Keras

5. Đánh giá mô hình Keras

Bạn đã đào tạo mạng thần kinh của chúng tôi trên toàn bộ tập dữ liệu và bạn có thể đánh giá hiệu suất của mạng trên cùng một tập dữ liệu

Điều này sẽ chỉ cung cấp cho bạn ý tưởng về việc bạn đã lập mô hình tập dữ liệu tốt như thế nào (e. g. , đào tạo độ chính xác), nhưng không biết thuật toán có thể hoạt động tốt như thế nào trên dữ liệu mới. Điều này được thực hiện để đơn giản, nhưng lý tưởng nhất là bạn có thể tách dữ liệu của mình thành tập dữ liệu huấn luyện và thử nghiệm để huấn luyện và đánh giá mô hình của mình

Bạn có thể đánh giá mô hình của mình trên tập dữ liệu đào tạo bằng cách sử dụng hàm đánh giá () và chuyển cho nó cùng một đầu vào và đầu ra được sử dụng để đào tạo mô hình

Thao tác này sẽ tạo dự đoán cho từng cặp đầu vào và đầu ra, đồng thời thu thập điểm số, bao gồm cả tổn thất trung bình và bất kỳ số liệu nào bạn đã định cấu hình, chẳng hạn như độ chính xác

Hàm đánh giá () sẽ trả về một danh sách có hai giá trị. Đầu tiên sẽ là mất mô hình trên tập dữ liệu và thứ hai sẽ là độ chính xác của mô hình trên tập dữ liệu. Bạn chỉ quan tâm đến độ chính xác của báo cáo nên bỏ qua giá trị hao hụt

1

2

3

4

.. .

# đánh giá mô hình máy ảnh

_, độ chính xác = mô hình.đánh giá(X, y)

in('Độ chính xác. %. 2f' % (độ chính xác*100))

6. Buộc tất cả lại với nhau

Bạn vừa thấy cách bạn có thể dễ dàng tạo mô hình mạng thần kinh đầu tiên của mình trong Keras

Hãy liên kết tất cả lại với nhau thành một ví dụ mã hoàn chỉnh

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

# mạng thần kinh đầu tiên với hướng dẫn máy ảnh

từ numpy nhập loadtxt

từ tensorflow. máy ảnh. mô hình nhập Tuần tự

từ tensorflow. máy ảnh. lớp nhập Mật độ

# tải tập dữ liệu

tập dữ liệu = loadtxt('pima-indians- . csv', dấu phân cách=',')

# chia thành các biến đầu vào (X) và đầu ra (y)

X = tập dữ liệu[. ,0. 8]

y = tập dữ liệu[. ,8]

# xác định mô hình máy ảnh

mô hình = Tuần tự()

mô hình. thêm(Dày đặc(12, input_shape=(8,), activation='relu'))

mô hình. thêm(Dày đặc(8, activation='relu'))

mô hình. thêm(Dày đặc(1, activation='sigmoid'))

# biên dịch mô hình máy ảnh

mô hình. biên dịch(mất mát=', optimizer='adam', metrics=['accuracy'])

# khớp mô hình máy ảnh trên tập dữ liệu

mô hình. phù hợp(X, y, epochs=150, batch_size=10)

# đánh giá mô hình máy ảnh

_, độ chính xác = mô hình.đánh giá(X, y)

in('Độ chính xác. %. 2f' % (độ chính xác*100))

Bạn có thể sao chép tất cả mã vào tệp Python của mình và lưu dưới dạng “keras_first_network. py” trong cùng thư mục với tệp dữ liệu của bạn “pima-indians-diabetes. csv“. Sau đó, bạn có thể chạy tệp Python dưới dạng tập lệnh từ dòng lệnh của mình (dấu nhắc lệnh) như sau

1

python keras_first_network. py

Chạy ví dụ này, bạn sẽ thấy một thông báo cho mỗi trong số 150 kỷ nguyên, in ra độ mất mát và độ chính xác, tiếp theo là đánh giá cuối cùng của mô hình được đào tạo trên tập dữ liệu đào tạo

Mất khoảng 10 giây để thực thi trên máy trạm của tôi chạy trên CPU

Lý tưởng nhất là bạn muốn tổn thất về 0 và độ chính xác về 1. 0 (e. g. , 100%). Điều này là không thể đối với bất kỳ vấn đề nào ngoại trừ những vấn đề học máy tầm thường nhất. Thay vào đó, bạn sẽ luôn gặp một số lỗi trong mô hình của mình. Mục tiêu là chọn cấu hình mô hình và cấu hình đào tạo để đạt được tổn thất thấp nhất và độ chính xác cao nhất có thể cho một tập dữ liệu nhất định

1

2

3

4

5

6

7

8

9

10

11

12

...

768/768 [=================] - 0 giây 63us/bước - mất. 0. 4817 - acc. 0. 7708

Kỷ nguyên 147/150

768/768 [=================] - 0 giây 63us/bước - mất. 0. 4764 - acc. 0. 7747

Kỷ nguyên 148/150

768/768 [=================] - 0 giây 63us/bước - mất. 0. 4737 - acc. 0. 7682

Kỷ nguyên 149/150

768/768 [=================] - 0 giây 64us/bước - mất. 0. 4730 - acc. 0. 7747

Kỷ nguyên 150/150

768/768 [=================] - 0 giây 63us/bước - mất. 0. 4754 - acc. 0. 7799

768/768 [================] - 0 giây 38us/bước

Sự chính xác. 76. 56

Ghi chú. Nếu bạn thử chạy ví dụ này trong sổ ghi chép IPython hoặc Jupyter, bạn có thể gặp lỗi

Lý do là thanh tiến trình đầu ra trong quá trình đào tạo. Bạn có thể dễ dàng tắt chúng đi bằng cách đặt verbose=0 trong lệnh gọi hàm fit() và assessment();

1

2

3

4

5

6

.. .

# điều chỉnh mô hình máy ảnh trên tập dữ liệu mà không có thanh tiến trình

mô hình. phù hợp(X, y, epochs=150, batch_size=10, verbose=0)

# đánh giá mô hình máy ảnh

_, độ chính xác = mô hình.đánh giá(X, y, verbose=0)

.. .

Ghi chú. Kết quả của bạn có thể thay đổi do tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá hoặc sự khác biệt về độ chính xác của các con số. Cân nhắc chạy ví dụ một vài lần và so sánh kết quả trung bình

Bạn đạt được bao nhiêu điểm?
Đăng kết quả của bạn vào phần nhận xét bên dưới.

Mạng thần kinh là các thuật toán ngẫu nhiên, nghĩa là cùng một thuật toán trên cùng một dữ liệu có thể đào tạo một mô hình khác với kỹ năng khác nhau mỗi khi mã được chạy. Đây là một tính năng, không phải là một lỗi. Bạn có thể tìm hiểu thêm về điều này trong bài viết

  • Nắm bắt tính ngẫu nhiên trong học máy

Phương sai trong hiệu suất của mô hình có nghĩa là để có được giá trị gần đúng hợp lý về mức độ hoạt động của mô hình, bạn có thể cần phải điều chỉnh mô hình nhiều lần và tính điểm trung bình của các điểm chính xác. Để biết thêm về phương pháp đánh giá mạng lưới thần kinh này, hãy xem bài đăng

  • Cách đánh giá kỹ năng của các mô hình học sâu

Ví dụ: bên dưới là điểm chính xác từ việc chạy lại ví dụ năm lần

1

2

3

4

5

Sự chính xác. 75. 00

Sự chính xác. 77. 73

Sự chính xác. 77. 60

Sự chính xác. 78. 12

Sự chính xác. 76. 17

Bạn có thể thấy rằng tất cả các điểm chính xác là khoảng 77% và mức trung bình là 76. 924%

7. Dự đoán

Câu hỏi số một mà tôi được hỏi là

“Sau khi huấn luyện mô hình của mình, làm cách nào tôi có thể sử dụng mô hình đó để đưa ra dự đoán về dữ liệu mới?”

Câu hỏi tuyệt vời

Bạn có thể điều chỉnh ví dụ trên và sử dụng nó để tạo dự đoán trên tập dữ liệu huấn luyện, giả vờ rằng đó là tập dữ liệu mới mà bạn chưa từng thấy trước đây

Đưa ra dự đoán dễ dàng như gọi hàm predict() trên mô hình. Bạn đang sử dụng chức năng kích hoạt sigmoid trên lớp đầu ra, vì vậy các dự đoán sẽ là xác suất nằm trong khoảng từ 0 đến 1. Bạn có thể dễ dàng chuyển đổi chúng thành một dự đoán nhị phân chính xác cho nhiệm vụ phân loại này bằng cách làm tròn chúng

Ví dụ

1

2

3

4

5

.. .

# đưa ra dự đoán xác suất với mô hình

dự đoán = mô hình. dự đoán(X)

# vòng dự đoán

làm tròn = [làm tròn(x[0]) for x in predictions]

Ngoài ra, bạn có thể chuyển đổi xác suất thành 0 hoặc 1 để dự đoán trực tiếp các lớp sắc nét;

1

2

3

.. .

# đưa ra dự đoán lớp học với mô hình

dự đoán = (mô hình. dự đoán(X) > . 5 0.5). kiểu(int)

Ví dụ hoàn chỉnh bên dưới đưa ra dự đoán cho từng ví dụ trong tập dữ liệu, sau đó in dữ liệu đầu vào, lớp dự đoán và lớp dự kiến ​​cho năm ví dụ đầu tiên trong tập dữ liệu

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

# mạng thần kinh đầu tiên có máy ảnh đưa ra dự đoán

từ numpy nhập loadtxt

từ tensorflow. máy ảnh. mô hình nhập Tuần tự

từ tensorflow. máy ảnh. lớp nhập Mật độ

# tải tập dữ liệu

tập dữ liệu = loadtxt('pima-indians- . csv', dấu phân cách=',')

# chia thành các biến đầu vào (X) và đầu ra (y)

X = tập dữ liệu[. ,0. 8]

y = tập dữ liệu[. ,8]

# xác định mô hình máy ảnh

mô hình = Tuần tự()

mô hình. thêm(Dày đặc(12, input_shape=(8,), activation='relu'))

mô hình. thêm(Dày đặc(8, activation='relu'))

mô hình. thêm(Dày đặc(1, activation='sigmoid'))

# biên dịch mô hình máy ảnh

mô hình. biên dịch(mất mát=', optimizer='adam', metrics=['accuracy'])

# khớp mô hình máy ảnh trên tập dữ liệu

mô hình. phù hợp(X, y, epochs=150, batch_size=10, verbose=0)

# đưa ra dự đoán lớp học với mô hình

dự đoán = (mô hình. dự đoán(X) > . 5 0.5). kiểu(int)

# tóm tắt 5 trường hợp đầu tiên

cho i trong phạm vi(5):

in('%s => %d (dự kiến ​​%d)' % (X[i].tolist(), dự đoán[i], y[i]))

Chạy ví dụ không hiển thị thanh tiến trình như trước, vì đối số dài dòng đã được đặt thành 0

Sau khi mô hình phù hợp, các dự đoán được đưa ra cho tất cả các ví dụ trong tập dữ liệu và các hàng đầu vào cũng như giá trị lớp dự đoán cho năm ví dụ đầu tiên được in và so sánh với giá trị lớp dự kiến

Bạn có thể thấy rằng hầu hết các hàng đều được dự đoán chính xác. Trên thực tế, bạn có thể mong đợi khoảng 76. 9% số hàng được dự đoán chính xác dựa trên hiệu suất ước tính của mô hình trong phần trước

1

2

3

4

5

[6. 0, 148. 0, 72. 0, 35. 0, 0. 0, 33. 6, 0. 627, 50. 0] => 0 (dự kiến ​​1)

[1. 0, 85. 0, 66. 0, 29. 0, 0. 0, 26. 6, 0. 351, 31. 0] => 0 (dự kiến ​​là 0)

[số 8. 0, 183. 0, 64. 0, 0. 0, 0. 0, 23. 3, 0. 672, 32. 0] => 1 (dự kiến ​​1)

[1. 0, 89. 0, 66. 0, 23. 0, 94. 0, 28. 1, 0. 167, 21. 0] => 0 (dự kiến ​​là 0)

[0. 0, 137. 0, 40. 0, 35. 0, 168. 0, 43. 1, 2. 288, 33. 0] => 1 (dự kiến ​​1)

Nếu bạn muốn biết thêm về cách đưa ra dự đoán với các mô hình Keras, hãy xem bài đăng

  • Cách thực hiện dự đoán với Keras

Tóm tắt hướng dẫn Keras

Trong bài đăng này, bạn đã khám phá cách tạo mô hình mạng thần kinh đầu tiên của mình bằng thư viện Keras Python mạnh mẽ để học sâu

Cụ thể, bạn đã học sáu bước chính trong việc sử dụng Keras để từng bước tạo một mạng thần kinh hoặc mô hình học sâu, bao gồm

  1. Cách tải dữ liệu
  2. Cách xác định mạng thần kinh trong Keras
  3. Cách biên dịch mô hình Keras bằng chương trình phụ trợ số hiệu quả
  4. Cách đào tạo một mô hình trên dữ liệu
  5. Cách đánh giá một mô hình trên dữ liệu
  6. Cách đưa ra dự đoán với mô hình

Bạn có bất kỳ câu hỏi nào về Keras hoặc về hướng dẫn này không?
Hãy đặt câu hỏi của bạn trong nhận xét và tôi sẽ cố gắng hết sức để trả lời.

Tiện ích mở rộng hướng dẫn Keras

Tốt lắm, bạn đã phát triển thành công mạng thần kinh đầu tiên của mình bằng thư viện học sâu Keras trong Python